summaryrefslogtreecommitdiff
path: root/dwm.c.orig
diff options
context:
space:
mode:
Diffstat (limited to 'dwm.c.orig')
-rw-r--r--dwm.c.orig12
1 files changed, 10 insertions, 2 deletions
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();