dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 71857b87ee4e5ce63594d062143e6ea78f842b0d
parent 6ba400ee0fa55d1178cac5f38f4465a1ddf30490
Author: Anselm R. Garbe <arg@suckless.org>
Date:   Tue, 13 Feb 2007 13:39:33 +0100

simplified configurerequest
Diffstat:
Mclient.c | 25+++++++++++++------------
Mevent.c | 51++++++++++++++++-----------------------------------
2 files changed, 29 insertions(+), 47 deletions(-)
diff --git a/client.c b/client.c
@@ -69,19 +69,20 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {
 
 void
 configure(Client *c) {
-    XEvent synev;
+    XConfigureEvent ce;
 
-    synev.type = ConfigureNotify;
-    synev.xconfigure.display = dpy;
-    synev.xconfigure.event = c->win;
-    synev.xconfigure.window = c->win;
-    synev.xconfigure.x = c->x;
-    synev.xconfigure.y = c->y;
-    synev.xconfigure.width = c->w;
-    synev.xconfigure.height = c->h;
-    synev.xconfigure.border_width = c->border;
-    synev.xconfigure.above = None;
-    XSendEvent(dpy, c->win, True, NoEventMask, &synev);
+    ce.type = ConfigureNotify;
+    ce.display = dpy;
+    ce.event = c->win;
+    ce.window = c->win;
+    ce.x = c->x;
+    ce.y = c->y;
+    ce.width = c->w;
+    ce.height = c->h;
+    ce.border_width = c->border;
+    ce.above = None;
+    ce.override_redirect = False;
+    XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce);
 }
 
 void
diff --git a/event.c b/event.c
@@ -166,52 +166,33 @@ buttonpress(XEvent *e) {
 
 static void
 configurerequest(XEvent *e) {
-    unsigned long newmask;
     Client *c;
     XConfigureRequestEvent *ev = &e->xconfigurerequest;
     XWindowChanges wc;
 
+    wc.x = ev->x;
+    wc.y = ev->y;
+    wc.width = ev->width;
+    wc.height = ev->height;
+    wc.border_width = ev->border_width;
+    wc.sibling = ev->above;
+    wc.stack_mode = ev->detail;
     if((c = getclient(ev->window))) {
         c->ismax = False;
-        if(ev->value_mask & CWX)
-            c->x = ev->x;
-        if(ev->value_mask & CWY)
-            c->y = ev->y;
-        if(ev->value_mask & CWWidth)
-            c->w = ev->width;
-        if(ev->value_mask & CWHeight)
-            c->h = ev->height;
         if(ev->value_mask & CWBorderWidth)
             c->border = ev->border_width;
-        wc.x = c->x;
-        wc.y = c->y;
-        wc.width = c->w;
-        wc.height = c->h;
-        newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
-        if(newmask)
-            XConfigureWindow(dpy, c->win, newmask, &wc);
-        else
+        if((!c->isfloat && (arrange != dofloat))
+            || ((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight))))
+        {
             configure(c);
-        XSync(dpy, False);
-        if(c->isfloat) {
-            resize(c, False);
-            if(!isvisible(c))
-                XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+            XSync(dpy, False);
+            return;
         }
-        else
-            arrange();
-    }
-    else {
-        wc.x = ev->x;
-        wc.y = ev->y;
-        wc.width = ev->width;
-        wc.height = ev->height;
-        wc.border_width = ev->border_width;
-        wc.sibling = ev->above;
-        wc.stack_mode = ev->detail;
-        XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
-        XSync(dpy, False);
     }
+    XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
+    if(c && !isvisible(c))
+        XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+    XSync(dpy, False);
 }
 
 static void