From 48d827bb16e57a06c951c08bcf98ca1c088da9eb Mon Sep 17 00:00:00 2001 From: xAlpharax <42233094+xAlpharax@users.noreply.github.com> Date: Thu, 17 Aug 2023 04:27:28 +0300 Subject: 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 --- dwm.c.orig | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'dwm.c.orig') diff --git a/dwm.c.orig b/dwm.c.orig index e5cbaa4..bf189c7 100644 --- a/dwm.c.orig +++ b/dwm.c.orig @@ -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(); -- cgit v1.2.3