diff --git a/applets/kicker/package/contents/ui/DashboardRepresentation.qml b/applets/kicker/package/contents/ui/DashboardRepresentation.qml --- a/applets/kicker/package/contents/ui/DashboardRepresentation.qml +++ b/applets/kicker/package/contents/ui/DashboardRepresentation.qml @@ -438,6 +438,21 @@ systemFavoritesGrid.tryActivate(0, currentCol()); } + Keys.onPressed: { + if (event.key == Qt.Key_Tab) { + event.accepted = true; + + if (tabBar.visible) { + tabBar.focus = true; + } else { + mainColumn.tryActivate(0, 0); + } + } else if (event.key == Qt.Key_Backtab) { + event.accepted = true; + systemFavoritesGrid.tryActivate(0, 0); + } + } + Binding { target: globalFavorites property: "iconSize" @@ -477,6 +492,23 @@ onKeyNavUp: { globalFavoritesGrid.tryActivate(globalFavoritesGrid.rows - 1, currentCol()); } + + Keys.onPressed: { + if (event.key == Qt.Key_Tab) { + event.accepted = true; + + if (globalFavoritesGrid.enabled) { + globalFavoritesGrid.tryActivate(0, 0); + } else if (tabBar.visible) { + tabBar.focus = true; + } else { + mainColumn.tryActivate(0, 0); + } + } else if (event.key == Qt.Key_Backtab) { + event.accepted = true; + filterList.forceActiveFocus(); + } + } } } @@ -693,6 +725,23 @@ target.tryActivate(targetRow, favoritesColumn.columns - 1); } } + + Keys.onPressed: { + if (event.key == Qt.Key_Tab) { + event.accepted = true; + filterList.forceActiveFocus(); + } else if (event.key == Qt.Key_Backtab) { + event.accepted = true; + + if (tabBar.visible) { + tabBar.focus = true; + } else if (globalFavoritesGrid.enabled) { + globalFavoritesGrid.tryActivate(0, 0); + } else { + systemFavoritesGrid.tryActivate(0, 0); + } + } + } } Item { @@ -953,6 +1002,12 @@ var currentRow = Math.max(0, Math.ceil(currentItem.y / mainGrid.cellHeight) - 1); mainColumn.tryActivate(currentRow, mainColumn.columns - 1); + } else if (event.key == Qt.Key_Tab) { + event.accepted = true; + systemFavoritesGrid.tryActivate(0, 0); + } else if (event.key == Qt.Key_Backtab) { + event.accepted = true; + mainColumn.tryActivate(0, 0); } } } diff --git a/applets/kicker/package/contents/ui/DashboardTabBar.qml b/applets/kicker/package/contents/ui/DashboardTabBar.qml --- a/applets/kicker/package/contents/ui/DashboardTabBar.qml +++ b/applets/kicker/package/contents/ui/DashboardTabBar.qml @@ -66,5 +66,20 @@ activeTab = 1; } } + + Keys.onPressed: { + if (event.key == Qt.Key_Tab) { + event.accepted = true; + mainColumn.tryActivate(0, 0); + } else if (event.key == Qt.Key_Backtab) { + event.accepted = true; + + if (globalFavoritesGrid.enabled) { + globalFavoritesGrid.tryActivate(0, 0); + } else { + systemFavoritesGrid.tryActivate(0, 0); + } + } + } } diff --git a/applets/kicker/plugin/dashboardwindow.cpp b/applets/kicker/plugin/dashboardwindow.cpp --- a/applets/kicker/plugin/dashboardwindow.cpp +++ b/applets/kicker/plugin/dashboardwindow.cpp @@ -179,7 +179,9 @@ && !(e->key() == Qt::Key_PageDown) && !(e->key() == Qt::Key_Enter) && !(e->key() == Qt::Key_Return) - && !(e->key() == Qt::Key_Menu)) { + && !(e->key() == Qt::Key_Menu) + && !(e->key() == Qt::Key_Tab) + && !(e->key() == Qt::Key_Backtab)) { QPointer previousFocusItem = activeFocusItem();