mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:07:34 +00:00
LibGUI: Animated smooth scroll interpolation
This commit is contained in:
parent
86c0961240
commit
c204885a94
3 changed files with 75 additions and 7 deletions
|
@ -21,6 +21,16 @@ public:
|
|||
|
||||
bool has_scrubber() const;
|
||||
|
||||
virtual void set_value(int, AllowCallback = AllowCallback::Yes) override;
|
||||
void set_target_value(int);
|
||||
|
||||
virtual void increase_slider_by(int delta) override { set_target_value(m_target_value + delta); }
|
||||
virtual void decrease_slider_by(int delta) override { set_target_value(m_target_value - delta); }
|
||||
virtual void increase_slider_by_page_steps(int page_steps) override { set_target_value(m_target_value + page_step() * page_steps); }
|
||||
virtual void decrease_slider_by_page_steps(int page_steps) override { set_target_value(m_target_value - page_step() * page_steps); }
|
||||
virtual void increase_slider_by_steps(int steps) override { set_target_value(m_target_value + step() * steps); }
|
||||
virtual void decrease_slider_by_steps(int steps) override { set_target_value(m_target_value - step() * steps); }
|
||||
|
||||
enum Component {
|
||||
None,
|
||||
DecrementButton,
|
||||
|
@ -66,6 +76,12 @@ private:
|
|||
|
||||
Component component_at_position(const Gfx::IntPoint&);
|
||||
|
||||
void update_animated_scroll();
|
||||
|
||||
int m_target_value { 0 };
|
||||
int m_start_value { 0 };
|
||||
double m_animation_time_elapsed { 0 };
|
||||
|
||||
int m_scrub_start_value { 0 };
|
||||
Gfx::IntPoint m_scrub_origin;
|
||||
|
||||
|
@ -74,6 +90,7 @@ private:
|
|||
Gfx::IntPoint m_last_mouse_position;
|
||||
|
||||
RefPtr<Core::Timer> m_automatic_scrolling_timer;
|
||||
RefPtr<Core::Timer> m_animated_scrolling_timer;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue