JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
applied patch of Paul Liu to allow onthefly resizing due to xrandr changes
authorAnselm R. Garbe <arg@suckless.org>
Mon, 7 May 2007 11:12:41 +0000 (13:12 +0200)
committerAnselm R. Garbe <arg@suckless.org>
Mon, 7 May 2007 11:12:41 +0000 (13:12 +0200)
event.c
layout.c
main.c

diff --git a/event.c b/event.c
index 72e9ccd..c89850a 100644 (file)
--- 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,
index 6eae290..8005894 100644 (file)
--- 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
index 7d3479e..63f791f 100644 (file)
--- 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++);