diff --git a/applets/kicker/package/contents/ui/ItemListView.qml b/applets/kicker/package/contents/ui/ItemListView.qml --- a/applets/kicker/package/contents/ui/ItemListView.qml +++ b/applets/kicker/package/contents/ui/ItemListView.qml @@ -48,6 +48,7 @@ property alias keyNavigationWraps: listView.keyNavigationWraps property alias showChildDialogs: listView.showChildDialogs property alias model: listView.model + property alias count: listView.count property alias containsMouse: listener.containsMouse property alias resetOnExitDelay: resetIndexTimer.interval @@ -118,6 +119,7 @@ if (containsMouse) { resetIndexTimer.stop(); + itemList.forceActiveFocus(); } else if ((!childDialog || !dialog) && (!currentItem || !currentItem.menu.opened)) { resetIndexTimer.start(); @@ -156,8 +158,6 @@ onCurrentIndexChanged: { if (currentIndex != -1) { - itemList.forceActiveFocus(); - if (childDialog) { if (currentItem && currentItem.hasChildren) { childDialog.model = model.modelForRow(currentIndex); 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 @@ -376,28 +376,34 @@ if (rootList.visible) { rootList.showChildDialogs = false; rootList.currentIndex = rootList.model.count - 1; + rootList.forceActiveFocus(); rootList.showChildDialogs = true; } if (runnerColumns.visible) { for (var i = 0; i < runnerModel.count; ++i) { if (runnerModel.modelForRow(i).count) { - runnerColumnsRepeater.itemAt(i).currentIndex = runnerModel.modelForRow(i).count - 1; + var targetList = runnerColumnsRepeater.itemAt(i); + targetList.currentIndex = runnerModel.modelForRow(i).count - 1; + targetList.forceActiveFocus(); break; } } } } else if (event.key == Qt.Key_Down) { if (rootList.visible) { rootList.showChildDialogs = false; rootList.currentIndex = 0; + rootList.forceActiveFocus(); rootList.showChildDialogs = true; } if (runnerColumns.visible) { for (var i = 0; i < runnerModel.count; ++i) { if (runnerModel.modelForRow(i).count) { - runnerColumnsRepeater.itemAt(i).currentIndex = 0; + var targetList = runnerColumnsRepeater.itemAt(i); + targetList.currentIndex = 0; + targetList.forceActiveFocus(); break; } } 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 @@ -95,6 +95,12 @@ visible: false; } } + + onCountChanged: { + if (index == 0 && searchField.focus) { + currentIndex = 0; + } + } } Component.onCompleted: {