Explorar el Código

LibGUI: Implement the virtual ListView::scroll_into_view()

Instead of shadowing the one from AbstractView.
Andreas Kling hace 4 años
padre
commit
a56360f787
Se han modificado 2 ficheros con 8 adiciones y 7 borrados
  1. 7 6
      Libraries/LibGUI/ListView.cpp
  2. 1 1
      Libraries/LibGUI/ListView.h

+ 7 - 6
Libraries/LibGUI/ListView.cpp

@@ -208,7 +208,7 @@ void ListView::move_selection(int steps)
     if (model.is_valid(new_index)) {
         set_last_valid_hovered_index({});
         selection().set(new_index);
-        scroll_into_view(new_index, Orientation::Vertical);
+        scroll_into_view(new_index, false, true);
         update();
     } else {
         if (hover_highlighting() && m_last_valid_hovered_index.is_valid()) {
@@ -252,7 +252,7 @@ void ListView::keydown_event(KeyEvent& event)
         }
         if (model.is_valid(new_index)) {
             selection().set(new_index);
-            scroll_into_view(new_index, Orientation::Vertical);
+            scroll_into_view(new_index, false, true);
             update();
         }
         return;
@@ -269,7 +269,7 @@ void ListView::keydown_event(KeyEvent& event)
         }
         if (model.is_valid(new_index)) {
             selection().set(new_index);
-            scroll_into_view(new_index, Orientation::Vertical);
+            scroll_into_view(new_index, false, true);
             update();
         }
         return;
@@ -282,10 +282,11 @@ void ListView::keydown_event(KeyEvent& event)
     return Widget::keydown_event(event);
 }
 
-void ListView::scroll_into_view(const ModelIndex& index, Orientation orientation)
+void ListView::scroll_into_view(const ModelIndex& index, bool scroll_horizontally, bool scroll_vertically)
 {
-    auto rect = content_rect(index.row());
-    ScrollableWidget::scroll_into_view(rect, orientation);
+    if (!model())
+        return;
+    ScrollableWidget::scroll_into_view(content_rect(index.row()), scroll_horizontally, scroll_vertically);
 }
 
 }

+ 1 - 1
Libraries/LibGUI/ListView.h

@@ -45,7 +45,7 @@ public:
 
     int horizontal_padding() const { return m_horizontal_padding; }
 
-    void scroll_into_view(const ModelIndex&, Orientation);
+    virtual void scroll_into_view(const ModelIndex& index, bool scroll_horizontally, bool scroll_vertically) override;
 
     Gfx::IntPoint adjusted_position(const Gfx::IntPoint&) const;