]> Dogcows Code - chaz/openbox/commitdiff
stop using a border for the outer frame window. step 1 of borderless-ness. now transp...
authorDana Jansens <danakj@orodu.net>
Sun, 20 May 2007 04:44:00 +0000 (04:44 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 20 May 2007 04:44:00 +0000 (04:44 +0000)
openbox/frame.c
openbox/frame.h
openbox/framerender.c

index 7c427b3f85ce83bdf21473406f1edaeb9ffbfecb..5f491b72687271259d389058dece997029c3dddf 100644 (file)
@@ -46,8 +46,7 @@
 #define FRAME_ANIMATE_ICONIFY_TIME 150000 /* .15 seconds */
 #define FRAME_ANIMATE_ICONIFY_STEP_TIME (G_USEC_PER_SEC / 60) /* 60 Hz */
 
-#define FRAME_HANDLE_Y(f) (f->innersize.top + f->client->area.height + \
-                           f->cbwidth_y)
+#define FRAME_HANDLE_Y(f) (f->size.top + f->client->area.height + f->cbwidth_y)
 
 static void flash_done(gpointer data);
 static gboolean flash_timeout(gpointer data);
@@ -290,14 +289,14 @@ void frame_adjust_shape(ObFrame *self)
     if (!self->client->shaped) {
         /* clear the shape on the frame window */
         XShapeCombineMask(ob_display, self->window, ShapeBounding,
-                          self->innersize.left,
-                          self->innersize.top,
+                          self->size.left,
+                          self->size.top,
                           None, ShapeSet);
     } else {
         /* make the frame's shape match the clients */
         XShapeCombineShape(ob_display, self->window, ShapeBounding,
-                           self->innersize.left,
-                           self->innersize.top,
+                           self->size.left,
+                           self->size.top,
                            self->client->window,
                            ShapeBounding, ShapeSet);
 
@@ -350,33 +349,30 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
         if (self->max_horz)
             self->bwidth = self->cbwidth_x = 0;
 
-        STRUT_SET(self->innersize,
-                  self->cbwidth_x,
-                  self->cbwidth_y,
-                  self->cbwidth_x,
-                  self->cbwidth_y);
         self->width = self->client->area.width + self->cbwidth_x * 2 -
             (self->max_horz ? self->rbwidth * 2 : 0);
         self->width = MAX(self->width, 1); /* no lower than 1 */
 
+        STRUT_SET(self->size,
+                  self->cbwidth_x + self->bwidth,
+                  self->cbwidth_y + self->bwidth,
+                  self->cbwidth_x + self->bwidth,
+                  self->cbwidth_y + self->bwidth);
+
         /* set border widths */
         if (!fake) {
-            XSetWindowBorderWidth(ob_display, self->window, self->bwidth);
-            XSetWindowBorderWidth(ob_display, self->inner, self->bwidth);
             XSetWindowBorderWidth(ob_display, self->title,  self->rbwidth);
             XSetWindowBorderWidth(ob_display, self->handle, self->rbwidth);
             XSetWindowBorderWidth(ob_display, self->lgrip,  self->rbwidth);
             XSetWindowBorderWidth(ob_display, self->rgrip,  self->rbwidth);
-            XSetWindowBorderWidth(ob_display, self->leftresize, self->bwidth);
-            XSetWindowBorderWidth(ob_display, self->rightresize, self->bwidth);
         }
 
         if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
-            self->innersize.top += ob_rr_theme->title_height + self->rbwidth +
+            self->size.top += ob_rr_theme->title_height + self->rbwidth +
                 (self->rbwidth - self->bwidth);
         if (self->decorations & OB_FRAME_DECOR_HANDLE &&
             ob_rr_theme->handle_height > 0)
-            self->innersize.bottom += ob_rr_theme->handle_height +
+            self->size.bottom += ob_rr_theme->handle_height +
                 self->rbwidth + (self->rbwidth - self->bwidth);
   
         /* position/size and map/unmap all the windows */
@@ -384,7 +380,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
         if (!fake) {
             if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
                 XMoveResizeWindow(ob_display, self->title,
-                                  -self->bwidth, -self->bwidth,
+                                  0, 0,
                                   self->width, ob_rr_theme->title_height);
                 XMapWindow(ob_display, self->title);
 
@@ -434,7 +430,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                     handle_height = 1;
 
                 XMoveResizeWindow(ob_display, self->handle,
-                                  -self->bwidth, FRAME_HANDLE_Y(self),
+                                  0, FRAME_HANDLE_Y(self),
                                   self->width, handle_height);
                 XMapWindow(ob_display, self->handle);
 
@@ -455,16 +451,16 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
 
             if (self->decorations & OB_FRAME_DECOR_GRIPS) {
                 XMoveResizeWindow(ob_display, self->leftresize,
-                                  -(ob_rr_theme->fbwidth * 2) - 1,
                                   0,
-                                  1,
+                                  0,
+                                  self->bwidth,
                                   self->client->area.height +
                                   self->cbwidth_y * 2);
                 XMoveResizeWindow(ob_display, self->rightresize,
                                   self->client->area.width +
-                                  self->cbwidth_x * 2,
+                                  self->cbwidth_x * 2 + self->bwidth,
                                   0,
-                                  1,
+                                  self->bwidth,
                                   self->client->area.height +
                                   self->cbwidth_y * 2);
 
@@ -478,28 +474,20 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
             /* move and resize the inner border window which contains the plate
              */
             XMoveResizeWindow(ob_display, self->inner,
-                              self->innersize.left - self->cbwidth_x -
-                              self->bwidth,
-                              self->innersize.top - self->cbwidth_y -
-                              self->bwidth,
+                              0,
+                              self->size.top - self->cbwidth_y,
                               self->client->area.width +
-                              self->cbwidth_x * 2,
+                              self->cbwidth_x * 2 + self->bwidth * 2,
                               self->client->area.height +
                               self->cbwidth_y * 2);
 
             /* move the plate */
             XMoveWindow(ob_display, self->plate,
-                        self->cbwidth_x, self->cbwidth_y);
+                        self->bwidth + self->cbwidth_x, self->cbwidth_y);
 
             /* when the client has StaticGravity, it likes to move around. */
             XMoveWindow(ob_display, self->client->window, 0, 0);
         }
-
-        STRUT_SET(self->size,
-                  self->innersize.left + self->bwidth,
-                  self->innersize.top + self->bwidth,
-                  self->innersize.right + self->bwidth,
-                  self->innersize.bottom + self->bwidth);
     }
 
     /* shading can change without being moved or resized */
@@ -530,9 +518,10 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                reflected afterwards.
             */
             XMoveResizeWindow(ob_display, self->window,
-                              self->area.x, self->area.y,
-                              self->area.width - self->bwidth * 2,
-                              self->area.height - self->bwidth * 2);
+                              self->area.x,
+                              self->area.y,
+                              self->area.width,
+                              self->area.height);
 
         if (resized) {
             framerender_frame(self);
@@ -1192,7 +1181,7 @@ static gboolean frame_animate_iconify(gpointer p)
         x = iconx;
         y = icony;
         w = iconw;
-        h = self->innersize.top; /* just the titlebar */
+        h = self->size.top; /* just the titlebar */
     }
 
     if (time > 0) {
@@ -1209,7 +1198,7 @@ static gboolean frame_animate_iconify(gpointer p)
         x = x - (dx * elapsed) / FRAME_ANIMATE_ICONIFY_TIME;
         y = y - (dy * elapsed) / FRAME_ANIMATE_ICONIFY_TIME;
         w = w - (dw * elapsed) / FRAME_ANIMATE_ICONIFY_TIME;
-        h = self->innersize.top; /* just the titlebar */
+        h = self->size.top; /* just the titlebar */
     }
 
     if (time == 0)
index 13e49564eabe8da9c8f0a5180b797c3003f79649..b5b8a9cf0ad593686e7150197bfc6d0f4c111f46 100644 (file)
@@ -117,8 +117,6 @@ struct _ObFrame
     RrAppearance *a_unfocused_handle;
     RrAppearance *a_focused_handle;
 
-    Strut     innersize;
-
     GSList   *clients;
 
     gint      icon_on;    /* if the window icon button is on */
index 78c1d02feb85a55c3d5d625f6f5c86058d814a7d..3818d16c3996438ada470c078eb97e65ca81a54d 100644 (file)
@@ -51,8 +51,8 @@ void framerender_frame(ObFrame *self)
         XSetWindowBorder(ob_display, self->handle, px);
         XSetWindowBorder(ob_display, self->rgrip, px);
         XSetWindowBorder(ob_display, self->lgrip, px);
-        XSetWindowBorder(ob_display, self->leftresize, px);
-        XSetWindowBorder(ob_display, self->rightresize, px);
+        XSetWindowBackground(ob_display, self->leftresize, px);
+        XSetWindowBackground(ob_display, self->rightresize, px);
     }
 
     if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
This page took 0.035829 seconds and 4 git commands to generate.