focusin to the root window happens on both monitors when a focused window unmaps... boo...

This commit is contained in:
Dana Jansens 2007-04-22 20:27:13 +00:00
parent eb1cd9cc49
commit afd88015b5

View file

@ -454,23 +454,7 @@ static void event_process(const XEvent *ec, gpointer data)
/* crossing events for menu */ /* crossing events for menu */
event_handle_menu(e); event_handle_menu(e);
} else if (e->type == FocusIn) { } else if (e->type == FocusIn) {
if (e->xfocus.detail == NotifyPointerRoot || if (client && client != focus_client) {
e->xfocus.detail == NotifyDetailNone) {
ob_debug_type(OB_DEBUG_FOCUS, "Focus went to root\n");
/* Focus has been reverted to the root window or nothing
FocusOut events come after UnmapNotify, so we don't need to
worry about focusing an invalid window
*/
focus_fallback(TRUE);
} else if (e->xfocus.detail == NotifyInferior) {
ob_debug_type(OB_DEBUG_FOCUS, "Focus went to parent\n");
/* Focus has been reverted to parent, which is our frame window,
or the root window
FocusOut events come after UnmapNotify, so we don't need to
worry about focusing an invalid window
*/
focus_fallback(TRUE);
} else if (client && client != focus_client) {
frame_adjust_focus(client->frame, TRUE); frame_adjust_focus(client->frame, TRUE);
focus_set_client(client); focus_set_client(client);
client_calc_layer(client); client_calc_layer(client);
@ -491,6 +475,15 @@ static void event_process(const XEvent *ec, gpointer data)
} else if (ce.xany.window == e->xany.window) { } else if (ce.xany.window == e->xany.window) {
/* If focus didn't actually move anywhere, there is nothing to do*/ /* If focus didn't actually move anywhere, there is nothing to do*/
nomove = TRUE; nomove = TRUE;
} else if (ce.xfocus.detail == NotifyPointerRoot ||
ce.xfocus.detail == NotifyDetailNone ||
ce.xfocus.detail == NotifyInferior) {
ob_debug_type(OB_DEBUG_FOCUS, "Focus went to root\n");
/* Focus has been reverted to the root window or nothing
FocusOut events come after UnmapNotify, so we don't need to
worry about focusing an invalid window
*/
focus_fallback(TRUE);
} else { } else {
/* Focus did move, so process the FocusIn event */ /* Focus did move, so process the FocusIn event */
ObEventData ed = { .ignored = FALSE }; ObEventData ed = { .ignored = FALSE };