summaryrefslogtreecommitdiff
path: root/openbox/frame.c
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2009-01-29 22:45:47 +0100
committerMikael Magnusson <mikachu@gmail.com>2009-01-29 22:45:47 +0100
commit4145468a1984e1055a947ad957075ae51f70ca9c (patch)
tree923b1d6ae11d4ba0c471779229d2f76642bf4774 /openbox/frame.c
parent90cecafa3de2f118e550622932d1d30266c71226 (diff)
parentd0829d4416d83fda4aa4ec8d5f0a7003b0a7f148 (diff)
Merge branch 'backport' into work
Conflicts: openbox/event.c openbox/frame.c
Diffstat (limited to 'openbox/frame.c')
-rw-r--r--openbox/frame.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/openbox/frame.c b/openbox/frame.c
index 30630fbb..c633fa6d 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -265,25 +265,26 @@ void frame_adjust_theme(ObFrame *self)
set_theme_statics(self);
}
-void frame_adjust_shape(ObFrame *self)
-{
#ifdef SHAPE
+void frame_adjust_shape_kind(ObFrame *self, int kind)
+{
gint num;
XRectangle xrect[2];
- if (!self->client->shaped) {
+ if (!((kind == ShapeBounding && self->client->shaped) ||
+ (kind == ShapeInput && self->client->shaped_input))) {
/* clear the shape on the frame window */
- XShapeCombineMask(obt_display, self->window, ShapeBounding,
+ XShapeCombineMask(obt_display, self->window, kind,
self->size.left,
self->size.top,
None, ShapeSet);
} else {
/* make the frame's shape match the clients */
- XShapeCombineShape(obt_display, self->window, ShapeBounding,
+ XShapeCombineShape(obt_display, self->window, kind,
self->size.left,
self->size.top,
self->client->window,
- ShapeBounding, ShapeSet);
+ kind, ShapeSet);
num = 0;
if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
@@ -309,6 +310,14 @@ void frame_adjust_shape(ObFrame *self)
ShapeBounding, 0, 0, xrect, num,
ShapeUnion, Unsorted);
}
+}
+#endif
+
+void frame_adjust_shape(ObFrame *self)
+{
+#ifdef SHAPE
+ frame_adjust_shape_kind(self, ShapeBounding);
+ frame_adjust_shape_kind(self, ShapeInput);
#endif
}