[Spice-devel] [PATCH spice-gtk 3/5] gtk: Avoid deprecated gdk_keyboard_grab
Frediano Ziglio
fziglio at redhat.com
Mon Dec 19 09:29:27 UTC 2016
>
> ---
> src/spice-widget.c | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/src/spice-widget.c b/src/spice-widget.c
> index a3d6526..cedc358 100644
> --- a/src/spice-widget.c
> +++ b/src/spice-widget.c
> @@ -119,6 +119,9 @@ static void release_keys(SpiceDisplay *display);
> static void size_allocate(GtkWidget *widget, GtkAllocation *conf, gpointer
> data);
> static gboolean draw_event(GtkWidget *widget, cairo_t *cr, gpointer data);
> static void update_size_request(SpiceDisplay *display);
> +#if GTK_CHECK_VERSION(3, 20, 0)
> +static GdkSeat *spice_display_get_default_seat(SpiceDisplay *display);
> +#endif
>
> /* ---------------------------------------------------------------- */
>
> @@ -811,9 +814,6 @@ SpiceGrabSequence
> *spice_display_get_grab_keys(SpiceDisplay *display)
> return d->grabseq;
> }
>
> -/* FIXME: gdk_keyboard_grab/ungrab() is deprecated */
> -G_GNUC_BEGIN_IGNORE_DEPRECATIONS
> -
> static void try_keyboard_grab(SpiceDisplay *display)
> {
> GtkWidget *widget = GTK_WIDGET(display);
> @@ -849,8 +849,21 @@ static void try_keyboard_grab(SpiceDisplay *display)
> GetModuleHandle(NULL), 0);
> g_warn_if_fail(d->keyboard_hook != NULL);
> #endif
> +#if GTK_CHECK_VERSION(3, 20, 0)
> + G_GNUC_BEGIN_IGNORE_DEPRECATIONS
The ignore deprecations should be on older code, not new one.
> + status = gdk_seat_grab(spice_display_get_default_seat(display),
> + gtk_widget_get_window(widget),
> + GDK_SEAT_CAPABILITY_KEYBOARD,
> + FALSE,
> + NULL,
> + NULL,
> + NULL,
> + NULL);
> + G_GNUC_END_IGNORE_DEPRECATIONS
> +#else
> status = gdk_keyboard_grab(gtk_widget_get_window(widget), FALSE,
> GDK_CURRENT_TIME);
> +#endif
> if (status != GDK_GRAB_SUCCESS) {
> g_warning("keyboard grab failed %u", status);
> d->keyboard_grab_active = false;
> @@ -869,7 +882,13 @@ static void try_keyboard_ungrab(SpiceDisplay *display)
> return;
>
> SPICE_DEBUG("ungrab keyboard");
> +#if GTK_CHECK_VERSION(3, 20, 0)
> + G_GNUC_BEGIN_IGNORE_DEPRECATIONS
> + gdk_seat_ungrab(spice_display_get_default_seat(display));
> + G_GNUC_END_IGNORE_DEPRECATIONS
> +#else
> gdk_keyboard_ungrab(GDK_CURRENT_TIME);
> +#endif
I would prefer something like glib-compat.h in spice-server.
> #ifdef G_OS_WIN32
> // do not use g_clear_pointer as Windows API have different linkage
> if (d->keyboard_hook) {
> @@ -880,7 +899,6 @@ static void try_keyboard_ungrab(SpiceDisplay *display)
> d->keyboard_grab_active = false;
> g_signal_emit(widget, signals[SPICE_DISPLAY_KEYBOARD_GRAB], 0, false);
> }
> -G_GNUC_END_IGNORE_DEPRECATIONS
>
>
> static void update_keyboard_grab(SpiceDisplay *display)
Frediano
More information about the Spice-devel
mailing list