X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=5e60d11c21437bf38cc0e9bd3b3a6d8266982899;hb=271e0fd9c87a97bb066b35f537a052235413fe5f;hp=704560bdd95aa2edbf6d1f8a95763521faa1d2e8;hpb=b834f001869b9ec7d0600e031823063f4062d2f3;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index 704560bd..5e60d11c 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -267,25 +267,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(ob_display, self->window, ShapeBounding, + XShapeCombineMask(ob_display, self->window, kind, self->size.left, self->size.top, None, ShapeSet); } else { /* make the frame's shape match the clients */ - XShapeCombineShape(ob_display, self->window, ShapeBounding, + XShapeCombineShape(ob_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) { @@ -308,9 +309,17 @@ void frame_adjust_shape(ObFrame *self) } XShapeCombineRectangles(ob_display, self->window, - ShapeBounding, 0, 0, xrect, num, + kind, 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 }