wayland: Use a GdkSeat as key for our internal hash table

With the current implementation, we use a `wl_seat` as the key for our
internal has table where we store the Wayland shortcuts inhibitors.

There is however no technical reason for this, and we could use a
GdkSeat instead, which will ease the implementation of the GdkToplevel
shortcut inhibition API.
This commit is contained in:
Olivier Fourdan 2020-03-27 14:40:52 +01:00
parent a07a69e24e
commit 5ac73be976

View File

@ -4112,9 +4112,9 @@ gdk_wayland_surface_set_transient_for_exported (GdkSurface *surface,
static struct zwp_keyboard_shortcuts_inhibitor_v1 *
gdk_wayland_surface_get_inhibitor (GdkWaylandSurface *impl,
struct wl_seat *seat)
GdkSeat *gdk_seat)
{
return g_hash_table_lookup (impl->shortcuts_inhibitors, seat);
return g_hash_table_lookup (impl->shortcuts_inhibitors, gdk_seat);
}
void
@ -4131,13 +4131,13 @@ gdk_wayland_surface_inhibit_shortcuts (GdkSurface *surface,
return;
if (gdk_wayland_surface_get_inhibitor (impl, seat))
return; /* Already inhibitted */
return; /* Already inhibited */
inhibitor =
zwp_keyboard_shortcuts_inhibit_manager_v1_inhibit_shortcuts (
display->keyboard_shortcuts_inhibit, wl_surface, seat);
g_hash_table_insert (impl->shortcuts_inhibitors, seat, inhibitor);
g_hash_table_insert (impl->shortcuts_inhibitors, gdk_seat, inhibitor);
}
void
@ -4145,15 +4145,14 @@ gdk_wayland_surface_restore_shortcuts (GdkSurface *surface,
GdkSeat *gdk_seat)
{
GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
struct wl_seat *seat = gdk_wayland_seat_get_wl_seat (gdk_seat);
struct zwp_keyboard_shortcuts_inhibitor_v1 *inhibitor;
inhibitor = gdk_wayland_surface_get_inhibitor (impl, seat);
inhibitor = gdk_wayland_surface_get_inhibitor (impl, gdk_seat);
if (inhibitor == NULL)
return; /* Not inhibitted */
zwp_keyboard_shortcuts_inhibitor_v1_destroy (inhibitor);
g_hash_table_remove (impl->shortcuts_inhibitors, seat);
g_hash_table_remove (impl->shortcuts_inhibitors, gdk_seat);
}
GdkSurface *