@@ -508,13 +508,21 @@ static gboolean _popup_scroll(GtkWidget *widget,
508508 gpointer user_data )
509509{
510510 dt_bauhaus_widget_t * w = darktable .bauhaus -> current ;
511- int delta_y = 0 ;
512- if (dt_gui_get_scroll_unit_delta (event , & delta_y ))
511+ if (w -> type == DT_BAUHAUS_COMBOBOX )
513512 {
514- if (w -> type == DT_BAUHAUS_COMBOBOX )
515- _combobox_next_sensitive (w , delta_y , 0 , w -> combobox .mute_scrolling );
516- else
517- _slider_zoom_range (w , delta_y );
513+ // match keyboard: right & down -> next
514+ int delta_x = 0 , delta_y = 0 ;
515+ if (dt_gui_get_scroll_unit_deltas (event , & delta_x , & delta_y ))
516+ {
517+ int delta = abs (delta_x ) > abs (delta_y ) ? delta_x : delta_y ;
518+ _combobox_next_sensitive (w , delta , 0 , w -> combobox .mute_scrolling );
519+ }
520+ }
521+ else
522+ {
523+ int delta = 0 ;
524+ if (dt_gui_get_scroll_unit_delta (event , & delta ))
525+ _slider_zoom_range (w , delta );
518526 }
519527 return TRUE;
520528}
@@ -3087,14 +3095,17 @@ static void _widget_scroll(GtkEventControllerScroll *controller,
30873095 {
30883096 gtk_widget_grab_focus (widget );
30893097
3090- int delta = dx + dy ;
3091- if (delta != 0 )
3098+ int magnitude_x = fabs (dx );
3099+ int magnitude_y = fabs (dy );
3100+
3101+ if (magnitude_x || magnitude_y )
30923102 {
30933103 dt_bauhaus_widget_t * w = (dt_bauhaus_widget_t * )widget ;
30943104 _request_focus (w );
30953105
30963106 if (w -> type == DT_BAUHAUS_SLIDER )
30973107 {
3108+ int delta = magnitude_x > magnitude_y ? - dx : dy ;
30983109 const gboolean force = darktable .control -> element == DT_ACTION_ELEMENT_FORCE
30993110 && event -> scroll .window == gtk_widget_get_window (widget );
31003111 if (force && dt_modifier_is (event -> scroll .state , GDK_SHIFT_MASK | GDK_CONTROL_MASK ))
@@ -3106,7 +3117,12 @@ static void _widget_scroll(GtkEventControllerScroll *controller,
31063117 _slider_add_step (widget , - delta , event -> scroll .state , force );
31073118 }
31083119 else
3120+ {
3121+ // match keyboard: right & down -> next
3122+ int delta = magnitude_x > magnitude_y ? dx : dy ;
3123+
31093124 _combobox_next_sensitive (w , delta , 0 , FALSE);
3125+ }
31103126 }
31113127 }
31123128 if (event ) gdk_event_free (event );
0 commit comments