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:
Jasper St. Pierre 2013-11-22 12:45:27 -05:00
parent b8938e9d4d
commit f0bc53ce5a

View File

@ -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_callback:
* @event: The event that just happened * @event: The event that just happened
@ -2182,7 +2195,7 @@ event_callback (XEvent *event,
if (event->xany.serial > display->focus_serial && if (event->xany.serial > display->focus_serial &&
display->focus_window && 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", meta_topic (META_DEBUG_FOCUS, "Earlier attempt to focus %s failed\n",
display->focus_window->desc); display->focus_window->desc);