mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Scroll to item if it's not visible on keyPress
Summary: Always scroll to item if it's not visible on keyPress, even if it's the current index. Test Plan: Select the last item, scroll up to make it not visible > press the `End` key > Dolphin now scrolls to that item. Reviewers: #dolphin, ngraham, elvisangelaccio Reviewed By: #dolphin, ngraham, elvisangelaccio Subscribers: elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D20152
This commit is contained in:
parent
97e9af5ceb
commit
b7db272af2
|
@ -231,6 +231,9 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
|
||||||
const bool shiftPressed = event->modifiers() & Qt::ShiftModifier;
|
const bool shiftPressed = event->modifiers() & Qt::ShiftModifier;
|
||||||
const bool controlPressed = event->modifiers() & Qt::ControlModifier;
|
const bool controlPressed = event->modifiers() & Qt::ControlModifier;
|
||||||
const bool shiftOrControlPressed = shiftPressed || controlPressed;
|
const bool shiftOrControlPressed = shiftPressed || controlPressed;
|
||||||
|
const bool navigationPressed = key == Qt::Key_Home || key == Qt::Key_End ||
|
||||||
|
key == Qt::Key_Up || key == Qt::Key_Down ||
|
||||||
|
key == Qt::Key_Left || key == Qt::Key_Right;
|
||||||
|
|
||||||
const int itemCount = m_model->count();
|
const int itemCount = m_model->count();
|
||||||
|
|
||||||
|
@ -246,11 +249,8 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool selectSingleItem = m_selectionBehavior != NoSelection &&
|
const bool selectSingleItem = m_selectionBehavior != NoSelection && itemCount == 1 && navigationPressed;
|
||||||
itemCount == 1 &&
|
|
||||||
(key == Qt::Key_Home || key == Qt::Key_End ||
|
|
||||||
key == Qt::Key_Up || key == Qt::Key_Down ||
|
|
||||||
key == Qt::Key_Left || key == Qt::Key_Right);
|
|
||||||
if (selectSingleItem) {
|
if (selectSingleItem) {
|
||||||
const int current = m_selectionManager->currentItem();
|
const int current = m_selectionManager->currentItem();
|
||||||
m_selectionManager->setSelected(current);
|
m_selectionManager->setSelected(current);
|
||||||
|
@ -458,8 +458,12 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_view->scrollToItem(index);
|
if (navigationPressed) {
|
||||||
|
if (index < m_view->firstVisibleIndex() || index > m_view->lastVisibleIndex()) {
|
||||||
|
m_view->scrollToItem(index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue