diff options
Diffstat (limited to 'Userland/Applications')
-rw-r--r-- | Userland/Applications/SoundPlayer/Common.h | 4 | ||||
-rw-r--r-- | Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/Userland/Applications/SoundPlayer/Common.h b/Userland/Applications/SoundPlayer/Common.h index 353fd29bd1..203aecf56b 100644 --- a/Userland/Applications/SoundPlayer/Common.h +++ b/Userland/Applications/SoundPlayer/Common.h @@ -15,6 +15,7 @@ public: Function<void(int)> on_knob_released; virtual void set_value(int value, GUI::AllowCallback allow_callback = GUI::AllowCallback::Yes) override { + m_in_drag_value = value; if (!knob_dragging() && !mouse_is_down()) GUI::Slider::set_value(value, allow_callback); } @@ -36,6 +37,7 @@ private: virtual void mouseup_event(GUI::MouseEvent& event) override { m_mouse_is_down = false; + set_value(m_in_drag_value); if (on_knob_released && is_enabled()) on_knob_released(value()); @@ -43,4 +45,6 @@ private: } bool m_mouse_is_down { false }; + // Keeps track of the value while we're dragging + int m_in_drag_value { 0 }; }; diff --git a/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp b/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp index 0add1963f4..0eabca66bd 100644 --- a/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp +++ b/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp @@ -220,7 +220,9 @@ void SoundPlayerWidgetAdvancedView::sound_buffer_played(RefPtr<Audio::Buffer> bu { m_visualization->set_buffer(buffer); m_visualization->set_samplerate(sample_rate); - m_playback_progress_slider->set_value(samples_played); + // If the user is currently dragging the slider, don't interfere. + if (!m_playback_progress_slider->mouse_is_down()) + m_playback_progress_slider->set_value(samples_played); } void SoundPlayerWidgetAdvancedView::volume_changed(double volume) |