mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-14 11:54:53 +03:00
LibGUI: Properly handle range selections in ColumnsView
Previously we would always select the left most column when selecting a range of rows. This patch fixes this issue by always applying a selection to the column in which the selection ends.
This commit is contained in:
parent
30d68d71b4
commit
2d681279d4
Notes:
sideshowbarker
2024-07-17 08:36:35 +09:00
Author: https://github.com/networkException Commit: https://github.com/SerenityOS/serenity/commit/2d681279d4 Pull-request: https://github.com/SerenityOS/serenity/pull/14669
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user