diff --git a/src/core/display.c b/src/core/display.c index f9282deba..036de1e02 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -1719,6 +1719,8 @@ event_callback (XEvent *event, if (meta_input_event_get_type (display, event, &evtype)) { + Window xwindow = meta_input_event_get_window (display, event); + if (window && !window->override_redirect && ((evtype == KeyPress) || (evtype == ButtonPress))) { @@ -1781,7 +1783,7 @@ event_callback (XEvent *event, meta_topic (META_DEBUG_WINDOW_OPS, "Syncing to old stack positions.\n"); screen = - meta_display_screen_for_root (display, event->xany.window); + meta_display_screen_for_root (display, xwindow); if (screen!=NULL) meta_stack_set_positions (screen->stack, @@ -1984,8 +1986,9 @@ event_callback (XEvent *event, * actually appear on the right screen. */ { + Window xroot = meta_input_event_get_root_window (display, event); MetaScreen *new_screen = - meta_display_screen_for_root (display, event->xcrossing.root); + meta_display_screen_for_root (display, xroot); if (new_screen != NULL && display->active_screen != new_screen) meta_workspace_focus_default_window (new_screen->active_workspace, @@ -2085,8 +2088,7 @@ event_callback (XEvent *event, { meta_window_notify_focus (window, event); } - else if (meta_display_xwindow_is_a_no_focus_window (display, - event->xany.window)) + else if (meta_display_xwindow_is_a_no_focus_window (display, xwindow)) { meta_topic (META_DEBUG_FOCUS, "Focus %s event received on no_focus_window 0x%lx " @@ -2094,15 +2096,15 @@ event_callback (XEvent *event, evtype == FocusIn ? "in" : evtype == FocusOut ? "out" : "???", - event->xany.window, + xwindow, meta_event_mode_to_string (event->xfocus.mode), meta_event_detail_to_string (event->xfocus.detail)); } else { MetaScreen *screen = - meta_display_screen_for_root(display, - event->xany.window); + meta_display_screen_for_root(display, xwindow); + if (screen == NULL) break; @@ -2112,7 +2114,7 @@ event_callback (XEvent *event, evtype == FocusIn ? "in" : evtype == FocusOut ? "out" : "???", - event->xany.window, + xwindow, meta_event_mode_to_string (event->xfocus.mode), meta_event_detail_to_string (event->xfocus.detail));