summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Grunt <pgrunt@redhat.com>2017-02-17 11:24:53 +0100
committerPavel Grunt <pgrunt@redhat.com>2017-02-21 14:36:30 +0100
commit3f4c5bcc88ca5db125ec48ebf696cb23a8e6339a (patch)
tree6f00b153c6622c15e8361a0da4cd81530f0b21e3
parent0f53fa1056394ff8d9bb2d7ab648a3f6b35ae499 (diff)
gtk: Avoid deprecated gdk_keyboard_grab
gdk_keyboard_grab() was deprecated in 3.0 for gdk_device_grab() but that was also deprecated for gdk_seat_grab() in 3.20 Acked-by: Christophe Fergeau <cfergeau@redhat.com>
-rw-r--r--src/spice-widget.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/spice-widget.c b/src/spice-widget.c
index 6d49d08..4433fac 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -819,6 +819,17 @@ SpiceGrabSequence *spice_display_get_grab_keys(SpiceDisplay *display)
return d->grabseq;
}
+#if GTK_CHECK_VERSION(3, 20, 0)
+static GdkSeat *spice_display_get_default_seat(SpiceDisplay *display)
+{
+ GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(display));
+ GdkDisplay *gdk_display = gdk_window_get_display(window);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ return gdk_display_get_default_seat(gdk_display);
+ G_GNUC_END_IGNORE_DEPRECATIONS
+}
+#endif
+
/* FIXME: gdk_keyboard_grab/ungrab() is deprecated */
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -857,8 +868,19 @@ 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)
+ status = gdk_seat_grab(spice_display_get_default_seat(display),
+ gtk_widget_get_window(widget),
+ GDK_SEAT_CAPABILITY_KEYBOARD,
+ FALSE,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+#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;
@@ -877,7 +899,11 @@ static void try_keyboard_ungrab(SpiceDisplay *display)
return;
SPICE_DEBUG("ungrab keyboard");
+#if GTK_CHECK_VERSION(3, 20, 0)
+ gdk_seat_ungrab(spice_display_get_default_seat(display));
+#else
gdk_keyboard_ungrab(GDK_CURRENT_TIME);
+#endif
#ifdef G_OS_WIN32
// do not use g_clear_pointer as Windows API have different linkage
if (d->keyboard_hook) {