summaryrefslogtreecommitdiff
path: root/openbox/event.c
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2009-01-29 22:33:44 +0100
committerMikael Magnusson <mikachu@gmail.com>2009-01-29 22:35:56 +0100
commitc5d372ffd629eae89d28b37069c553049e5c7d20 (patch)
treee5c2c08b4d7d4d0a40a3b60e3893c759323f6423 /openbox/event.c
parentcac78e1a7a953899f8b8e9dc5ea1910d2067864d (diff)
Handle InputShape type shaping too.
Many composite apps use this to pass through clicks where they are transparent.
Diffstat (limited to 'openbox/event.c')
-rw-r--r--openbox/event.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/openbox/event.c b/openbox/event.c
index 467af11c..8eb612a1 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -1567,9 +1567,22 @@ static void event_handle_client(ObClient *client, XEvent *e)
default:
;
#ifdef SHAPE
- if (extensions_shape && e->type == extensions_shape_event_basep) {
- client->shaped = ((XShapeEvent*)e)->shaped;
- frame_adjust_shape(client->frame);
+ {
+ int kind;
+ if (extensions_shape && e->type == extensions_shape_event_basep) {
+ switch (((XShapeEvent*)e)->kind) {
+ case ShapeBounding:
+ case ShapeClip:
+ client->shaped = ((XShapeEvent*)e)->shaped;
+ kind = ShapeBounding;
+ break;
+ case ShapeInput:
+ client->shaped_input = ((XShapeEvent*)e)->shaped;
+ kind = ShapeInput;
+ break;
+ }
+ frame_adjust_shape_kind(client->frame, kind);
+ }
}
#endif
}