Control-rubberband selection toggles the selection state

This commit is contained in:
Frank Reininghaus 2011-08-28 19:16:14 +02:00
parent 7f5fb3ae2c
commit b01c73607b

View file

@ -678,7 +678,16 @@ void KItemListController::slotRubberBandChanged()
} }
} while (!selectionFinished); } while (!selectionFinished);
m_selectionManager->setSelectedItems(selectedItems + m_oldSelection); if (QApplication::keyboardModifiers() & Qt::ControlModifier) {
// If Control is pressed, the selection state of all items in the rubberband is toggled.
// Therefore, the new selection contains:
// 1. All previously selected items which are not inside the rubberband, and
// 2. all items inside the rubberband which have not been selected previously.
m_selectionManager->setSelectedItems((m_oldSelection - selectedItems) + (selectedItems - m_oldSelection));
}
else {
m_selectionManager->setSelectedItems(selectedItems + m_oldSelection);
}
} }
bool KItemListController::startDragging() bool KItemListController::startDragging()