break;
}
case UnmapNotify:
+ /* Don't care about the frame window unmapping */
+ if (e->xunmap.window != client->window) break;
+
+ /*
ob_debug("UnmapNotify for window 0x%x eventwin 0x%x sendevent %d "
"ignores left %d",
client->window, e->xunmap.event, e->xunmap.from_configure,
client->ignore_unmaps);
+ */
if (client->ignore_unmaps) {
client->ignore_unmaps--;
break;
this occurs from a MapRequest. However, in the case where Openbox is
starting up, the window is already mapped, so we'll see an unmap event
for it.
+
+ We also have to ignore a second UnmapNotify because we have
+ selected for SubstructureNotify on root. For whatever good reason, this
+ means we get 2 UnmapNotify events.
*/
if (ob_state() == OB_STATE_STARTING)
- ++self->client->ignore_unmaps;
+ self->client->ignore_unmaps += 2;
/* select the event mask on the client's parent (to receive config/map
req's) the ButtonPress is to catch clicks on the client border */
#define ROOT_EVENTMASK (StructureNotifyMask | PropertyChangeMask | \
EnterWindowMask | LeaveWindowMask | \
SubstructureRedirectMask | FocusChangeMask | \
- ButtonPressMask | ButtonReleaseMask)
+ ButtonPressMask | ButtonReleaseMask | \
+ SubstructureNotifyMask)
static gboolean screen_validate_layout(ObDesktopLayout *l);
static gboolean replace_wm(void);