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

Pavel Grunt pgrunt at redhat.com
Mon Dec 19 11:31:42 UTC 2016


On Mon, 2016-12-19 at 04:29 -0500, Frediano Ziglio wrote:
> > 
> > ---
> >  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.

Actually it is the opposite, they must be on the code which is
potentially unavailable. The warnings are issued through
GDK_VERSION_MAX_ALLOWED (see configure.ac for more details)

> 
> > +    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

I will consider its resurrection 

Pavel
> 
> >  #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