diff --git a/Userland/Libraries/LibGUI/ColumnsView.cpp b/Userland/Libraries/LibGUI/ColumnsView.cpp index afd04ca201..502dff973c 100644 --- a/Userland/Libraries/LibGUI/ColumnsView.cpp +++ b/Userland/Libraries/LibGUI/ColumnsView.cpp @@ -234,6 +234,20 @@ ModelIndex ColumnsView::index_at_event_position(Gfx::IntPoint const& a_position) return {}; } +void ColumnsView::select_range(ModelIndex const& index) +{ + auto min_row = min(selection_start_index().row(), index.row()); + auto max_row = max(selection_start_index().row(), index.row()); + auto parent = index.parent(); + + clear_selection(); + for (auto row = min_row; row <= max_row; ++row) { + auto new_index = model()->index(row, m_model_column, parent); + if (new_index.is_valid()) + toggle_selection(new_index); + } +} + void ColumnsView::mousedown_event(MouseEvent& event) { AbstractView::mousedown_event(event); diff --git a/Userland/Libraries/LibGUI/ColumnsView.h b/Userland/Libraries/LibGUI/ColumnsView.h index f0d1ffea14..0fe157e8a6 100644 --- a/Userland/Libraries/LibGUI/ColumnsView.h +++ b/Userland/Libraries/LibGUI/ColumnsView.h @@ -37,6 +37,8 @@ private: virtual void paint_event(PaintEvent&) override; virtual void mousedown_event(MouseEvent& event) override; + virtual void select_range(ModelIndex const&) override; + void move_cursor(CursorMovement, SelectionUpdate) override; virtual void select_all() override;