When an undecorated window is maximized give it a 1px border at the top (Fix bug...
authorDana Jansens <danakj@orodu.net>
Mon, 1 Oct 2012 04:32:39 +0000 (00:32 -0400)
committerDana Jansens <danakj@orodu.net>
Sun, 7 Oct 2012 02:47:46 +0000 (22:47 -0400)
We want to keep some way for a user to re-decorate the window with the default
bindings. However with a large border width, the top border is much bigger than
it needs to be! So make it fixed at 1px large in this case.

openbox/frame.c

index 48dda24..24d3eb5 100644 (file)
@@ -378,13 +378,22 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
 
         STRUT_SET(self->size,
                   self->cbwidth_l + (!self->max_horz ? self->bwidth : 0),
-                  self->cbwidth_t + self->bwidth,
+                  self->cbwidth_t +
+                  (!self->max_horz || !self->max_vert ? self->bwidth : 0),
                   self->cbwidth_r + (!self->max_horz ? self->bwidth : 0),
                   self->cbwidth_b +
                   (!self->max_horz || !self->max_vert ? self->bwidth : 0));
 
         if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
             self->size.top += ob_rr_theme->title_height + self->bwidth;
+        else if (self->max_horz && self->max_vert) {
+            /* A maximized and undecorated window needs a small border on the
+               top of the window to let the user still undecorate/unmaximize the
+               window via the client menu. */
+            /* XXX This size should probably be a theme option. */
+            self->size.top += 1;
+        }
+
         if (self->decorations & OB_FRAME_DECOR_HANDLE &&
             ob_rr_theme->handle_height > 0)
         {