-#if 0
- if (client == NULL) {
- DLOG("not a managed window. Ignoring.\n");
-
- /* This was most likely the destroyed frame of a client which is
- * currently being unmapped, so we add this sequence (again!) to
- * the ignore list (enter_notify events will get sent for both,
- * the child and its frame). */
- add_ignore_event(event->sequence);
-
- return 0;
- }
-#endif
-
-
-#if 0
- /* Let’s see how many clients there are left on the workspace to delete it if it’s empty */
- bool workspace_empty = SLIST_EMPTY(&(client->workspace->focus_stack));
- bool workspace_focused = (c_ws == client->workspace);
- Client *to_focus = (!workspace_empty ? SLIST_FIRST(&(client->workspace->focus_stack)) : NULL);
-
- /* If this workspace is currently visible, we don’t delete it */
- if (workspace_is_visible(client->workspace))
- workspace_empty = false;
-
- if (workspace_empty) {
- client->workspace->output = NULL;
- ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"empty\"}");
- }
-
- /* Remove the urgency flag if set */
- client->urgent = false;
- workspace_update_urgent_flag(client->workspace);
-
- render_layout(conn);
-#endif
-
- return 1;
+ignore_end:
+ /* If the client (as opposed to i3) destroyed or unmapped a window, an
+ * EnterNotify event will follow (indistinguishable from an EnterNotify
+ * event caused by moving your mouse), causing i3 to set focus to whichever
+ * window is now visible.
+ *
+ * In a complex stacked or tabbed layout (take two v-split containers in a
+ * tabbed container), when the bottom window in tab2 is closed, the bottom
+ * window of tab1 is visible instead. X11 will thus send an EnterNotify
+ * event for the bottom window of tab1, while the focus should be set to
+ * the remaining window of tab2.
+ *
+ * Therefore, we ignore all EnterNotify events which have the same sequence
+ * as an UnmapNotify event. */
+ add_ignore_event(event->sequence, XCB_ENTER_NOTIFY);
+
+ /* Since we just ignored the sequence of this UnmapNotify, we want to make
+ * sure that following events use a different sequence. When putting xterm
+ * into fullscreen and moving the pointer to a different window, without
+ * using GetInputFocus, subsequent (legitimate) EnterNotify events arrived
+ * with the same sequence and thus were ignored (see ticket #609). */
+ free(xcb_get_input_focus_reply(conn, cookie, NULL));