X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=5b8e52fc32398f6450a14b1e785290e46f3d25d3;hb=881a8647d2eb5f13eccda87a712c180fa9e902cf;hp=0192943f75b55ed6c1169c78dde48bab0da03a78;hpb=e8cd4c4d8dc0f4f2e973b38e9bbf5553e2388d20;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index 0192943f..5b8e52fc 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; } @@ -336,15 +335,18 @@ void frame_adjust_area(ObFrame *self, gboolean moved, self->max_horz = self->client->max_horz; self->max_vert = self->client->max_vert; - if (self->decorations & OB_FRAME_DECOR_BORDER) { + if (self->decorations & OB_FRAME_DECOR_BORDER || + (self->client->undecorated && config_theme_keepborder)) self->bwidth = ob_rr_theme->fbwidth; + else + self->bwidth = 0; + + if (self->decorations & OB_FRAME_DECOR_BORDER) { self->cbwidth_l = self->cbwidth_r = ob_rr_theme->cbwidthx; self->cbwidth_t = self->cbwidth_b = ob_rr_theme->cbwidthy; - } else { - self->bwidth = self->cbwidth_l = self->cbwidth_t = + } else + 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 +369,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 +472,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 +764,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 +1634,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 +1646,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); }