[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