summaryrefslogtreecommitdiff
path: root/src/core/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/display.c')
-rw-r--r--src/core/display.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/display.c b/src/core/display.c
index 263c70fd1..d8c44fe44 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1876,11 +1876,12 @@ get_input_event (MetaDisplay *display,
static void
update_focus_window (MetaDisplay *display,
MetaWindow *window,
+ Window xwindow,
gulong serial)
{
display->focus_serial = serial;
- if (window == display->focus_window)
+ if (display->focus_xwindow == xwindow)
return;
if (display->focus_window)
@@ -1897,11 +1898,13 @@ update_focus_window (MetaDisplay *display,
*/
previous = display->focus_window;
display->focus_window = NULL;
+ display->focus_xwindow = None;
meta_window_set_focused_internal (previous, FALSE);
}
display->focus_window = window;
+ display->focus_xwindow = xwindow;
if (display->focus_window)
{
@@ -1991,6 +1994,7 @@ request_xserver_input_focus_change (MetaDisplay *display,
update_focus_window (display,
meta_window,
+ xwindow,
serial);
meta_error_trap_pop (display);
@@ -2107,7 +2111,9 @@ handle_window_focus_event (MetaDisplay *display,
if (display->server_focus_serial >= display->focus_serial)
{
- update_focus_window (display, focus_window,
+ update_focus_window (display,
+ focus_window,
+ focus_window ? focus_window->xwindow : None,
display->server_focus_serial);
}
}
@@ -2163,6 +2169,7 @@ event_callback (XEvent *event,
display->focus_window->desc);
update_focus_window (display,
meta_display_lookup_x_window (display, display->server_focus_window),
+ display->server_focus_window,
display->server_focus_serial);
}