From aa0b5ca799a8abfeae4b9a8f0cb15e7f7ddd0c0d Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Mon, 23 Mar 2026 12:10:15 +0100 Subject: [PATCH] fix: correct library hint labels and wire Y/Enter to direct launch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A/Space (confirm) opens the detail view, not launches → label was 'Play', now 'Details'. Y/Enter (details) was unhandled → wire onDetailsPressed + Keys.onReturnPressed/EnterPressed to launchFocused(), label was 'Details', now 'Play'. Matches SteamOS/Kodi pattern: primary button = info, secondary = launch. --- src/qml/LibraryView.qml | 8 ++++++-- src/qml/components/BottomHintBar.qml | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/qml/LibraryView.qml b/src/qml/LibraryView.qml index f706177..261ecf9 100644 --- a/src/qml/LibraryView.qml +++ b/src/qml/LibraryView.qml @@ -110,8 +110,8 @@ FocusScope { } } - Keys.onReturnPressed: libraryRoot.selectFocused() - Keys.onEnterPressed: libraryRoot.selectFocused() + Keys.onReturnPressed: libraryRoot.launchFocused() + Keys.onEnterPressed: libraryRoot.launchFocused() Keys.onSpacePressed: libraryRoot.selectFocused() QQC2.BusyIndicator { @@ -126,6 +126,10 @@ FocusScope { if (!grid.flickable || !grid.flickable.activeFocus) return libraryRoot.selectFocused() } + function onDetailsPressed() { + if (!grid.flickable || !grid.flickable.activeFocus) return + libraryRoot.launchFocused() + } function onNavigateUp() { if (!grid.flickable || !grid.flickable.activeFocus) return let cols = Math.max(1, Math.floor(grid.width / grid.cellWidth)) diff --git a/src/qml/components/BottomHintBar.qml b/src/qml/components/BottomHintBar.qml index ad2c7b8..90fd2ad 100644 --- a/src/qml/components/BottomHintBar.qml +++ b/src/qml/components/BottomHintBar.qml @@ -178,9 +178,9 @@ RowLayout { if (root.context === "library") { switch (action) { case "navigate": return (useGamepadHints || keyboardLabel("navigate") !== "") ? i18n("Navigate") : "" - case "confirm": return i18n("Play") + case "confirm": return i18n("Details") case "back": return "" - case "details": return i18n("Details") + case "details": return i18n("Play") case "search": return i18n("Search") case "lb": return i18n("Prev Source") case "rb": return i18n("Next Source")