[PATCH spice-gtk 3/5] gtk: Avoid deprecated gdk_keyboard_grab

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
 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
+    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
 #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)
-- 
2.11.0

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]