]> Dogcows Code - chaz/openbox/blobdiff - openbox/frame.c
delay re-rendering the frame while it is being iconify-animated until the animation...
[chaz/openbox] / openbox / frame.c
index 0192943f75b55ed6c1169c78dde48bab0da03a78..c30415ddef7f272acf5663685ae76674ac784d76 100644 (file)
@@ -297,8 +297,7 @@ void frame_adjust_shape(ObFrame *self)
             xrect[0].x = 0;
             xrect[0].y = 0;
             xrect[0].width = self->area.width;
-            xrect[0].height = ob_rr_theme->title_height +
-                self->bwidth + self->rbwidth;
+            xrect[0].height = self->size.top;
             ++num;
         }
 
@@ -344,7 +343,6 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
             self->bwidth = self->cbwidth_l = self->cbwidth_t =
                 self->cbwidth_r = self->cbwidth_b = 0;
         }
-        self->rbwidth = self->bwidth;
 
         if (self->max_horz) {
             self->cbwidth_l = self->cbwidth_r = 0;
@@ -367,7 +365,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                   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->rbwidth;
+            self->size.top += ob_rr_theme->title_height + self->bwidth;
         if (self->decorations & OB_FRAME_DECOR_HANDLE &&
             ob_rr_theme->handle_height > 0)
         {
@@ -470,14 +468,12 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                 XMapWindow(ob_display, self->titletopleft);
                 XMapWindow(ob_display, self->titletopright);
 
-                if (self->decorations & OB_FRAME_DECOR_TITLEBAR &&
-                    self->rbwidth)
-                {
+                if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
                     XMoveResizeWindow(ob_display, self->titlebottom,
                                       self->bwidth,
                                       ob_rr_theme->title_height + self->bwidth,
                                       self->width,
-                                      self->rbwidth);
+                                      self->bwidth);
 
                     XMapWindow(ob_display, self->titlebottom);
                 } else
@@ -764,7 +760,10 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                               self->area.width,
                               self->area.height);
 
-        /* when the client has StaticGravity, it likes to move around. */
+        /* when the client has StaticGravity, it likes to move around.
+           also this correctly positions the client when it maps.
+           this also needs to be run when the frame's decorations sizes change!
+        */
         XMoveWindow(ob_display, self->client->window,
                     self->size.left, self->size.top);
 
@@ -1631,10 +1630,11 @@ void frame_end_iconify_animation(ObFrame *self)
 
     if (!self->visible)
         XUnmapWindow(ob_display, self->window);
-    else
+    else {
         /* Send a ConfigureNotify when the animation is done, this fixes
            KDE's pager showing the window in the wrong place. */
         client_reconfigure(self->client);
+    }
 
     /* we're not animating any more ! */
     self->iconify_animation_going = 0;
@@ -1642,6 +1642,8 @@ void frame_end_iconify_animation(ObFrame *self)
     XMoveResizeWindow(ob_display, self->window,
                       self->area.x, self->area.y,
                       self->area.width, self->area.height);
+    /* we delay re-rendering until after we're done animating */
+    framerender_frame(self);
     XFlush(ob_display);
 }
 
This page took 0.027892 seconds and 4 git commands to generate.