@@ -750,7 +750,8 @@ static void _widget_finalize(GObject *widget)
750750 if (w -> type == DT_BAUHAUS_SLIDER )
751751 {
752752 dt_bauhaus_slider_data_t * d = & w -> data .slider ;
753- if (d -> timeout_handle ) g_source_remove (d -> timeout_handle );
753+ if (d -> timeout_handle && d -> timeout_handle != G_MAXUINT )
754+ g_source_remove (d -> timeout_handle );
754755 free (d -> grad_col );
755756 free (d -> grad_pos );
756757 }
@@ -3630,6 +3631,7 @@ static void _widget_button_press(GtkGestureSingle *gesture,
36303631 else if (pos <= 1.0f && y > .5 * bh -> line_height + w -> margin .top + w -> padding .top )
36313632 {
36323633 bh -> mouse_x = NAN ;
3634+ w -> data .slider .timeout_handle = G_MAXUINT ;
36333635 _slider_set_normalized (w , pos );
36343636 }
36353637 }
@@ -3646,24 +3648,19 @@ static void _widget_button_release(GtkGestureSingle *gesture,
36463648 dt_bauhaus_widget_t * w = DT_BAUHAUS_WIDGET (widget );
36473649 dt_bauhaus_widget_release_quad (widget );
36483650
3651+ dt_gui_claim (gesture );
36493652 if (w -> type != DT_BAUHAUS_SLIDER ) return ;
36503653
36513654 dt_bauhaus_slider_data_t * d = & w -> data .slider ;
3652- if (gtk_gesture_single_get_current_button (gesture ) == GDK_BUTTON_PRIMARY
3653- && d -> is_dragging )
3654- {
3655+ if (gtk_gesture_single_get_current_button (gesture ) == GDK_BUTTON_PRIMARY )
36553656 d -> is_dragging = 0 ;
3656-
3657- // FIXME _slider_value_change_dragging
3658- if (d -> timeout_handle ) g_source_remove (d -> timeout_handle );
3659- d -> timeout_handle = 0 ;
3660- _slider_set_normalized (w , d -> pos );
3661- }
36623657}
36633658
36643659static void _widget_button_stopped (GtkGestureSingle * gesture ,
36653660 dt_bauhaus_widget_t * w )
36663661{
3662+ if (w -> data .slider .timeout_handle == G_MAXUINT )
3663+ _slider_value_change_dragging (w );
36673664}
36683665
36693666static void _widget_motion (GtkEventControllerMotion * controller ,
0 commit comments