瀏覽代碼

Terminal: Allow scrolling through terminal history with the mouse wheel

Fixes #470.
Andreas Kling 6 年之前
父節點
當前提交
c106ec4719
共有 2 個文件被更改,包括 16 次插入0 次删除
  1. 13 0
      Applications/Terminal/TerminalWidget.cpp
  2. 3 0
      Applications/Terminal/TerminalWidget.h

+ 13 - 0
Applications/Terminal/TerminalWidget.cpp

@@ -407,6 +407,19 @@ void TerminalWidget::mouseup_event(GMouseEvent& event)
     GClipboard::the().set_data(selected_text());
 }
 
+void TerminalWidget::mousewheel_event(GMouseEvent& event)
+{
+    if (!is_scrollable())
+        return;
+    m_scrollbar->set_value(m_scrollbar->value() + event.wheel_delta());
+    GFrame::mousewheel_event(event);
+}
+
+bool TerminalWidget::is_scrollable() const
+{
+    return m_scrollbar->is_scrollable();
+}
+
 String TerminalWidget::selected_text() const
 {
     StringBuilder builder;

+ 3 - 0
Applications/Terminal/TerminalWidget.h

@@ -39,6 +39,8 @@ public:
     VT::Position normalized_selection_start() const;
     VT::Position normalized_selection_end() const;
 
+    bool is_scrollable() const;
+
 private:
     // ^GWidget
     virtual void event(CEvent&) override;
@@ -48,6 +50,7 @@ private:
     virtual void mousedown_event(GMouseEvent&) override;
     virtual void mousemove_event(GMouseEvent&) override;
     virtual void mouseup_event(GMouseEvent&) override;
+    virtual void mousewheel_event(GMouseEvent&) override;
 
     // ^TerminalClient
     virtual void beep() override;