[Xfce4-commits] <exo:stephan/icon-bar-improvements> Add scroll-event handler

Stephan Arts noreply at xfce.org
Mon Jan 30 07:10:01 CET 2012


Updating branch refs/heads/stephan/icon-bar-improvements
         to ac31b57ec639a7405787bbc89280014e66fe6da7 (commit)
       from 8f8cef2d79162982568865358e5aad9a0f8b328c (commit)

commit ac31b57ec639a7405787bbc89280014e66fe6da7
Author: Stephan Arts <stephan at xfce.org>
Date:   Mon Jan 30 07:07:11 2012 +0100

    Add scroll-event handler
    
     - Scroll through the icons when the scroll-wheel is used.

 exo/exo-icon-bar.c |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/exo/exo-icon-bar.c b/exo/exo-icon-bar.c
index 33c12d0..3e885f8 100644
--- a/exo/exo-icon-bar.c
+++ b/exo/exo-icon-bar.c
@@ -138,6 +138,8 @@ static gboolean        exo_icon_bar_leave                 (GtkWidget        *wid
                                                            GdkEventCrossing *event);
 static gboolean        exo_icon_bar_motion                (GtkWidget        *widget,
                                                            GdkEventMotion   *event);
+static gboolean        exo_icon_bar_scroll                (GtkWidget        *widget,
+                                                           GdkEventScroll   *event);
 static gboolean        exo_icon_bar_button_press          (GtkWidget        *widget,
                                                            GdkEventButton   *event);
 static gboolean        exo_icon_bar_button_release        (GtkWidget        *widget,
@@ -265,6 +267,7 @@ exo_icon_bar_class_init (ExoIconBarClass *klass)
   gtkwidget_class->expose_event = exo_icon_bar_expose;
   gtkwidget_class->leave_notify_event = exo_icon_bar_leave;
   gtkwidget_class->motion_notify_event = exo_icon_bar_motion;
+  gtkwidget_class->scroll_event = exo_icon_bar_scroll;
   gtkwidget_class->button_press_event = exo_icon_bar_button_press;
   gtkwidget_class->button_release_event = exo_icon_bar_button_release;
 
@@ -836,6 +839,46 @@ exo_icon_bar_motion (GtkWidget      *widget,
   return TRUE;
 }
 
+static gboolean
+exo_icon_bar_scroll (GtkWidget        *widget,
+                     GdkEventScroll   *event)
+{
+  ExoIconBar    *icon_bar   = EXO_ICON_BAR (widget);
+  GtkAdjustment *adjustment = NULL;
+  gdouble        val        = 0;
+  gdouble        step_size  = 0;
+  gdouble        max_value  = 0;
+
+  if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
+    {
+      adjustment = icon_bar->priv->vadjustment;
+      step_size = icon_bar->priv->item_height / 2;
+    }
+  else
+    {
+      adjustment = icon_bar->priv->hadjustment;
+      step_size = icon_bar->priv->item_width / 2;
+    }
+
+  val = gtk_adjustment_get_value (adjustment);
+  max_value = gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment);
+
+  switch (event->direction)
+    {
+    case GDK_SCROLL_UP:
+    case GDK_SCROLL_LEFT:
+      val-=step_size;
+      if (val<0) val = 0.0;
+      break;
+    case GDK_SCROLL_DOWN:
+    case GDK_SCROLL_RIGHT:
+      val+=step_size;
+      if (val > max_value) val = max_value;
+      break;
+    }
+  gtk_adjustment_set_value (adjustment, val);
+  return TRUE;
+}
 
 
 static gboolean


More information about the Xfce4-commits mailing list