From 843d10ae2ab6a7f2c6f69b63fa278fdd6162254c Mon Sep 17 00:00:00 2001 From: Tomasz Kot Date: Fri, 28 Nov 2025 16:11:00 +0100 Subject: Add keyboard anchor assignments to mouse events The mouse events need to modify the keyboard anchor assignments as well, because selecting an item with a mouse and then navigating with keyboard wouldn't follow the same selection. BUG: 508609 --- src/kitemviews/kitemlistcontroller.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/kitemviews/kitemlistcontroller.cpp') diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index d889deb4e..8723ba4d9 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -534,6 +534,8 @@ void KItemListController::slotChangeCurrentItem(const QString &text, bool search } m_selectionManager->setCurrentItem(index); + m_keyboardAnchorIndex = index; + m_keyboardAnchorPos = keyboardAnchorPos(index); if (m_selectionBehavior != NoSelection) { if (!m_selectionMode) { // Don't clear the selection in selection mode. @@ -654,6 +656,8 @@ bool KItemListController::mouseMoveEvent(QGraphicsSceneMouseEvent *event, const m_selectionManager->endAnchoredSelection(); m_selectionManager->setCurrentItem(newCurrent.value()); m_selectionManager->beginAnchoredSelection(newCurrent.value()); + m_keyboardAnchorIndex = newCurrent.value(); + m_keyboardAnchorPos = keyboardAnchorPos(newCurrent.value()); } if (m_view->scrollOrientation() == Qt::Vertical) { @@ -1625,6 +1629,8 @@ bool KItemListController::onPress(const QPointF &pos, const Qt::KeyboardModifier m_selectionManager->endAnchoredSelection(); m_selectionManager->setCurrentItem(m_pressedIndex.value()); m_selectionManager->beginAnchoredSelection(m_pressedIndex.value()); + m_keyboardAnchorIndex = m_pressedIndex.value(); + m_keyboardAnchorPos = keyboardAnchorPos(m_pressedIndex.value()); return true; } @@ -1636,6 +1642,8 @@ bool KItemListController::onPress(const QPointF &pos, const Qt::KeyboardModifier // the current item and start a new anchored selection now. m_selectionManager->setCurrentItem(m_pressedIndex.value()); m_selectionManager->beginAnchoredSelection(m_pressedIndex.value()); + m_keyboardAnchorIndex = m_pressedIndex.value(); + m_keyboardAnchorPos = keyboardAnchorPos(m_pressedIndex.value()); return true; } @@ -1675,6 +1683,8 @@ bool KItemListController::onPress(const QPointF &pos, const Qt::KeyboardModifier m_selectionManager->setSelected(m_pressedIndex.value(), 1, KItemListSelectionManager::Toggle); m_selectionManager->setCurrentItem(m_pressedIndex.value()); m_selectionManager->beginAnchoredSelection(m_pressedIndex.value()); + m_keyboardAnchorIndex = m_pressedIndex.value(); + m_keyboardAnchorPos = keyboardAnchorPos(m_pressedIndex.value()); } if (leftClick) { row->setPressed(true); @@ -1743,6 +1753,8 @@ bool KItemListController::onPress(const QPointF &pos, const Qt::KeyboardModifier } m_selectionManager->setCurrentItem(m_pressedIndex.value()); + m_keyboardAnchorIndex = m_pressedIndex.value(); + m_keyboardAnchorPos = keyboardAnchorPos(m_pressedIndex.value()); switch (m_selectionBehavior) { case NoSelection: -- cgit v1.3