mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 06:48:12 +00:00
LibGUI: Clear selection if right-clicking item that isn't selected
If we're right-clicking on an item that isn't currently selected, clear the selection first. Fixes #3665
This commit is contained in:
parent
ad8284bac6
commit
a7533eb29c
2 changed files with 8 additions and 1 deletions
|
@ -224,7 +224,9 @@ void AbstractView::mousedown_event(MouseEvent& event)
|
||||||
} else if (event.button() == MouseButton::Left && m_selection.contains(index) && !m_model->drag_data_type().is_null()) {
|
} else if (event.button() == MouseButton::Left && m_selection.contains(index) && !m_model->drag_data_type().is_null()) {
|
||||||
// We might be starting a drag, so don't throw away other selected items yet.
|
// We might be starting a drag, so don't throw away other selected items yet.
|
||||||
m_might_drag = true;
|
m_might_drag = true;
|
||||||
} else if (event.button() != MouseButton::Right) {
|
} else if (event.button() == MouseButton::Right) {
|
||||||
|
set_cursor(index, SelectionUpdate::ClearIfNotSelected);
|
||||||
|
} else {
|
||||||
set_cursor(index, SelectionUpdate::Set);
|
set_cursor(index, SelectionUpdate::Set);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,6 +429,10 @@ void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update
|
||||||
set_selection(index);
|
set_selection(index);
|
||||||
else if (selection_update == SelectionUpdate::Ctrl)
|
else if (selection_update == SelectionUpdate::Ctrl)
|
||||||
toggle_selection(index);
|
toggle_selection(index);
|
||||||
|
else if (selection_update == SelectionUpdate::ClearIfNotSelected) {
|
||||||
|
if (!m_selection.contains(index))
|
||||||
|
clear_selection();
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: Support the other SelectionUpdate types
|
// FIXME: Support the other SelectionUpdate types
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,7 @@ public:
|
||||||
Set,
|
Set,
|
||||||
Shift,
|
Shift,
|
||||||
Ctrl,
|
Ctrl,
|
||||||
|
ClearIfNotSelected
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual void move_cursor(CursorMovement, SelectionUpdate) { }
|
virtual void move_cursor(CursorMovement, SelectionUpdate) { }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue