shod

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c1b88c43040b1ec262107b7cb7dd2b5c00d12a83
parent 730c44a6f4e88cdb7ee2eefb78c02cc182b63717
Author: seninha <lucas@seninha.org>
Date:   Tue,  7 Jun 2022 21:28:12 -0300

fix tabfocus and dockupdate

Diffstat:
MMakefile | 8+++++---
Mshod.c | 32++++++++++++++++++++++----------
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); } }