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(obt_display, self->window, ShapeBounding,
+ XShapeCombineMask(obt_display, self->window, kind,
self->size.left,
self->size.top,
None, ShapeSet);
} else {
/* make the frame's shape match the clients */
- XShapeCombineShape(obt_display, self->window, ShapeBounding,
+ XShapeCombineShape(obt_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) {
ShapeBounding, 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->shaded = self->client->shaded;
if (self->decorations & OB_FRAME_DECOR_BORDER ||
- (self->client->undecorated && config_theme_keepborder))
+ (self->client->undecorated && config_theme_keepborder
+ && !self->client->fullscreen))
self->bwidth = ob_rr_theme->fbwidth;
else
self->bwidth = 0;
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self->client)
- focus_cycle_draw_indicator(self->client);
+ focus_cycle_update_indicator(self->client);
}
if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
XResizeWindow(obt_display, self->label, self->label_width,