We won't get an event we recognize is a window if we destroy the window
(such as a MenuFrame going away), as the event will no longer be tracable
to that window.
Also don't redraw on every map/unmap/configurenotify we see, just ones for
the top-level windows.
break;
case MapNotify:
- composite_dirty();
if (e->xmap.window == window_redir(wi)) {
+ composite_dirty();
wi->mapped = TRUE;
pixchange = TRUE;
}
break;
case UnmapNotify:
- composite_dirty();
if (e->xunmap.window == window_top(wi)) {
+ composite_dirty();
wi->mapped = FALSE;
}
break;
e->type == obt_display_extension_shape_basep + ShapeNotify)
{
XShapeEvent *s = (XShapeEvent*)e;
- composite_dirty();
if (s->window == window_redir(wi) && s->kind == ShapeBounding) {
+ composite_dirty();
window_adjust_redir_shape(wi);
}
}
void window_cleanup(ObWindow *self)
{
- if (window_redir(self))
+ if (window_redir(self)) {
composite_window_cleanup(self);
+ /* when the window goes away, we will need to redraw */
+ composite_dirty();
+ }
}
void window_free(ObWindow *self)