mirror of
https://github.com/brl/mutter.git
synced 2025-08-06 16:44:40 +00:00
display: clean up focus_window vs expected_focus_window
Mutter previously defined display->focus_window as the window that the server says is focused, but kept display->expected_focus_window to indicate the window that we have requested to be focused. But it turns out that "expected_focus_window" was almost always what we wanted. Make MetaDisplay do a better job of tracking focus-related requests and events, and change display->focus_window to be our best guess of the "currently" focused window (ie, the window that will be focused at the time when the server processes the next request we send it). https://bugzilla.gnome.org/show_bug.cgi?id=647706
This commit is contained in:

committed by
Jasper St. Pierre

parent
4f1d62170b
commit
7a4c808e43
@@ -103,19 +103,17 @@ struct _MetaDisplay
|
||||
#include <meta/atomnames.h>
|
||||
#undef item
|
||||
|
||||
/* This is the actual window from focus events,
|
||||
* not the one we last set
|
||||
/* The window and serial of the most recent FocusIn event. */
|
||||
Window server_focus_window;
|
||||
gulong server_focus_serial;
|
||||
|
||||
/* Our best guess as to the "currently" focused window (that is, the
|
||||
* window that we expect will be focused at the point when the X
|
||||
* server processes our next request), and the serial of the request
|
||||
* or event that caused this.
|
||||
*/
|
||||
MetaWindow *focus_window;
|
||||
|
||||
/* window we are expecting a FocusIn event for or the current focus
|
||||
* window if we are not expecting any FocusIn/FocusOut events; not
|
||||
* perfect because applications can call XSetInputFocus directly.
|
||||
* (It could also be messed up if a timestamp later than current
|
||||
* time is sent to meta_display_set_input_focus_window, though that
|
||||
* would be a programming error). See bug 154598 for more info.
|
||||
*/
|
||||
MetaWindow *expected_focus_window;
|
||||
gulong focus_serial;
|
||||
|
||||
/* last timestamp passed to XSetInputFocus */
|
||||
guint32 last_focus_time;
|
||||
|
Reference in New Issue
Block a user