Ignore UnmapNotify events generated by reparenting

This commit is contained in:
Michael Stapelberg 2010-05-14 23:37:56 +02:00
parent 7adf921bc3
commit 8c5d824fa8
2 changed files with 9 additions and 0 deletions

View File

@ -451,11 +451,17 @@ int handle_screen_change(void *prophs, xcb_connection_t *conn,
*/ */
int handle_unmap_notify_event(void *data, xcb_connection_t *conn, xcb_unmap_notify_event_t *event) { int handle_unmap_notify_event(void *data, xcb_connection_t *conn, xcb_unmap_notify_event_t *event) {
bool ignored = event_is_ignored(event->sequence);
/* we need to ignore EnterNotify events which will be generated because a /* we need to ignore EnterNotify events which will be generated because a
* different window is visible now */ * different window is visible now */
add_ignore_event(event->sequence); add_ignore_event(event->sequence);
DLOG("UnmapNotify for 0x%08x (received from 0x%08x), serial %d\n", event->window, event->event, event->sequence); DLOG("UnmapNotify for 0x%08x (received from 0x%08x), serial %d\n", event->window, event->event, event->sequence);
if (ignored) {
DLOG("Ignoring UnmapNotify (generated by reparenting)\n");
return 1;
}
Con *con = con_by_window_id(event->window); Con *con = con_by_window_id(event->window);
if (con == NULL) { if (con == NULL) {
LOG("Not a managed window, ignoring\n"); LOG("Not a managed window, ignoring\n");

View File

@ -171,6 +171,9 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
goto out; goto out;
} }
LOG("ignoring sequence %d for reparenting!\n", rcookie.sequence);
add_ignore_event(rcookie.sequence);
xcb_get_property_reply_t *reply = xcb_get_property_reply(conn, state_cookie, NULL); xcb_get_property_reply_t *reply = xcb_get_property_reply(conn, state_cookie, NULL);
if (xcb_reply_contains_atom(reply, atoms[_NET_WM_STATE_FULLSCREEN])) if (xcb_reply_contains_atom(reply, atoms[_NET_WM_STATE_FULLSCREEN]))
con_toggle_fullscreen(nc); con_toggle_fullscreen(nc);