diff options
| author | Mikael Magnusson <mikachu@gmail.com> | 2009-01-29 22:33:44 +0100 |
|---|---|---|
| committer | Mikael Magnusson <mikachu@gmail.com> | 2009-01-29 22:35:56 +0100 |
| commit | c5d372ffd629eae89d28b37069c553049e5c7d20 (patch) | |
| tree | e5c2c08b4d7d4d0a40a3b60e3893c759323f6423 /openbox/event.c | |
| parent | cac78e1a7a953899f8b8e9dc5ea1910d2067864d (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.c | 19 |
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 } |
