commit c1b88c43040b1ec262107b7cb7dd2b5c00d12a83
parent 730c44a6f4e88cdb7ee2eefb78c02cc182b63717
Author: seninha <lucas@seninha.org>
Date: Tue, 7 Jun 2022 21:28:12 -0300
fix tabfocus and dockupdate
Diffstat:
2 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/Makefile b/Makefile
@@ -15,8 +15,7 @@ LIBS += -L${LOCALLIB} -L${X11LIB} -lfontconfig -lXft -lX11 -lXinerama -lXrender
# files
PROGS = shod shodc
-SRCS = ${PROGS:=.c}
-OBJS = ${SRCS:.c=.o}
+SRCS = shod.c shodc.c config.h
all: ${PROGS}
@@ -31,6 +30,9 @@ shodc: shodc.o
.c.o:
${CC} ${INCS} ${CFLAGS} ${CPPFLAGS} -c $<
+tags: ${SRCS}
+ ctags ${SRCS}
+
install: all
mkdir -p ${DESTDIR}${PREFIX}/bin
mkdir -p ${DESTDIR}${MANPREFIX}/man1
@@ -44,6 +46,6 @@ uninstall:
rm -f ${DESTDIR}${MANPREFIX}/man1/shod.1
clean:
- -rm -f ${OBJS} ${PROGS} ${PROGS:=.core}
+ rm -f ${PROGS} ${PROGS:=.o} ${PROGS:=.core} tags
.PHONY: all install uninstall clean
diff --git a/shod.c b/shod.c
@@ -4088,15 +4088,13 @@ tabfocus(struct Tab *t, int gotodesk)
XRaiseWindow(dpy, t->frame);
if (c->isshaded) {
XSetInputFocus(dpy, c->frame, RevertToParent, CurrentTime);
- ewmhsetactivewindow(t->win);
} else if (t->ds != NULL) {
XRaiseWindow(dpy, t->ds->frame);
XSetInputFocus(dpy, t->ds->win, RevertToParent, CurrentTime);
- ewmhsetactivewindow(t->ds->win);
} else {
XSetInputFocus(dpy, t->win, RevertToParent, CurrentTime);
- ewmhsetactivewindow(t->win);
}
+ ewmhsetactivewindow(t->win);
if (t->isurgent)
tabclearurgency(t);
menumap(t);
@@ -4785,27 +4783,39 @@ dockupdate(void)
switch (config.dockgravity[0]) {
case 'N':
dapp->x = DOCKBORDER + size;
+ dapp->y = DOCKBORDER;
n = dapp->w / config.dockspace + (dapp->w % config.dockspace ? 1 : 0);
+ n *= config.dockspace;
+ dapp->x += max(0, (n - dapp->w) / 2);
+ dapp->y += max(0, (config.dockwidth - dapp->h) / 2);
break;
case 'S':
dapp->x = DOCKBORDER + size;
dapp->y = DOCKBORDER;
n = dapp->w / config.dockspace + (dapp->w % config.dockspace ? 1 : 0);
+ n *= config.dockspace;
+ dapp->x += max(0, (n - dapp->w) / 2);
+ dapp->y += max(0, (config.dockwidth - dapp->h) / 2);
break;
case 'W':
+ dapp->x = DOCKBORDER;
dapp->y = DOCKBORDER + size;
n = dapp->h / config.dockspace + (dapp->h % config.dockspace ? 1 : 0);
+ n *= config.dockspace;
+ dapp->x += max(0, (config.dockwidth - dapp->w) / 2);
+ dapp->y += max(0, (n - dapp->h) / 2);
break;
case 'E':
default:
dapp->y = DOCKBORDER + size;
dapp->x = DOCKBORDER;
n = dapp->h / config.dockspace + (dapp->h % config.dockspace ? 1 : 0);
+ n *= config.dockspace;
+ dapp->x += max(0, (config.dockwidth - dapp->w) / 2);
+ dapp->y += max(0, (n - dapp->h) / 2);
break;
}
- dapp->x += (config.dockspace - (dapp->w % config.dockspace)) % config.dockspace / 2;
- dapp->y += (config.dockspace - (dapp->h % config.dockspace)) % config.dockspace / 2;
- size += n * config.dockspace;
+ size += n;
}
if (size == 0) {
XUnmapWindow(dpy, dock.win);
@@ -4868,6 +4878,7 @@ dockupdate(void)
}
for (dapp = dock.head; dapp != NULL; dapp = dapp->next) {
XMoveWindow(dpy, dapp->win, dapp->x, dapp->y);
+ winnotify(dapp->win, dock.x + dapp->x, dock.y + dapp->y, dapp->w, dapp->h);
}
dockdecorate();
wins[0] = wm.layerwins[LAYER_DOCK];
@@ -5211,12 +5222,13 @@ manage(Window win, int x, int y, int w, int h, int ignoreunmap)
case TYPE_DESKTOP:
managedesktop(win);
break;
- case TYPE_DOCKAPP:
- managedockapp(win, w, h, wintype.dockpos, ignoreunmap);
- break;
case TYPE_DOCK:
managebar(win);
break;
+ case TYPE_DOCKAPP:
+ preparewin(win);
+ managedockapp(win, w, h, wintype.dockpos, ignoreunmap);
+ break;
case TYPE_NOTIFICATION:
preparewin(win);
managenotif(win, w, h);
@@ -6270,7 +6282,7 @@ xeventconfigurerequest(XEvent *e)
} else {
containermoveresize(res.c);
}
- } else if (res.c == NULL){
+ } else if (res.c == NULL && res.dapp == NULL){
XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
}
}