From 9c356d370ab3e5a6b28e38ce8289d80bf35c8828 Mon Sep 17 00:00:00 2001 From: Philip Brown Date: Sat, 16 Oct 2010 16:13:36 -0400 Subject: [PATCH] Some versions of X, have the Shape extension, but apparently not "ShapeInput" (Fixes bug #4662) the sawfish window manager has ifdefs for this sort of situation. I followed suit, and #ifdef'd it, and it now works for me. patch attached. Slight changes to the patch from danakj@orodu.net for readability --- openbox/event.c | 2 ++ openbox/frame.c | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/openbox/event.c b/openbox/event.c index b0a53dba..8a52402e 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1695,10 +1695,12 @@ static void event_handle_client(ObClient *client, XEvent *e) client->shaped = ((XShapeEvent*)e)->shaped; kind = ShapeBounding; break; +#ifdef ShapeInput case ShapeInput: client->shaped_input = ((XShapeEvent*)e)->shaped; kind = ShapeInput; break; +#endif default: g_assert_not_reached(); } diff --git a/openbox/frame.c b/openbox/frame.c index 8a9a5a64..db4b976d 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -276,9 +276,14 @@ void frame_adjust_shape_kind(ObFrame *self, int kind) { gint num; XRectangle xrect[2]; + gboolean shaped; - if (!((kind == ShapeBounding && self->client->shaped) || - (kind == ShapeInput && self->client->shaped_input))) { + shaped = (kind == ShapeBounding && self->client->shaped); +#ifdef ShapeInput + shaped |= (kind == ShapeInput && self->client->shaped_input); +#endif + + if (!shaped) { /* clear the shape on the frame window */ XShapeCombineMask(obt_display, self->window, kind, self->size.left, @@ -323,8 +328,10 @@ void frame_adjust_shape(ObFrame *self) { #ifdef SHAPE frame_adjust_shape_kind(self, ShapeBounding); +#ifdef ShapeInput frame_adjust_shape_kind(self, ShapeInput); #endif +#endif } void frame_adjust_area(ObFrame *self, gboolean moved, -- 2.45.2