diff --git a/src/core/display.c b/src/core/display.c index 33ebc7b61..b89f43059 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -2127,6 +2127,19 @@ handle_window_focus_event (MetaDisplay *display, } } +static gboolean +window_has_xwindow (MetaWindow *window, + Window xwindow) +{ + if (window->xwindow == xwindow) + return TRUE; + + if (window->frame && window->frame->xwindow == xwindow) + return TRUE; + + return FALSE; +} + /** * event_callback: * @event: The event that just happened @@ -2182,7 +2195,7 @@ event_callback (XEvent *event, if (event->xany.serial > display->focus_serial && display->focus_window && - display->focus_window->xwindow != display->server_focus_window) + !window_has_xwindow (display->focus_window, display->server_focus_window)) { meta_topic (META_DEBUG_FOCUS, "Earlier attempt to focus %s failed\n", display->focus_window->desc);