static void helper_test_imagewidget_scroll_event(GtkWidget* widget, GdkEvent *event, gpointer user_data){ (void) user_data; printf("scrolling\n"); GdkScrollDirection direction; GrfImageWidget* imagewidget = GRF_IMAGEWIDGET(widget); gdk_event_get_scroll_direction(event,&direction); if(direction == GDK_SCROLL_UP) grf_imagewidget_set_scale(imagewidget,grf_imagewidget_get_scale(imagewidget)*1.5,TRUE); else grf_imagewidget_set_scale(imagewidget,grf_imagewidget_get_scale(imagewidget)/1.5,TRUE); }
static gboolean sn_item_scroll_event (GtkWidget *widget, GdkEventScroll *event) { SnItem *item; GdkScrollDirection direction; SnItemOrientation orientation; gdouble dx; gdouble dy; gint delta; item = SN_ITEM (widget); if (!gdk_event_get_scroll_direction ((GdkEvent *) event, &direction)) { g_assert_not_reached (); } else { switch (direction) { case GDK_SCROLL_UP: case GDK_SCROLL_DOWN: orientation = SN_ITEM_ORIENTATION_VERTICAL; break; case GDK_SCROLL_LEFT: case GDK_SCROLL_RIGHT: orientation = SN_ITEM_ORIENTATION_HORIZONTAL; break; case GDK_SCROLL_SMOOTH: default: g_assert_not_reached (); break; } } if (!gdk_event_get_scroll_deltas ((GdkEvent *) event, &dx, &dy)) { switch (direction) { case GDK_SCROLL_UP: case GDK_SCROLL_LEFT: delta = 1; break; case GDK_SCROLL_DOWN: case GDK_SCROLL_RIGHT: delta = -1; break; case GDK_SCROLL_SMOOTH: default: g_assert_not_reached (); break; } } else { if (dy != 0) delta = (gint) dy; else delta = (gint) dx; } SN_ITEM_GET_CLASS (item)->scroll (item, delta, orientation); return GDK_EVENT_STOP; }