On 04/02/2014 08:32 AM, Takashi Iwai wrote: > The GDK motion-notify-event isn't generated when the pointer goes out > of the target window even if the pointer is grabbed, which essentially > means to lose the pointer tracking in gtk-ui. > > Meanwhile the generic "event" signal is sent when the pointer is > grabbed, so we can use this and pick the motion notify events manually > there instead. > > Reference: https://bugzilla.novell.com/show_bug.cgi?id=849587 > Signed-off-by: Takashi Iwai <ti...@suse.de> > --- > ui/gtk.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/ui/gtk.c b/ui/gtk.c > index f056e4034b3e..54b835428a28 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -765,6 +765,13 @@ static gboolean gd_key_event(GtkWidget *widget, > GdkEventKey *key, void *opaque) > return TRUE; > } > > +static gboolean gd_event(GtkWidget *widget, GdkEvent *event, void *opaque) > +{ > + if (event->type == GDK_MOTION_NOTIFY) > + return gd_motion_event(widget, &event->motion, opaque); > + return FALSE; > +} > + > /** Window Menu Actions **/ > > static void gd_menu_pause(GtkMenuItem *item, void *opaque) > @@ -1267,8 +1274,8 @@ static void gd_connect_signals(GtkDisplayState *s) > g_signal_connect(s->drawing_area, "expose-event", > G_CALLBACK(gd_expose_event), s); > #endif > - g_signal_connect(s->drawing_area, "motion-notify-event", > - G_CALLBACK(gd_motion_event), s); > + g_signal_connect(s->drawing_area, "event", > + G_CALLBACK(gd_event), s); > g_signal_connect(s->drawing_area, "button-press-event", > G_CALLBACK(gd_button_event), s); > g_signal_connect(s->drawing_area, "button-release-event", >
Tested-by: Cole Robinson <crobi...@redhat.com> Reviewed-by: Cole Robinson <crobi...@redhat.com> Thanks, Cole