diff options
author | xAlpharax <42233094+xAlpharax@users.noreply.github.com> | 2023-08-17 04:27:28 +0300 |
---|---|---|
committer | xAlpharax <42233094+xAlpharax@users.noreply.github.com> | 2023-08-17 04:27:28 +0300 |
commit | 48d827bb16e57a06c951c08bcf98ca1c088da9eb (patch) | |
tree | 8a35a8236d66db6476f8437557881144463e82bb /dwm.c.orig | |
parent | 67f972f7426503cd4307ffe53868453d19777efa (diff) |
WinIcon Patch
Changes to be committed:
modified: config.def.h
modified: config.def.h.orig
modified: config.h
modified: config.mk
new file: config.mk.orig
modified: drw.c
modified: drw.c.orig
modified: drw.h
new file: drw.h.orig
modified: dwm.c
modified: dwm.c.orig
modified: patches_huge/dwm-winicon-6.3-v2.1.diff
Diffstat (limited to 'dwm.c.orig')
-rw-r--r-- | dwm.c.orig | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -60,7 +60,7 @@ /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ enum { SchemeNorm, SchemeSel }; /* color schemes */ -enum { NetSupported, NetWMName, NetWMState, NetWMCheck, +enum { NetSupported, NetWMName, NetWMIcon, NetWMState, NetWMCheck, NetWMFullscreen, NetWMSticky, NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ @@ -93,6 +93,7 @@ struct Client { int bw, oldbw; unsigned int tags; int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, issticky; + unsigned int icw, ich; Picture icon; Client *next; Client *snext; Monitor *mon; @@ -247,6 +248,7 @@ static int xerrorstart(Display *dpy, XErrorEvent *ee); static void zoom(const Arg *arg); /* variables */ +static Client *lastfocused = NULL; static const char broken[] = "broken"; static char stext[256]; static int screen; @@ -852,7 +854,11 @@ focus(Client *c) detachstack(c); attachstack(c); grabbuttons(c, 1); + /* set new focused border first to avoid flickering */ XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); + /* lastfocused may be us if another window was unmanaged */ + if (lastfocused && lastfocused != c) + XSetWindowBorder(dpy, lastfocused->win, scheme[SchemeNorm][ColBorder].pixel); setfocus(c); } else { XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); @@ -1996,7 +2002,7 @@ unfocus(Client *c, int setfocus) if (!c) return; grabbuttons(c, 0); - XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel); + lastfocused = c; if (setfocus) { XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); XDeleteProperty(dpy, root, netatom[NetActiveWindow]); @@ -2023,6 +2029,8 @@ unmanage(Client *c, int destroyed) XSetErrorHandler(xerror); XUngrabServer(dpy); } + if (lastfocused == c) + lastfocused = NULL; free(c); focus(NULL); updateclientlist(); |