[mutter/wip/carlosg/fix-net-active-window] x11: Minor refactor of input focus handling code
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/fix-net-active-window] x11: Minor refactor of input focus handling code
- Date: Thu, 5 Sep 2019 14:07:41 +0000 (UTC)
commit b7e16b744a0fba70a70dd18d1ce2e4e2efcf786a
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Sep 5 13:17:21 2019 +0200
x11: Minor refactor of input focus handling code
Instead of open coding the X11 focus management in display.c, expose
it as a single function with similar arguments to its MetaDisplay
counterpart. This just means less X11 specifics in display.c.
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/751
src/core/display.c | 19 ++-----------------
src/x11/meta-x11-display-private.h | 6 +++---
src/x11/meta-x11-display.c | 33 +++++++++++++++++++++++++++------
3 files changed, 32 insertions(+), 26 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index e803f5557..d9ce6668a 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1361,23 +1361,8 @@ meta_display_set_input_focus (MetaDisplay *display,
if (display->x11_display)
{
- MetaX11Display *x11_display = display->x11_display;
- Window xwindow;
- gulong serial;
-
- meta_x11_error_trap_push (x11_display);
-
- if (window)
- xwindow = focus_frame ? window->frame->xwindow : window->xwindow;
- else
- xwindow = x11_display->no_focus_window;
-
- meta_x11_display_set_input_focus (x11_display, xwindow, timestamp);
- serial = XNextRequest (x11_display->xdisplay);
-
- meta_x11_display_update_focus_window (x11_display, xwindow, serial, TRUE);
-
- meta_x11_error_trap_pop (display->x11_display);
+ meta_x11_display_set_input_focus (display->x11_display, window,
+ focus_frame, timestamp);
}
meta_display_update_focus_window (display, window);
diff --git a/src/x11/meta-x11-display-private.h b/src/x11/meta-x11-display-private.h
index 92951844e..7c61d7b0d 100644
--- a/src/x11/meta-x11-display-private.h
+++ b/src/x11/meta-x11-display-private.h
@@ -224,7 +224,6 @@ void meta_x11_display_create_guard_window (MetaX11Display *x11_display);
/* make a request to ensure the event serial has changed */
void meta_x11_display_increment_event_serial (MetaX11Display *x11_display);
-void meta_x11_display_update_active_window_hint (MetaX11Display *x11_display);
guint32 meta_x11_display_get_current_time_roundtrip (MetaX11Display *x11_display);
@@ -250,8 +249,9 @@ void meta_x11_display_update_focus_window (MetaX11Display *x11_display,
gulong serial,
gboolean focused_by_us);
void meta_x11_display_set_input_focus (MetaX11Display *x11_display,
- Window xwindow,
- guint32 timestamp);
+ MetaWindow *window,
+ gboolean focus_frame,
+ uint32_t timestamp);
const gchar * meta_x11_get_display_name (void);
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
index 5f2e71c44..77283d323 100644
--- a/src/x11/meta-x11-display.c
+++ b/src/x11/meta-x11-display.c
@@ -1825,7 +1825,7 @@ meta_x11_display_increment_event_serial (MetaX11Display *x11_display)
x11_display->atom__MOTIF_WM_HINTS);
}
-void
+static void
meta_x11_display_update_active_window_hint (MetaX11Display *x11_display)
{
MetaWindow *focus_window;
@@ -1867,10 +1867,10 @@ meta_x11_display_update_focus_window (MetaX11Display *x11_display,
meta_x11_display_update_active_window_hint (x11_display);
}
-void
-meta_x11_display_set_input_focus (MetaX11Display *x11_display,
- Window xwindow,
- guint32 timestamp)
+static void
+meta_x11_display_set_input_focus_internal (MetaX11Display *x11_display,
+ Window xwindow,
+ uint32_t timestamp)
{
meta_x11_error_trap_push (x11_display);
@@ -1900,6 +1900,27 @@ meta_x11_display_set_input_focus (MetaX11Display *x11_display,
meta_x11_error_trap_pop (x11_display);
}
+void
+meta_x11_display_set_input_focus (MetaX11Display *x11_display,
+ MetaWindow *window,
+ gboolean focus_frame,
+ uint32_t timestamp)
+{
+ Window xwindow;
+ gulong serial;
+
+ if (window)
+ xwindow = focus_frame ? window->frame->xwindow : window->xwindow;
+ else
+ xwindow = x11_display->no_focus_window;
+
+ meta_x11_error_trap_push (x11_display);
+ meta_x11_display_set_input_focus_internal (x11_display, xwindow, timestamp);
+ serial = XNextRequest (x11_display->xdisplay);
+ meta_x11_display_update_focus_window (x11_display, xwindow, serial, TRUE);
+ meta_x11_error_trap_pop (x11_display);
+}
+
void
meta_x11_display_set_input_focus_xwindow (MetaX11Display *x11_display,
Window window,
@@ -1909,7 +1930,7 @@ meta_x11_display_set_input_focus_xwindow (MetaX11Display *x11_display,
meta_display_unset_input_focus (x11_display->display, timestamp);
serial = XNextRequest (x11_display->xdisplay);
- meta_x11_display_set_input_focus (x11_display, window, timestamp);
+ meta_x11_display_set_input_focus_internal (x11_display, window, timestamp);
meta_x11_display_update_focus_window (x11_display, window, serial, TRUE);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]