wayland: Ensure wl_shell_surfaces are set reactive

Wayland clients using the wl_shell interface were never receiving mouse
input. It meant they also couldn't be raised with a click.

This was because the call to meta_wayland_surface_set_window for wl_shell
surfaces did nothing while surface->window == window already. As such, it
never called clutter_actor_set_reactive() and the wl_shell window remained
a non-reactive actor.

Just make sure surface->window isn't already set before calling
meta_wayland_surface_set_window so it can actually do what it's meant to.

https://bugzilla.gnome.org/show_bug.cgi?id=790309
This commit is contained in:
Daniel van Vugt 2018-01-05 17:47:41 +08:00 committed by Marco Trevisan (Treviño)
parent 0bd1d7cf09
commit 294cceaeb8

View File

@ -474,10 +474,11 @@ create_wl_shell_surface_window (MetaWaylandSurface *surface)
MetaWaylandWlShellSurface *wl_shell_surface = MetaWaylandWlShellSurface *wl_shell_surface =
META_WAYLAND_WL_SHELL_SURFACE (surface->role); META_WAYLAND_WL_SHELL_SURFACE (surface->role);
MetaWaylandSurface *parent; MetaWaylandSurface *parent;
MetaWindow *window;
GList *l; GList *l;
surface->window = meta_window_wayland_new (meta_get_display (), surface); window = meta_window_wayland_new (meta_get_display (), surface);
meta_wayland_surface_set_window (surface, surface->window); meta_wayland_surface_set_window (surface, window);
if (wl_shell_surface->title) if (wl_shell_surface->title)
meta_window_set_title (surface->window, wl_shell_surface->title); meta_window_set_title (surface->window, wl_shell_surface->title);