summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-06-21 15:02:31 +0000
committerDana Jansens <danakj@orodu.net>2007-06-21 15:02:31 +0000
commit7d3e3ff6dfda1fa87165d9823e47cd2c9dd9f57e (patch)
tree893a579eeff47fdb6c840595d2a6259499c25a50 /openbox
parenta138a9a30e3efa2d79b9b12cd783bb23ee798fa3 (diff)
always have the offscreen buffer's shape matched to the window's
Diffstat (limited to 'openbox')
-rw-r--r--openbox/frame.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/openbox/frame.c b/openbox/frame.c
index 25a9214b..8f947e49 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -288,12 +288,6 @@ void frame_adjust_shape(ObFrame *self)
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 @@ void frame_adjust_shape(ObFrame *self)
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 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
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 @@ static void frame_get_offscreen_buffer(ObFrame *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,