From c10b3d46e24d505162b9c4504115a7757cd23b16 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 15 Sep 2008 11:37:12 +0000 Subject: [PATCH] 2008-09-15 Emmanuele Bassi Bug 1114 - Mouse wheel events ignored in GtkClutterEmbed * clutter-gtk/gtk-clutter-embed.c: (gtk_clutter_embed_scroll_event), (gtk_clutter_embed_class_init): Add relaying of the scroll events from GTK+ to Clutter. (Pierre-Luc Beaudoin) --- ChangeLog | 9 +++++++++ clutter-gtk/gtk-clutter-embed.c | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7f308a8..26c0dc2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-09-15 Emmanuele Bassi + + Bug 1114 - Mouse wheel events ignored in GtkClutterEmbed + + * clutter-gtk/gtk-clutter-embed.c: + (gtk_clutter_embed_scroll_event), + (gtk_clutter_embed_class_init): Add relaying of the scroll + events from GTK+ to Clutter. (Pierre-Luc Beaudoin) + 2008-08-05 Emmanuele Bassi * clutter-gtk/gtk-clutter-embed.c: diff --git a/clutter-gtk/gtk-clutter-embed.c b/clutter-gtk/gtk-clutter-embed.c index cc1ce5f..b64bbf7 100644 --- a/clutter-gtk/gtk-clutter-embed.c +++ b/clutter-gtk/gtk-clutter-embed.c @@ -338,6 +338,31 @@ gtk_clutter_embed_focus_out (GtkWidget *widget, return FALSE; } +static gboolean +gtk_clutter_embed_scroll_event (GtkWidget *widget, + GdkEventScroll *event) +{ + GtkClutterEmbedPrivate *priv = GTK_CLUTTER_EMBED (widget)->priv; + + ClutterEvent cevent = { 0, }; + + if (event->type == GDK_SCROLL) + cevent.type = cevent.scroll.type = CLUTTER_SCROLL; + else + return FALSE; + + cevent.any.stage = CLUTTER_STAGE (priv->stage); + cevent.scroll.x = (gint) event->x; + cevent.scroll.y = (gint) event->y; + cevent.scroll.time = event->time; + cevent.scroll.direction = event->direction; + cevent.scroll.modifier_state = event->state; + + clutter_do_event (&cevent); + + return FALSE; +} + static void gtk_clutter_embed_class_init (GtkClutterEmbedClass *klass) { @@ -360,6 +385,7 @@ gtk_clutter_embed_class_init (GtkClutterEmbedClass *klass) widget_class->expose_event = gtk_clutter_embed_expose_event; widget_class->map_event = gtk_clutter_embed_map_event; widget_class->focus_out_event = gtk_clutter_embed_focus_out; + widget_class->scroll_event = gtk_clutter_embed_scroll_event; } static void -- 1.7.9.5