Author: abrander
Date: 2010-12-04 17:44:32 +0100 (Sat, 04 Dec 2010)
New Revision: 3654
Modified:
trunk/src/rs-store.c
Log:
[420] Made mousewheel scroll thumbnails anywhere in iconview.
Modified: trunk/src/rs-store.c
===================================================================
--- trunk/src/rs-store.c 2010-12-04 15:29:25 UTC (rev 3653)
+++ trunk/src/rs-store.c 2010-12-04 16:44:32 UTC (rev 3654)
@@ -127,6 +127,7 @@
#error This must be updated
#endif
+static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *event,
gpointer user_data);
static void thumbnail_overlay(GdkPixbuf *pixbuf, GdkPixbuf *lowerleft,
GdkPixbuf *lowerright, GdkPixbuf *topleft, GdkPixbuf *topright);
static void thumbnail_update(GdkPixbuf *pixbuf, GdkPixbuf *pixbuf_clean, gint
priority, gboolean exported);
static void switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint
page_num, gpointer data);
@@ -349,6 +350,33 @@
store->tooltip_last_path = NULL;
}
+static gboolean
+scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
+{
+ gboolean handled = FALSE;
+ GtkAdjustment *adj =
gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(widget));
+ gdouble value = gtk_adjustment_get_value(adj);
+
+ /* Lifted from _gtk_range_get_wheel_delta() */
+ gdouble delta = pow(gtk_adjustment_get_page_size(adj), 2.0 / 3.0);
+
+ switch (event->direction)
+ {
+ case GDK_SCROLL_UP:
+ gtk_adjustment_set_value(adj, value - delta);
+ handled = TRUE;
+ break;
+ case GDK_SCROLL_DOWN:
+ gtk_adjustment_set_value(adj, value + delta);
+ handled = TRUE;
+ break;
+ default:
+ break;
+ }
+
+ return handled;
+}
+
static void
switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num,
gpointer data)
{
@@ -608,6 +636,10 @@
scroller = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller),
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
+
+ /* Handle scroll events not handled by scroller to allow scrolling in
horizontal iconview */
+ g_signal_connect_after(scroller, "scroll-event",
G_CALLBACK(scroll_event), NULL);
+
gtk_container_add (GTK_CONTAINER (scroller), iconview);
return(scroller);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit