From: Michael Stapelberg Date: Fri, 14 May 2010 21:37:56 +0000 (+0200) Subject: Ignore UnmapNotify events generated by reparenting X-Git-Tag: tree-pr1~216 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;ds=sidebyside;h=8c5d824fa8f321606560dee0be75894d46901328;p=i3%2Fi3 Ignore UnmapNotify events generated by reparenting --- diff --git a/src/handlers.c b/src/handlers.c index 4921fdea..ecaba219 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -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) { + bool ignored = event_is_ignored(event->sequence); + /* we need to ignore EnterNotify events which will be generated because a * different window is visible now */ add_ignore_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); if (con == NULL) { LOG("Not a managed window, ignoring\n"); diff --git a/src/manage.c b/src/manage.c index b1b9e9d6..7983baac 100644 --- a/src/manage.c +++ b/src/manage.c @@ -171,6 +171,9 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki 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); if (xcb_reply_contains_atom(reply, atoms[_NET_WM_STATE_FULLSCREEN])) con_toggle_fullscreen(nc);