summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@gnome.org>2012-05-11 21:47:54 +0200
committerVincent Untz <vuntz@gnome.org>2012-05-14 16:49:19 +0200
commitde74b83bfdb78af536e71c58fc297a1eb3b7efe0 (patch)
treed616ad0cf36fcfcd6815e9751f23505de1088c7a
parent21538b70a9d493d33021b806f830091591f66815 (diff)
downloadlibwnck-de74b83bfdb78af536e71c58fc297a1eb3b7efe0.tar.gz
pager, selector, tasklist: Fix mouse wheel scrolling with new GTK+
Add the GDK_SCROLL_MASK to the window events, and add dummy handling of GDK_SCROLL_SMOOTH events so as to not crash if they occcur. https://bugzilla.gnome.org/show_bug.cgi?id=673833
-rw-r--r--libwnck/pager.c3
-rw-r--r--libwnck/selector.c5
-rw-r--r--libwnck/tasklist.c6
3 files changed, 14 insertions, 0 deletions
diff --git a/libwnck/pager.c b/libwnck/pager.c
index 91b6a70..d7c1f3e 100644
--- a/libwnck/pager.c
+++ b/libwnck/pager.c
@@ -365,6 +365,7 @@ wnck_pager_realize (GtkWidget *widget)
attributes.visual = gtk_widget_get_visual (widget);
attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
+ GDK_SCROLL_MASK |
GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK;
@@ -2094,6 +2095,8 @@ wnck_pager_scroll_event (GtkWidget *widget,
if (event->type != GDK_SCROLL)
return FALSE;
+ if (event->direction == GDK_SCROLL_SMOOTH)
+ return FALSE;
absolute_direction = event->direction;
diff --git a/libwnck/selector.c b/libwnck/selector.c
index df5dc34..cbac32a 100644
--- a/libwnck/selector.c
+++ b/libwnck/selector.c
@@ -1085,6 +1085,9 @@ wnck_selector_scroll_event (GtkWidget *widget,
/* We ignore LEFT and RIGHT scroll events. */
break;
+ case GDK_SCROLL_SMOOTH:
+ break;
+
default:
g_assert_not_reached ();
}
@@ -1246,6 +1249,8 @@ wnck_selector_init (WnckSelector *selector)
selector->priv->window_hash = NULL;
selector->priv->size = -1;
+
+ gtk_widget_add_events (GTK_WIDGET (selector), GDK_SCROLL_MASK);
}
static void
diff --git a/libwnck/tasklist.c b/libwnck/tasklist.c
index 0ce0031..f280701 100644
--- a/libwnck/tasklist.c
+++ b/libwnck/tasklist.c
@@ -672,6 +672,8 @@ wnck_tasklist_init (WnckTasklist *tasklist)
atk_obj = gtk_widget_get_accessible (widget);
atk_object_set_name (atk_obj, _("Window List"));
atk_object_set_description (atk_obj, _("Tool to switch between visible windows"));
+
+ gtk_widget_add_events (widget, GDK_SCROLL_MASK);
}
static void
@@ -1950,6 +1952,10 @@ wnck_tasklist_scroll_event (GtkWidget *widget,
}
break;
+ case GDK_SCROLL_SMOOTH:
+ window = NULL;
+ break;
+
#undef TASKLIST_GET_MOST_LEFT
#undef TASKLIST_GET_MOST_RIGHT