[gtk/gtk-3-24: 1/2] a11y: Check X11 display at runtime



commit ffeacd5ae3bd8037b0671644b56da780d5dc85c8
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Mon Dec 10 17:05:53 2018 +0100

    a11y: Check X11 display at runtime
    
    `gtk_widget_accessible_grab_focus()` code checks that X11 isenabled at
    build time and uses X11 specific functions such as
    `gdk_x11_get_server_time()` regardless of the actual backend being used.
    
    Check that we are using an X11 display when X11 is backend enabled, so
    we do not crash when running on Wayland
    
    Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1507

 gtk/a11y/gtkwidgetaccessible.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/gtk/a11y/gtkwidgetaccessible.c b/gtk/a11y/gtkwidgetaccessible.c
index 3b44abaa26..13f22b2eab 100644
--- a/gtk/a11y/gtkwidgetaccessible.c
+++ b/gtk/a11y/gtkwidgetaccessible.c
@@ -642,11 +642,12 @@ gtk_widget_accessible_grab_focus (AtkComponent *component)
   if (gtk_widget_is_toplevel (toplevel))
     {
 #ifdef GDK_WINDOWING_X11
-      gtk_window_present_with_time (GTK_WINDOW (toplevel),
-      gdk_x11_get_server_time (gtk_widget_get_window (widget)));
-#else
-      gtk_window_present (GTK_WINDOW (toplevel));
+      if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (toplevel)))
+        gtk_window_present_with_time (GTK_WINDOW (toplevel),
+                                      gdk_x11_get_server_time (gtk_widget_get_window (widget)));
+      else
 #endif
+        gtk_window_present (GTK_WINDOW (toplevel));
     }
   return TRUE;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]