X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=c30415ddef7f272acf5663685ae76674ac784d76;hb=33fe8d4470272db6cead0c550d32f5db99e285b7;hp=a8391e48319ddde9c8d6cf0c35bb25c670b3cb61;hpb=9b5770277db2dec6e3864b5ba3482897ab936862;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index a8391e48..c30415dd 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -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,6 +760,13 @@ void frame_adjust_area(ObFrame *self, gboolean moved, self->area.width, self->area.height); + /* 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); + if (resized) { framerender_frame(self); frame_adjust_shape(self); @@ -1627,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; @@ -1638,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); }