Hi,
Try the attached patch file. It works with pcmanfm-1.4.0 version.
diff -Nur libfm-1.4.0/src/gtk/exo/exo-icon-view.c libfm-1.4.0.mod/src/gtk/exo/exo-icon-view.c
--- libfm-1.4.0/src/gtk/exo/exo-icon-view.c	2025-02-18 17:04:08.000000000 +0000
+++ libfm-1.4.0.mod/src/gtk/exo/exo-icon-view.c	2025-11-30 08:16:28.166518222 +0000
@@ -2779,7 +2779,7 @@
 {
   GtkAdjustment *adjustment;
   ExoIconView   *icon_view = EXO_ICON_VIEW (widget);
-  gdouble        delta, delta_x;
+  gdouble        delta, delta_x, delta_y;
   gdouble        value;
 
   /* we don't care for scroll events in "rows" layout mode, as
@@ -2807,12 +2807,14 @@
 
   /* determine the scroll delta */
   delta = pow (gtk_adjustment_get_page_size(adjustment), 2.0 / 3.0);
-  delta = (event->direction == GDK_SCROLL_UP) ? -delta : delta;
 #if GTK_CHECK_VERSION(3, 4, 0)
-  if (gdk_event_get_scroll_deltas((GdkEvent *) event, &delta_x, NULL))
-    /* it was smooth scrolling - try to approach the usual scrolling speed */
-    delta = delta_x * 33.3;
+  if (gdk_event_get_scroll_deltas((GdkEvent *) event, &delta_x, &delta_y))
+	  /* it was smooth scrolling - try to approach the usual scrolling speed */
+	  /* there's instance 'delta_y' is set to (-)1 and 'delta_x' 0 when using mouse wheel */
+	  delta *= ((delta_x >= 0.001) ? delta_x : delta_y);
+  else
 #endif
+	    delta = (event->direction == GDK_SCROLL_UP) ? -delta : delta;
 
   /* apply the new adjustment value */
   value = CLAMP (gtk_adjustment_get_value(adjustment) + delta, gtk_adjustment_get_lower(adjustment), gtk_adjustment_get_upper(adjustment) - gtk_adjustment_get_page_size(adjustment));

Reply via email to