LibGUI: Allow setting smooth/coarse scrolling animation on ScrollBar

This commit is contained in:
MacDue 2022-03-08 21:50:42 +00:00 committed by Andreas Kling
parent 9ab3ab86cb
commit 91fff3f1ae
Notes: sideshowbarker 2024-07-17 17:30:20 +09:00
2 changed files with 17 additions and 0 deletions

View File

@ -114,6 +114,11 @@ bool Scrollbar::has_scrubber() const
return max() != min();
}
void Scrollbar::set_scroll_animation(Animation scroll_animation)
{
m_scroll_animation = scroll_animation;
}
void Scrollbar::set_value(int value, AllowCallback allow_callback)
{
m_target_value = value;
@ -125,6 +130,9 @@ void Scrollbar::set_value(int value, AllowCallback allow_callback)
void Scrollbar::set_target_value(int new_target_value)
{
if (m_scroll_animation == Animation::CoarseScroll)
return set_value(new_target_value);
new_target_value = clamp(new_target_value, min(), max());
// If we are already at or scrolling to the new target then don't touch anything

View File

@ -23,6 +23,13 @@ public:
bool has_scrubber() const;
enum class Animation {
SmoothScroll,
CoarseScroll
};
void set_scroll_animation(Animation scroll_animation);
virtual void set_value(int, AllowCallback = AllowCallback::Yes) override;
void set_target_value(int);
@ -79,6 +86,8 @@ private:
void update_animated_scroll();
Animation m_scroll_animation { Animation::SmoothScroll };
int m_target_value { 0 };
int m_start_value { 0 };
double m_animation_time_elapsed { 0 };