]> Pileus Git - ~andy/gtk/commitdiff
wayland: Fallback to setting transient windows if no seat available
authorRob Bradford <rob@linux.intel.com>
Wed, 18 Jul 2012 15:16:56 +0000 (16:16 +0100)
committerRob Bradford <rob@linux.intel.com>
Wed, 18 Jul 2012 15:16:56 +0000 (16:16 +0100)
If we don't have a wl_seat - because a grab hasn't been initialised by GTK+
then fallback to making the shell surface transient to the parent rather than
a popup surface.

gdk/wayland/gdkwindow-wayland.c

index f2b7bf3cb1be126cea07ed6190f40d9a9b258c6b..fad879eafd262a90214b35947a04375c201e331c 100644 (file)
@@ -633,23 +633,25 @@ gdk_wayland_window_map (GdkWindow *window)
     {
       if (impl->transient_for)
         {
+          struct wl_seat *grab_input_seat = NULL;
+
           parent = GDK_WINDOW_IMPL_WAYLAND (impl->transient_for->impl);
 
-          if (impl->hint == GDK_WINDOW_TYPE_HINT_POPUP_MENU ||
-              impl->hint == GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU ||
-              impl->hint == GDK_WINDOW_TYPE_HINT_COMBO)
-            {
-              struct wl_seat *grab_input_seat = NULL;
+          /* Use the device that was used for the grab as the device for
+           * the popup window setup - so this relies on GTK+ taking the
+           * grab before showing the popup window.
+           */
+          if (impl->grab_input_seat)
+            grab_input_seat = impl->grab_input_seat;
 
-              /* Use the device that was used for the grab as the device for
-               * the popup window setup - so this relies on GTK+ taking the
-               * grab before showing the popup window.
-               */
-              if (impl->grab_input_seat)
-                grab_input_seat = impl->grab_input_seat;
+          if (!grab_input_seat)
+            grab_input_seat = parent->grab_input_seat;
 
-              if (!grab_input_seat)
-                grab_input_seat = parent->grab_input_seat;
+          if (grab_input_seat &&
+              (impl->hint == GDK_WINDOW_TYPE_HINT_POPUP_MENU ||
+               impl->hint == GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU ||
+               impl->hint == GDK_WINDOW_TYPE_HINT_COMBO))
+            {
 
               wl_shell_surface_set_popup (impl->shell_surface,
                                           grab_input_seat,