X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=5b8e52fc32398f6450a14b1e785290e46f3d25d3;hb=881a8647d2eb5f13eccda87a712c180fa9e902cf;hp=a8391e48319ddde9c8d6cf0c35bb25c670b3cb61;hpb=9b5770277db2dec6e3864b5ba3482897ab936862;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index a8391e48..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,6 +764,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 +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; @@ -1638,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); }