[libwnck] pager, selector, tasklist: Fix mouse wheel scrolling with new GTK+



commit de74b83bfdb78af536e71c58fc297a1eb3b7efe0
Author: Christian Persch <chpe gnome org>
Date:   Fri May 11 21:47:54 2012 +0200

    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

 libwnck/pager.c    |    3 +++
 libwnck/selector.c |    5 +++++
 libwnck/tasklist.c |    6 ++++++
 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
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]