diff --git a/applets/kicker/package/contents/ui/MenuRepresentation.qml b/applets/kicker/package/contents/ui/MenuRepresentation.qml --- a/applets/kicker/package/contents/ui/MenuRepresentation.qml +++ b/applets/kicker/package/contents/ui/MenuRepresentation.qml @@ -393,20 +393,38 @@ } else if (event.key == Qt.Key_Down) { if (rootList.visible) { rootList.showChildDialogs = false; - rootList.currentIndex = 0; + rootList.currentIndex = Math.min(1, rootList.count); rootList.forceActiveFocus(); rootList.showChildDialogs = true; } if (runnerColumns.visible) { for (var i = 0; i < runnerModel.count; ++i) { + if (runnerModel.modelForRow(i).count) { + var targetList = runnerColumnsRepeater.itemAt(i); + targetList.currentIndex = Math.min(1, targetList.count); + targetList.forceActiveFocus(); + break; + } + } + } + } else if (event.key == Qt.Key_Left && cursorPosition == 0) { + for (var i = runnerModel.count; i >= 0; --i) { if (runnerModel.modelForRow(i).count) { var targetList = runnerColumnsRepeater.itemAt(i); targetList.currentIndex = 0; targetList.forceActiveFocus(); break; } } + } else if (event.key == Qt.Key_Right && cursorPosition == length) { + for (var i = 1; i < runnerModel.count; ++i) { + if (runnerModel.modelForRow(i).count) { + var targetList = runnerColumnsRepeater.itemAt(i); + targetList.currentIndex = 0; + targetList.forceActiveFocus(); + break; + } } } else if (event.key == Qt.Key_Enter || event.key == Qt.Key_Return) { if (runnerColumns.visible && runnerModel.modelForRow(0).count) { diff --git a/applets/kicker/package/contents/ui/RunnerResultsList.qml b/applets/kicker/package/contents/ui/RunnerResultsList.qml --- a/applets/kicker/package/contents/ui/RunnerResultsList.qml +++ b/applets/kicker/package/contents/ui/RunnerResultsList.qml @@ -30,6 +30,7 @@ signal keyNavigationAtListEnd property alias currentIndex: runnerMatches.currentIndex + property alias count: runnerMatches.count property alias containsMouse: runnerMatches.containsMouse Accessible.name: header.text