dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit f9e7a330190259a54449837a16c2af66fa823d30
parent 7c9fa2566f5b3bd1c9745086ff624967415c2c4e
Author: Anselm R. Garbe <arg@suckless.org>
Date:   Mon,  7 May 2007 13:12:41 +0200

applied patch of Paul Liu to allow onthefly resizing due to xrandr changes
Diffstat:
Mevent.c | 19+++++++++++++++++++
Mlayout.c | 5++++-
Mmain.c | 3++-
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/event.c b/event.c
@@ -208,6 +208,24 @@ configurerequest(XEvent *e) {
 }
 
 static void
+configurenotify(XEvent *e) {
+    Client *c;
+    XConfigureEvent *ev = &e->xconfigure;
+    XWindowChanges wc;
+
+    if (ev->window == root && (ev->width != sw || ev->height != sh)) {
+        sw = ev->width;
+        sh = ev->height;
+        wah = sh - bh;
+        waw = sw;
+        XFreePixmap(dpy, dc.drawable);
+        dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
+        XResizeWindow(dpy, barwin, sw, bh);
+        lt->arrange();
+    }
+}
+
+static void
 destroynotify(XEvent *e) {
     Client *c;
     XDestroyWindowEvent *ev = &e->xdestroywindow;
@@ -333,6 +351,7 @@ unmapnotify(XEvent *e) {
 void (*handler[LASTEvent]) (XEvent *) = {
     [ButtonPress] = buttonpress,
     [ConfigureRequest] = configurerequest,
+    [ConfigureNotify] = configurenotify,
     [DestroyNotify] = destroynotify,
     [EnterNotify] = enternotify,
     [LeaveNotify] = leavenotify,
diff --git a/layout.c b/layout.c
@@ -46,7 +46,10 @@ tile(void) {
                 nw = tw - 2 * c->border;
                 if(th > 2 * c->border) {
                     ny += (i - nmaster) * th;
-                    nh = th - 2 * c->border;
+                    if(i == n - 1)
+                        nh = wah - ny - 2 * c->border;
+                    else
+                        nh = th - 2 * c->border;
                 }
                 else /* fallback if th <= 2 * c->border */
                     nh = wah - 2 * c->border;
diff --git a/main.c b/main.c
@@ -163,9 +163,10 @@ setup(void) {
     XFreeModifiermap(modmap);
     /* select for events */
     wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask
-        | EnterWindowMask | LeaveWindowMask;
+        | EnterWindowMask | LeaveWindowMask | StructureNotifyMask;
     wa.cursor = cursor[CurNormal];
     XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
+    XSelectInput(dpy, root, wa.event_mask);
     grabkeys();
     compileregs();
     for(ntags = 0; tags[ntags]; ntags++);