Hello,

as a consequence to the last change to cwm(1) no borders are being drawn
for maximized windows. This is fine as long as there's no gap defined in
the cwmrc(5), otherwise the borders between window and gaps are missing.
Is this behaviour intended?

There's another strange problem I experienced after this change: Almost
every time I try to maximize my Firefox window its whole content freezes
and returns back to normal as soon as I resize the window with my mouse.
I haven't really looked into this, though.

Here's a patch that addresses theses issues: Now maximized windows keep
all four borders, but always inside the screen (and thus visible for the
user) and Firefox behaves as before the change.

Tested on amd64 but unfortunately no multi-monitor configuration.

Index: client.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/client.c,v
retrieving revision 1.65
diff -u client.c
--- client.c    25 Sep 2009 15:57:49 -0000      1.65
+++ client.c    1 Oct 2009 21:30:27 -0000
@@ -246,8 +246,10 @@
 calc:
                cc->geom.x = x_org + Conf.gap_left;
                cc->geom.y = y_org + Conf.gap_top;
-               cc->geom.height = ymax - (Conf.gap_top + Conf.gap_bottom);
-               cc->geom.width = xmax - (Conf.gap_left + Conf.gap_right);
+               cc->geom.height = ymax - (cc->bwidth * 2) -
+                   (Conf.gap_top + Conf.gap_bottom);
+               cc->geom.width = xmax - (cc->bwidth * 2) -
+                   (Conf.gap_left + Conf.gap_right);
                cc->flags |= CLIENT_DOMAXIMIZE;
        }
 
@@ -323,7 +325,6 @@
            CLIENT_HMAXIMIZED);
 
        if (cc->flags & CLIENT_DOMAXIMIZE) {
-               cc->bwidth = 0;
                cc->flags &= ~CLIENT_DOMAXIMIZE;
                cc->flags |= CLIENT_MAXIMIZED;
        } else if (cc->flags & CLIENT_DOVMAXIMIZE) {
@@ -332,11 +333,7 @@
        } else if (cc->flags & CLIENT_DOHMAXIMIZE) {
                cc->flags &= ~CLIENT_DOHMAXIMIZE;
                cc->flags |= CLIENT_HMAXIMIZED;
-       } else {
-               cc->bwidth = Conf.bwidth;
        }
-
-       client_draw_border(cc);
 
        XMoveResizeWindow(X_Dpy, cc->win, cc->geom.x,
            cc->geom.y, cc->geom.width, cc->geom.height);

-- 
Simon Nicolussi, <simon.nicolu...@student.uibk.ac.at>
http://homepage.uibk.ac.at/~csag9583/

Reply via email to