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));