all repos — openbox @ 7d3e3ff6dfda1fa87165d9823e47cd2c9dd9f57e

openbox fork - make it a bit more like ryudo

always have the offscreen buffer's shape matched to the window's
Dana Jansens danakj@orodu.net
commit

7d3e3ff6dfda1fa87165d9823e47cd2c9dd9f57e

parent

a138a9a30e3efa2d79b9b12cd783bb23ee798fa3

1 files changed, 12 insertions(+), 11 deletions(-)

jump to
M openbox/frame.copenbox/frame.c

@@ -288,12 +288,6 @@ self->size.top,

self->client->window, ShapeBounding, ShapeSet); - /* shape the offscreen buffer to match the window */ - if (self->pixmap) - XShapeCombineShape(ob_display, self->pixmap, ShapeBounding, - 0, 0, self->client->window, - ShapeBounding, ShapeSet); - num = 0; if (self->decorations & OB_FRAME_DECOR_TITLEBAR) { xrect[0].x = 0;

@@ -318,8 +312,10 @@ XShapeCombineRectangles(ob_display, self->window,

ShapeBounding, 0, 0, xrect, num, ShapeUnion, Unsorted); } - #endif + + /* the offscreen buffer's shape needs to match */ + frame_get_offscreen_buffer(self); } void frame_adjust_area(ObFrame *self, gboolean moved,

@@ -790,11 +786,8 @@

if (resized) { self->need_render = TRUE; framerender_frame(self); + /* this also updates the offscreen buffer */ frame_adjust_shape(self); - - /* the offscreen buffer is invalid when the window is resized */ - if (self->visible) - frame_get_offscreen_buffer(self); } if (!STRUT_EQUAL(self->size, oldsize)) {

@@ -1760,6 +1753,14 @@ frame_free_offscreen_buffer(self);

if (self->visible || frame_iconify_animating(self)) { self->pixmap = composite_get_window_pixmap(self->client->window); + +#ifdef SHAPE + /* shape the offscreen buffer to match the window */ + XShapeCombineShape(ob_display, self->pixmap, ShapeBounding, + 0, 0, self->client->window, + ShapeBounding, ShapeSet); +#endif + /* self->picture = composite_create_picture(self->window, wattrib.visual,