diff --git a/qml/windowed/AnalysisView.qml b/qml/windowed/AnalysisView.qml index a5c585c1..a58bfd55 100644 --- a/qml/windowed/AnalysisView.qml +++ b/qml/windowed/AnalysisView.qml @@ -14,6 +14,9 @@ import "." Control { id: control + property Item keyTabTarget: frequentlyUsedView.keyTabTarget + property Item nextKeyTabTarget + onFocusChanged: () => { frequentlyUsedView.focus = true } @@ -36,12 +39,14 @@ Control { id: frequentlyUsedView visible: count > 0 maxCount: recentlyInstalledView.visible ? 12 : 16 + nextKeyTabTarget : recentlyInstalledView.visible ? recentlyInstalledView.keyTabTarget : control.nextKeyTabTarget } RecentlyInstalledView { id: recentlyInstalledView visible: count > 0 Layout.topMargin: -(Helper.frequentlyUsed.cellPaddingRows / 2) + nextKeyTabTarget: control.nextKeyTabTarget } Item { diff --git a/qml/windowed/AppList.qml b/qml/windowed/AppList.qml index 0dd0cdac..ccf54cfe 100644 --- a/qml/windowed/AppList.qml +++ b/qml/windowed/AppList.qml @@ -18,6 +18,13 @@ ColumnLayout { signal freeSortViewFolderClicked(string folderId, string folderName) + property Item keyTabTarget: loader.item + property Item nextKeyTabTarget + + onFocusChanged: () => { + loader.item.focus = true + } + function positionViewAtBeginning() { loader.item.positionViewAtBeginning() } @@ -43,6 +50,7 @@ ColumnLayout { id: appCategoryListView MouseAreaCom {} + KeyNavigation.tab: nextKeyTabTarget } } @@ -56,6 +64,7 @@ ColumnLayout { } MouseAreaCom {} + KeyNavigation.tab: nextKeyTabTarget } } diff --git a/qml/windowed/BottomBar.qml b/qml/windowed/BottomBar.qml index ca47470a..b52c8a8b 100644 --- a/qml/windowed/BottomBar.qml +++ b/qml/windowed/BottomBar.qml @@ -14,12 +14,15 @@ import "." Control { id: control + property Item keyTabTarget: shutdownBtn + property Item nextKeyTabTarget property alias searchEdit: searchEdit contentItem: RowLayout { width: parent.width ToolButton { + id: shutdownBtn icon.name: "shutdown" ToolTip.visible: hovered ToolTip.delay: 1000 @@ -76,6 +79,7 @@ Control { onClicked: { LauncherController.currentFrame = "FullscreenFrame" } + KeyNavigation.tab: nextKeyTabTarget } } diff --git a/qml/windowed/FreeSortListView.qml b/qml/windowed/FreeSortListView.qml index c1105391..d86ccf4c 100644 --- a/qml/windowed/FreeSortListView.qml +++ b/qml/windowed/FreeSortListView.qml @@ -15,6 +15,12 @@ Item { signal folderClicked(string folderId, string folderName) + property Item keyTabTarget: listView + + onFocusChanged: () => { + listView.focus = true + } + function positionViewAtBeginning() { listView.positionViewAtBeginning() } @@ -22,11 +28,9 @@ Item { ListView { id: listView anchors.fill: parent - activeFocusOnTab: true highlightFollowsCurrentItem: true clip: true - focus: true highlight: Item { SystemPalette { id: highlightPalette } FocusBoxBorder { diff --git a/qml/windowed/FrequentlyUsedView.qml b/qml/windowed/FrequentlyUsedView.qml index 6d9a5a46..9b4d0dfc 100644 --- a/qml/windowed/FrequentlyUsedView.qml +++ b/qml/windowed/FrequentlyUsedView.qml @@ -18,6 +18,9 @@ Control { frequentlyUsedViewContainer.focus = true } + property Item nextKeyTabTarget + property Item keyTabTarget: frequentlyUsedViewContainer + property int count: frequentlyUsedViewContainer.count property int maxCount: 16 @@ -36,6 +39,7 @@ Control { GridViewContainer { id: frequentlyUsedViewContainer + KeyNavigation.tab: control.nextKeyTabTarget Layout.alignment: Qt.AlignRight Layout.topMargin: 10 Layout.preferredHeight: frequentlyUsedViewContainer.height diff --git a/qml/windowed/GridViewContainer.qml b/qml/windowed/GridViewContainer.qml index dfa020ef..f239396d 100644 --- a/qml/windowed/GridViewContainer.qml +++ b/qml/windowed/GridViewContainer.qml @@ -92,6 +92,16 @@ FocusScope { visible: gridView.activeFocus } } + + Keys.onPressed: function (event) { + if (event.key === Qt.Key_Right && currentIndex === gridView.count - 1) { + gridView.currentIndex = 0; + event.accepted = true; + } else if (event.key === Qt.Key_Left && currentIndex === 0) { + currentIndex = gridView.count - 1; + event.accepted = true; + } + } } } } diff --git a/qml/windowed/RecentlyInstalledView.qml b/qml/windowed/RecentlyInstalledView.qml index 745e3d3a..894e09fc 100644 --- a/qml/windowed/RecentlyInstalledView.qml +++ b/qml/windowed/RecentlyInstalledView.qml @@ -14,9 +14,16 @@ import "." Control { id: control + property Item nextKeyTabTarget + property Item keyTabTarget: recentlyInstalledViewContainer + readonly property int count: recentlyInstalledViewContainer.count readonly property var model: recentlyInstalledViewContainer.model + onFocusChanged: () => { + recentlyInstalledViewContainer.focus = true + } + function positionViewAtBeginning() { recentlyInstalledViewContainer.positionViewAtBeginning() } @@ -31,6 +38,7 @@ Control { GridViewContainer { id: recentlyInstalledViewContainer + KeyNavigation.tab: nextKeyTabTarget Layout.alignment: Qt.AlignRight Layout.preferredHeight: recentlyInstalledViewContainer.height Layout.preferredWidth: recentlyInstalledViewContainer.width diff --git a/qml/windowed/SideBar.qml b/qml/windowed/SideBar.qml index 0526fbb0..8e97db5c 100644 --- a/qml/windowed/SideBar.qml +++ b/qml/windowed/SideBar.qml @@ -18,6 +18,8 @@ ColumnLayout { spacing: 10 property var isFreeSort: true + property Item keyTabTarget: title + property Item nextKeyTabTarget signal switchToFreeSort(bool freeSort) @@ -81,6 +83,7 @@ ColumnLayout { Layout.alignment: Qt.AlignCenter KeyNavigation.down: computer KeyNavigation.up: setting + KeyNavigation.tab: nextKeyTabTarget contentItem: Item { ColumnLayout { diff --git a/qml/windowed/WindowedFrame.qml b/qml/windowed/WindowedFrame.qml index b1848134..b2da8a3c 100644 --- a/qml/windowed/WindowedFrame.qml +++ b/qml/windowed/WindowedFrame.qml @@ -64,6 +64,7 @@ Item { anchors.bottom: parent.bottom anchors.topMargin: 10 anchors.leftMargin: 5 + nextKeyTabTarget: bottomBar.keyTabTarget } Rectangle { @@ -89,13 +90,17 @@ Item { Layout.fillWidth: true Layout.preferredWidth: 220 Layout.fillHeight: true + nextKeyTabTarget: sideBar.keyTabTarget } Loader { id: appGridLoader + property Item keyTabTarget: appGridLoader.item.keyTabTarget Component { id: analysisViewCom AnalysisView { + id: analysisViewCom + nextKeyTabTarget: appList.keyTabTarget } } Component { @@ -120,6 +125,7 @@ Item { anchors.right: parent.right anchors.bottom: parent.bottom anchors.margins: 5 + nextKeyTabTarget: appGridLoader.keyTabTarget } Rectangle {