[Spice-devel] [PATCH v2 2/8] gtk: replace configure-event for size-allocate

Victor Toso lists at victortoso.com
Wed Feb 3 18:28:54 CET 2016


On Wed, Feb 03, 2016 at 12:19:35PM -0500, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
> > Hi,
> >
> > On Mon, Jan 11, 2016 at 01:40:40PM +0100, Marc-André Lureau wrote:
> > > For size-allocate, it's simpler to connect to the signal rather than
> > > override the default signal handler since there is no automatic chaining
> > > to parent handler otherwise. Doing this removes the need to have a
> > > window.
> >
> > Not sure if this is 100% correct. The function deals also with
> > grab/ungrab of mouse.
>
> Yes, any issue with that?

My previous assumption was that the size-allocate did not handle the
position change just the size change. That was a wrong assumption.

Acked-by: Victor Toso <victortoso at redhat.com>
(with the removed return)

> 
> > 
> > I think you want to connect to configure-event signal, no?
> 
> No, configure-event is for the window. Here we have no window, the widget size is what matters.
>  
> > > Signed-off-by: Marc-André Lureau <marcandre.lureau at gmail.com>
> > > ---
> > >  src/spice-widget.c | 9 +++------
> > >  1 file changed, 3 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/src/spice-widget.c b/src/spice-widget.c
> > > index 614d93e..77f663f 100644
> > > --- a/src/spice-widget.c
> > > +++ b/src/spice-widget.c
> > > @@ -116,6 +116,7 @@ static void channel_destroy(SpiceSession *s,
> > > SpiceChannel *channel, gpointer dat
> > >  static void cursor_invalidate(SpiceDisplay *display);
> > >  static void update_area(SpiceDisplay *display, gint x, gint y, gint width,
> > >  gint height);
> > >  static void release_keys(SpiceDisplay *display);
> > > +static void size_allocate(GtkWidget *widget, GtkAllocation *conf, gpointer
> > > data);
> > >
> > >  /* ---------------------------------------------------------------- */
> > >
> > > @@ -560,9 +561,9 @@ static void spice_display_init(SpiceDisplay *display)
> > >      gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, &targets, 1,
> > >      GDK_ACTION_COPY);
> > >      g_signal_connect(display, "drag-data-received",
> > >                       G_CALLBACK(drag_data_received_callback), NULL);
> > > +    g_signal_connect(display, "size-allocate", G_CALLBACK(size_allocate),
> > > NULL);
> > >
> > >      gtk_widget_add_events(widget,
> > > -                          GDK_STRUCTURE_MASK |
> > >                            GDK_POINTER_MOTION_MASK |
> > >                            GDK_BUTTON_PRESS_MASK |
> > >                            GDK_BUTTON_RELEASE_MASK |
> > > @@ -577,7 +578,6 @@ static void spice_display_init(SpiceDisplay *display)
> > >      gtk_widget_set_double_buffered(widget, true);
> > >  #endif
> > >      gtk_widget_set_can_focus(widget, true);
> > > -    gtk_widget_set_has_window(widget, true);
> > >      d->grabseq = spice_grab_sequence_new_from_string("Control_L+Alt_L");
> > >      d->activeseq = g_new0(gboolean, d->grabseq->nkeysyms);
> > >
> > > @@ -1746,7 +1746,7 @@ static gboolean button_event(GtkWidget *widget,
> > > GdkEventButton *button)
> > >      return true;
> > >  }
> > >
> > > -static gboolean configure_event(GtkWidget *widget, GdkEventConfigure
> > > *conf)
> > > +static void size_allocate(GtkWidget *widget, GtkAllocation *conf, gpointer
> > > data)
> > >  {
> > >      SpiceDisplay *display = SPICE_DISPLAY(widget);
> > >      SpiceDisplayPrivate *d = display->priv;
> > 
> > The size_allocate function still has a return true that needs to be
> > removed.
> > 
> > Cheers,
> >   toso
> > 
> > > @@ -1771,8 +1771,6 @@ static gboolean configure_event(GtkWidget *widget,
> > > GdkEventConfigure *conf)
> > >          try_mouse_grab(display);
> > >      }
> > >  #endif
> > > -
> > > -    return true;
> > >  }
> 
> And it's removed here.
> 
> > >
> > >  static void update_image(SpiceDisplay *display)
> > > @@ -1826,7 +1824,6 @@ static void
> > > spice_display_class_init(SpiceDisplayClass *klass)
> > >      gtkwidget_class->motion_notify_event = motion_event;
> > >      gtkwidget_class->button_press_event = button_event;
> > >      gtkwidget_class->button_release_event = button_event;
> > > -    gtkwidget_class->configure_event = configure_event;
> > >      gtkwidget_class->scroll_event = scroll_event;
> > >      gtkwidget_class->realize = realize;
> > >      gtkwidget_class->unrealize = unrealize;
> > > --
> > > 2.5.0
> > >
> > > _______________________________________________
> > > Spice-devel mailing list
> > > Spice-devel at lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/spice-devel
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/spice-devel
> > 


More information about the Spice-devel mailing list