소스 검색

LibGUI: Make AutomaticScrollingKind a paramter on set_automatic_scrolling_active

Most callers of set_automatic_scrolling_active() also change
m_automatic_scrolling_kind, and it makes it possible to make timer
behavior dependent on the autoscroll kind later.
Nico Weber 5 년 전
부모
커밋
ecf6cbbd02
2개의 변경된 파일15개의 추가작업 그리고 16개의 파일을 삭제
  1. 8 9
      Libraries/LibGUI/ScrollBar.cpp
  2. 7 7
      Libraries/LibGUI/ScrollBar.h

+ 8 - 9
Libraries/LibGUI/ScrollBar.cpp

@@ -279,14 +279,12 @@ void ScrollBar::mousedown_event(MouseEvent& event)
         return;
 
     if (decrement_button_rect().contains(event.position())) {
-        m_automatic_scrolling_kind = AutomaticScrollingKind::DecrementButton;
-        set_automatic_scrolling_active(true);
+        set_automatic_scrolling_active(true, AutomaticScrollingKind::DecrementButton);
         update();
         return;
     }
     if (increment_button_rect().contains(event.position())) {
-        m_automatic_scrolling_kind = AutomaticScrollingKind::IncrementButton;
-        set_automatic_scrolling_active(true);
+        set_automatic_scrolling_active(true, AutomaticScrollingKind::IncrementButton);
         update();
         return;
     }
@@ -312,8 +310,7 @@ void ScrollBar::mouseup_event(MouseEvent& event)
     if (event.button() != MouseButton::Left)
         return;
     m_scrubber_in_use = false;
-    m_automatic_scrolling_kind = AutomaticScrollingKind::None;
-    set_automatic_scrolling_active(false);
+    set_automatic_scrolling_active(false, AutomaticScrollingKind::None);
     m_scrubbing = false;
     update();
 }
@@ -326,8 +323,10 @@ void ScrollBar::mousewheel_event(MouseEvent& event)
     Widget::mousewheel_event(event);
 }
 
-void ScrollBar::set_automatic_scrolling_active(bool active)
+void ScrollBar::set_automatic_scrolling_active(bool active, AutomaticScrollingKind kind)
 {
+    m_automatic_scrolling_kind = kind;
+
     if (active) {
         on_automatic_scrolling_timer_fired();
         m_automatic_scrolling_timer->start();
@@ -376,9 +375,9 @@ void ScrollBar::mousemove_event(MouseEvent& event)
         update();
 
         if (m_automatic_scrolling_kind == AutomaticScrollingKind::DecrementButton)
-            set_automatic_scrolling_active(m_hovered_component == Component::DecrementButton);
+            set_automatic_scrolling_active(m_hovered_component == Component::DecrementButton, m_automatic_scrolling_kind);
         else if (m_automatic_scrolling_kind == AutomaticScrollingKind::IncrementButton)
-            set_automatic_scrolling_active(m_hovered_component == Component::IncrementButton);
+            set_automatic_scrolling_active(m_hovered_component == Component::IncrementButton, m_automatic_scrolling_kind);
     }
     if (!m_scrubbing)
         return;

+ 7 - 7
Libraries/LibGUI/ScrollBar.h

@@ -78,6 +78,12 @@ private:
     virtual void leave_event(Core::Event&) override;
     virtual void change_event(Event&) override;
 
+    enum class AutomaticScrollingKind {
+        None = 0,
+        DecrementButton,
+        IncrementButton,
+    };
+
     int default_button_size() const { return 16; }
     int button_size() const { return length(orientation()) <= (default_button_size() * 2) ? length(orientation()) / 2 : default_button_size(); }
     int button_width() const { return orientation() == Orientation::Vertical ? width() : button_size(); }
@@ -91,7 +97,7 @@ private:
     int visible_scrubber_size() const;
     int scrubbable_range_in_pixels() const;
     void on_automatic_scrolling_timer_fired();
-    void set_automatic_scrolling_active(bool);
+    void set_automatic_scrolling_active(bool, AutomaticScrollingKind);
 
     void scroll_to_position(const Gfx::IntPoint&);
     void scroll_by_page(const Gfx::IntPoint&);
@@ -111,12 +117,6 @@ private:
     Component m_hovered_component { Component::Invalid };
     bool m_scrubber_in_use { false };
 
-    enum class AutomaticScrollingKind {
-        None = 0,
-        DecrementButton,
-        IncrementButton,
-    };
-
     AutomaticScrollingKind m_automatic_scrolling_kind { AutomaticScrollingKind::None };
     RefPtr<Core::Timer> m_automatic_scrolling_timer;
 };