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.
This commit is contained in:
@ -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)
|
||||
/* 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 &&
|
||||
(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;
|
||||
|
||||
if (!grab_input_seat)
|
||||
grab_input_seat = parent->grab_input_seat;
|
||||
|
||||
wl_shell_surface_set_popup (impl->shell_surface,
|
||||
grab_input_seat,
|
||||
|
||||
Reference in New Issue
Block a user