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
This commit is contained in:
parent
7c33f45e09
commit
9c356d370a
2 changed files with 11 additions and 2 deletions
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue