[gtk+/composite-templates] wayland: Fallback to setting transient windows if no seat available
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/composite-templates] wayland: Fallback to setting transient windows if no seat available
- Date: Thu, 26 Jul 2012 11:52:57 +0000 (UTC)
commit 702cbd3500729efaf8e0fe9988be7c7e96c5bdac
Author: Rob Bradford <rob linux intel com>
Date: Wed Jul 18 16:16:56 2012 +0100
wayland: Fallback to setting transient windows if no seat available
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 | 28 +++++++++++++++-------------
1 files changed, 15 insertions(+), 13 deletions(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index f2b7bf3..fad879e 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -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,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]