浏览代码

LibGUI: Make AbstractView::set_cursor() scrolling into view optional

Sometimes you just want to set the cursor programmatically without
scrolling the view to make the cursor visible.
Andreas Kling 4 年之前
父节点
当前提交
fed53e19c7
共有 2 个文件被更改,包括 7 次插入4 次删除
  1. 6 3
      Libraries/LibGUI/AbstractView.cpp
  2. 1 1
      Libraries/LibGUI/AbstractView.h

+ 6 - 3
Libraries/LibGUI/AbstractView.cpp

@@ -423,7 +423,7 @@ void AbstractView::set_key_column_and_sort_order(int column, SortOrder sort_orde
     update();
     update();
 }
 }
 
 
-void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update)
+void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update, bool scroll_cursor_into_view)
 {
 {
     if (m_cursor_index == index)
     if (m_cursor_index == index)
         return;
         return;
@@ -442,8 +442,11 @@ void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update
         // FIXME: Support the other SelectionUpdate types
         // FIXME: Support the other SelectionUpdate types
 
 
         m_cursor_index = index;
         m_cursor_index = index;
-        // FIXME: We should scroll into view both vertically *and* horizontally.
-        scroll_into_view(index, false, true);
+
+        if (scroll_cursor_into_view) {
+            // FIXME: We should scroll into view both vertically *and* horizontally.
+            scroll_into_view(index, false, true);
+        }
         update();
         update();
     }
     }
 }
 }

+ 1 - 1
Libraries/LibGUI/AbstractView.h

@@ -114,7 +114,7 @@ public:
     virtual void scroll_into_view(const ModelIndex&, [[maybe_unused]] bool scroll_horizontally = true, [[maybe_unused]] bool scroll_vertically = true) { }
     virtual void scroll_into_view(const ModelIndex&, [[maybe_unused]] bool scroll_horizontally = true, [[maybe_unused]] bool scroll_vertically = true) { }
 
 
     const ModelIndex& cursor_index() const { return m_cursor_index; }
     const ModelIndex& cursor_index() const { return m_cursor_index; }
-    void set_cursor(ModelIndex, SelectionUpdate);
+    void set_cursor(ModelIndex, SelectionUpdate, bool scroll_cursor_into_view = true);
 
 
     bool is_tab_key_navigation_enabled() const { return m_tab_key_navigation_enabled; }
     bool is_tab_key_navigation_enabled() const { return m_tab_key_navigation_enabled; }
     void set_tab_key_navigation_enabled(bool enabled) { m_tab_key_navigation_enabled = enabled; }
     void set_tab_key_navigation_enabled(bool enabled) { m_tab_key_navigation_enabled = enabled; }