display: Fix logic for determining whether our focus was successful
In some cases, we can focus the frame window instead of the client window, so make sure that our checks include that as well. https://bugzilla.gnome.org/show_bug.cgi?id=715030
This commit is contained in:
parent
ba3968a822
commit
eec0f5df47
@ -1941,6 +1941,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;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_display_handle_event (MetaDisplay *display,
|
||||
const ClutterEvent *event)
|
||||
@ -2929,7 +2942,7 @@ meta_display_handle_xevent (MetaDisplay *display,
|
||||
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user