On Fri 2009.10.02 at 00:32 +0159, Simon Nicolussi wrote:
> 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.

i haven't experienced this (yet) - does this still occur if you simply
backout the change?

> 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.

the below changes the current behaviour of fullscreen, now adding a
border.

of course, if we did this, it would match other tiling wm's, all of
which i know do have a border, fullscreened or not.

> 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