Message ID | 1396441953-19260-2-git-send-email-tiwai@suse.de |
---|---|
State | New |
Headers | show |
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 <tiwai@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 <crobinso@redhat.com> Reviewed-by: Cole Robinson <crobinso@redhat.com> Thanks, Cole
On Mi, 2014-04-02 at 14:32 +0200, Takashi Iwai wrote: > +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; > +} Fails checkpatch: WARNING: braces {} are necessary for all arms of this statement #12: FILE: ui/gtk.c:771: + if (event->type == GDK_MOTION_NOTIFY) [...] total: 0 errors, 1 warnings, 23 lines checked cheers, Gerd
At Wed, 02 Apr 2014 17:17:54 +0200, Gerd Hoffmann wrote: > > On Mi, 2014-04-02 at 14:32 +0200, Takashi Iwai wrote: > > +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; > > +} > > Fails checkpatch: > > WARNING: braces {} are necessary for all arms of this statement > #12: FILE: ui/gtk.c:771: > + if (event->type == GDK_MOTION_NOTIFY) > [...] > > total: 0 errors, 1 warnings, 23 lines checked OK, you guys have a different checkpatch bible than the kernel tree :) I'll tidy up later, if the patch is really acceptable. thanks, Takashi
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",
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 <tiwai@suse.de> --- ui/gtk.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)