소스 검색

LibVT: Update the terminal buffer based on visible lines

Lines in the history should not be considered for update at all.
Fixes #2185
AnotherTest 5 년 전
부모
커밋
5b9fe0cf46
2개의 변경된 파일11개의 추가작업 그리고 2개의 파일을 삭제
  1. 9 0
      Libraries/LibVT/Terminal.h
  2. 2 2
      Libraries/LibVT/TerminalWidget.cpp

+ 9 - 0
Libraries/LibVT/Terminal.h

@@ -144,6 +144,15 @@ public:
         return m_lines[index - m_history.size()];
     }
 
+    Line& visible_line(size_t index)
+    {
+        return m_lines[index];
+    }
+    const Line& visible_line(size_t index) const
+    {
+        return m_lines[index];
+    }
+
     size_t max_history_size() const { return 500; }
     const NonnullOwnPtrVector<Line>& history() const { return m_history; }
 

+ 2 - 2
Libraries/LibVT/TerminalWidget.cpp

@@ -465,9 +465,9 @@ void TerminalWidget::flush_dirty_lines()
     }
     Gfx::Rect rect;
     for (int i = 0; i < m_terminal.rows(); ++i) {
-        if (m_terminal.line(i).dirty) {
+        if (m_terminal.visible_line(i).dirty) {
             rect = rect.united(row_rect(i));
-            m_terminal.line(i).dirty = false;
+            m_terminal.visible_line(i).dirty = false;
         }
     }
     update(rect);