From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WVLAM-0007x7-HL for qemu-devel@nongnu.org; Wed, 02 Apr 2014 09:25:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WVLAH-0001MD-Rh for qemu-devel@nongnu.org; Wed, 02 Apr 2014 09:25:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:3302) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WVLAH-0001Li-Ht for qemu-devel@nongnu.org; Wed, 02 Apr 2014 09:25:13 -0400 Message-ID: <533C0FB3.3030909@redhat.com> Date: Wed, 02 Apr 2014 09:25:07 -0400 From: Cole Robinson MIME-Version: 1.0 References: <1396441953-19260-1-git-send-email-tiwai@suse.de> <1396441953-19260-2-git-send-email-tiwai@suse.de> In-Reply-To: <1396441953-19260-2-git-send-email-tiwai@suse.de> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 1/4] gtk: Use gtk generic event signal instead of motion-notify-event List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Takashi Iwai , qemu-devel@nongnu.org Cc: kraxel@redhat.com, Anthony Liguori 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 > --- > 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 Reviewed-by: Cole Robinson Thanks, Cole