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) {
}
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
}
self->max_vert = self->client->max_vert;
self->shaded = self->client->shaded;
- if (self->decorations & OB_FRAME_DECOR_BORDER ||
- (self->client->undecorated && config_theme_keepborder))
+ if (self->decorations & OB_FRAME_DECOR_BORDER)
self->bwidth = ob_rr_theme->fbwidth;
else
self->bwidth = 0;
- if (self->decorations & OB_FRAME_DECOR_BORDER) {
+ if (self->decorations & OB_FRAME_DECOR_BORDER &&
+ !self->client->undecorated)
+ {
self->cbwidth_l = self->cbwidth_r = ob_rr_theme->cbwidthx;
self->cbwidth_t = self->cbwidth_b = ob_rr_theme->cbwidthy;
} else
STRUT_SET(self->size,
self->cbwidth_l + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_t +
- (!self->max_horz || !self->max_vert ||
- !self->client->undecorated ? self->bwidth : 0),
+ (!self->max_horz || !self->max_vert ? self->bwidth : 0),
self->cbwidth_r + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_b +
(!self->max_horz || !self->max_vert ? self->bwidth : 0));