mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
Improve details mode ctrl-press rubberband creation
Since d383961719
dragging the
highlighted row of already selected items in the details view mode
will begin a drag operation of all selected items.
As a unintended side-effect of this change, dragging the row of a
previously unselected item while holding the control key would also
begin a drag operation.
After this commit, dragging the row of a previously unselected item
while holding the control key in details view mode will instead
create a rubberband. Ctrl-dragging the item's icon or text directly will drag the item as expected.
With this change, using multiple rubberbands to select scattered
items among a list of items should be as convenient as it was
previously.
BUG: 452181
This commit is contained in:
parent
a4f9974daf
commit
2de8f4c0fb
|
@ -1600,9 +1600,20 @@ bool KItemListController::onPress(const QPoint& screenPos, const QPointF& pos, c
|
|||
|
||||
case MultiSelection:
|
||||
if (controlPressed && !shiftPressed) {
|
||||
m_selectionManager->setSelected(m_pressedIndex.value(), 1, KItemListSelectionManager::Toggle);
|
||||
m_selectionManager->beginAnchoredSelection(m_pressedIndex.value());
|
||||
createRubberBand = false; // multi selection, don't propagate any further
|
||||
// A mouse button press is happening on an item while control is pressed. This either means a user wants to:
|
||||
// - toggle the selection of item(s) or
|
||||
// - they want to begin a drag on the item(s) to copy them.
|
||||
// We rule out the latter, if the item is not clicked directly and was unselected previously.
|
||||
const auto row = m_view->m_visibleItems.value(m_pressedIndex.value());
|
||||
const auto mappedPos = row->mapFromItem(m_view, pos);
|
||||
if (!row->iconRect().contains(mappedPos) && !row->textRect().contains(mappedPos) && !pressedItemAlreadySelected) {
|
||||
createRubberBand = true;
|
||||
} else {
|
||||
m_selectionManager->setSelected(m_pressedIndex.value(), 1, KItemListSelectionManager::Toggle);
|
||||
m_selectionManager->beginAnchoredSelection(m_pressedIndex.value());
|
||||
createRubberBand = false; // multi selection, don't propagate any further
|
||||
// This will be the start of an item drag-to-copy operation if the user now moves the mouse before releasing the mouse button.
|
||||
}
|
||||
} else if (!shiftPressed || !m_selectionManager->isAnchoredSelectionActive()) {
|
||||
// Select the pressed item and start a new anchored selection
|
||||
m_selectionManager->setSelected(m_pressedIndex.value(), 1, KItemListSelectionManager::Select);
|
||||
|
|
Loading…
Reference in a new issue