summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGalik <[email protected]>2017-07-03 02:38:12 +0100
committerGalik <[email protected]>2017-07-03 02:38:12 +0100
commit87687fcb9440d58e8cbfe58889a7b71a02499a2a (patch)
tree61f045371d5178887000992d4acbcdd20e2c88fe
parent45bc0ea7fdf5efa670a83b5f6f8d4f91a13f6b15 (diff)
downloadcaja-87687fcb9440d58e8cbfe58889a7b71a02499a2a.tar.bz2
caja-87687fcb9440d58e8cbfe58889a7b71a02499a2a.tar.xz
fix vertical Compact View scrolling in fm_icon_view_scroll_event()
Was always scrolling to right when using sideways scrolling devices. Now scrolls left or right with sideways scrolling devices and adjusts vertical scrolling devices to scroll sideways.
-rw-r--r--src/file-manager/fm-icon-view.c49
1 files changed, 15 insertions, 34 deletions
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index dab35561..4b416187 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -2479,48 +2479,29 @@ fm_icon_view_scroll_event (GtkWidget *widget,
GdkEventScroll *scroll_event)
{
FMIconView *icon_view;
- GdkEvent *event_copy;
- GdkEventScroll *scroll_event_copy;
gboolean ret;
icon_view = FM_ICON_VIEW (widget);
- if (icon_view->details->compact &&
- (scroll_event->direction == GDK_SCROLL_UP ||
- scroll_event->direction == GDK_SCROLL_DOWN ||
- scroll_event->direction == GDK_SCROLL_SMOOTH)) {
- ret = fm_directory_view_handle_scroll_event (FM_DIRECTORY_VIEW (icon_view), scroll_event);
- if (!ret)
- {
- /* in column-wise layout, re-emit vertical mouse scroll events as horizontal ones,
- * if they don't bump zoom */
- event_copy = gdk_event_copy ((GdkEvent *) scroll_event);
-
- scroll_event_copy = (GdkEventScroll *) event_copy;
-
- /* transform vertical integer smooth scroll events into horizontal events */
- if (scroll_event_copy->direction == GDK_SCROLL_SMOOTH && scroll_event_copy->delta_x == 0) {
- if (scroll_event_copy->delta_y == 1.0) {
- scroll_event_copy->direction = GDK_SCROLL_DOWN;
- } else if (scroll_event_copy->delta_y == -1.0) {
- scroll_event_copy->direction = GDK_SCROLL_UP;
- }
- }
- if ((scroll_event_copy->direction == GDK_SCROLL_UP) || (scroll_event_copy->delta_x == -1.0))
+ if(icon_view->details->compact)
+ {
+ if((ret = fm_directory_view_handle_scroll_event(FM_DIRECTORY_VIEW(icon_view), scroll_event)))
+ return ret;
+ if(scroll_event->direction == GDK_SCROLL_UP)
+ scroll_event->direction = GDK_SCROLL_LEFT;
+ else if(scroll_event->direction == GDK_SCROLL_DOWN)
+ scroll_event->direction = GDK_SCROLL_RIGHT;
+ else if(scroll_event->direction == GDK_SCROLL_SMOOTH)
+ {
+ /* no x value implies only vertical scrolling enabled */
+ if(scroll_event->delta_x == 0.0)
{
- scroll_event_copy->direction = GDK_SCROLL_LEFT;
- }
- else
- {
- scroll_event_copy->direction = GDK_SCROLL_RIGHT;
+ /* convert vertical to horizontal */
+ scroll_event->delta_x = scroll_event->delta_y;
+ scroll_event->delta_y = 0.0;
}
-
- ret = gtk_widget_event (widget, event_copy);
- gdk_event_free (event_copy);
}
-
- return ret;
}
return GTK_WIDGET_CLASS (fm_icon_view_parent_class)->scroll_event (widget, scroll_event);