dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 22399a3bc05406a89f6ad717800b4d9ba41f6e0a
parent ad2508f9578195e703033df3cceb441f716261bd
Author: Anselm R. Garbe <arg@suckless.org>
Date:   Thu, 19 Apr 2007 09:24:25 +0200

fixed the border issue for mplayer, ff is definately broken when using F11 (fullscreen mode)
Diffstat:
Mclient.c | 14++++++++++----
Mdwm.h | 2+-
Mmain.c | 2+-
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/client.c b/client.c
@@ -185,9 +185,11 @@ manage(Window w, XWindowAttributes *wa) {
     c->y = wa->y;
     c->w = wa->width;
     c->h = wa->height;
+    c->oldborder = wa->border_width;
     if(c->w == sw && c->h == sh) {
         c->x = sx;
         c->y = sy;
+        c->border = wa->border_width;
     }
     else {
         if(c->x + c->w + 2 * c->border > wax + waw)
@@ -198,15 +200,16 @@ manage(Window w, XWindowAttributes *wa) {
             c->x = wax;
         if(c->y < way)
             c->y = way;
+        c->border = BORDERPX;
     }
+    wc.border_width = c->border;
+    XConfigureWindow(dpy, w, CWBorderWidth, &wc);
+    XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
+    configure(c); /* propagates border_width, if size doesn't change */
     updatesizehints(c);
     XSelectInput(dpy, w,
         StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
     grabbuttons(c, False);
-    c->border = wc.border_width = (c->w == sw && c->h == sh) ? wa->border_width : BORDERPX;
-    XConfigureWindow(dpy, w, CWBorderWidth, &wc);
-    XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
-    configure(c); /* propagates border_width, if size doesn't change */
     updatetitle(c);
     if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success))
         for(t = clients; t && t->win != trans; t = t->next);
@@ -378,10 +381,13 @@ updatetitle(Client *c) {
 void
 unmanage(Client *c) {
     Client *nc;
+    XWindowChanges wc;
 
+    wc.border_width = c->oldborder;
     /* The server grab construct avoids race conditions. */
     XGrabServer(dpy);
     XSetErrorHandler(xerrordummy);
+    XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
     detach(c);
     detachstack(c);
     if(sel == c) {
diff --git a/dwm.h b/dwm.h
@@ -50,7 +50,7 @@ struct Client {
     int basew, baseh, incw, inch, maxw, maxh, minw, minh;
     int minax, maxax, minay, maxay;
     long flags; 
-    unsigned int border;
+    unsigned int border, oldborder;
     Bool isbanned, isfixed, ismax, isfloating;
     Bool *tags;
     Client *next;
diff --git a/main.c b/main.c
@@ -81,7 +81,7 @@ initfont(const char *fontstr) {
     dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
     if(missing) {
         while(n--)
-            fprintf(stderr, "missing fontset: %s\n", missing[n]);
+            fprintf(stderr, "dwm: missing fontset: %s\n", missing[n]);
         XFreeStringList(missing);
     }
     if(dc.font.set) {