From ff6bc083fd034044b22c6b94863f5f23ee881f98 Mon Sep 17 00:00:00 2001 From: ItsLemmy Date: Sat, 6 Dec 2025 22:16:31 -0500 Subject: [PATCH] Panels: simplified keyboard shortcuts management. + Don't hog the shortcuts unless they are defined, this bring back support for the Return key as submit in NTextInput. --- Modules/MainScreen/MainScreen.qml | 133 ++++++++---------------------- Modules/MainScreen/SmartPanel.qml | 29 +------ 2 files changed, 35 insertions(+), 127 deletions(-) diff --git a/Modules/MainScreen/MainScreen.qml b/Modules/MainScreen/MainScreen.qml index 9fca2e379..afa9fe54c 100644 --- a/Modules/MainScreen/MainScreen.qml +++ b/Modules/MainScreen/MainScreen.qml @@ -419,167 +419,100 @@ PanelWindow { // ======================================== // These shortcuts delegate to the opened panel's handler functions // Panels can implement: onEscapePressed, onTabPressed, onBackTabPressed, - // onUpPressed, onDownPressed, onReturnPressed - + // onUpPressed, onDownPressed, onReturnPressed, etc... Shortcut { sequence: "Escape" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onEscapePressed) { - PanelService.openedPanel.onEscapePressed(); - } else if (PanelService.openedPanel) { - PanelService.openedPanel.close(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onEscapePressed !== undefined) + onActivated: PanelService.openedPanel.onEscapePressed() } Shortcut { sequence: "Tab" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onTabPressed) { - PanelService.openedPanel.onTabPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onTabPressed !== undefined) + onActivated: PanelService.openedPanel.onTabPressed() } Shortcut { sequence: "Backtab" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onBackTabPressed) { - PanelService.openedPanel.onBackTabPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onBackTabPressed !== undefined) + onActivated: PanelService.openedPanel.onBackTabPressed() } Shortcut { sequence: "Up" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onUpPressed) { - PanelService.openedPanel.onUpPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onUpPressed !== undefined) + onActivated: PanelService.openedPanel.onUpPressed() } Shortcut { sequence: "Down" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onDownPressed) { - PanelService.openedPanel.onDownPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onDownPressed !== undefined) + onActivated: PanelService.openedPanel.onDownPressed() } Shortcut { sequence: "Return" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onReturnPressed) { - PanelService.openedPanel.onReturnPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onReturnPressed !== undefined) + onActivated: PanelService.openedPanel.onReturnPressed() } Shortcut { sequence: "Left" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onLeftPressed) { - PanelService.openedPanel.onLeftPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onLeftPressed !== undefined) + onActivated: PanelService.openedPanel.onLeftPressed() } Shortcut { sequence: "Right" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onRightPressed) { - PanelService.openedPanel.onRightPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onRightPressed !== undefined) + onActivated: PanelService.openedPanel.onRightPressed() } Shortcut { sequence: "Home" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onHomePressed) { - PanelService.openedPanel.onHomePressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onHomePressed !== undefined) + onActivated: PanelService.openedPanel.onHomePressed() } Shortcut { sequence: "End" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onEndPressed) { - PanelService.openedPanel.onEndPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onEndPressed !== undefined) + onActivated: PanelService.openedPanel.onEndPressed() } Shortcut { sequence: "PgUp" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onPageUpPressed) { - PanelService.openedPanel.onPageUpPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onPageUpPressed !== undefined) + onActivated: PanelService.openedPanel.onPageUpPressed() } Shortcut { sequence: "PgDown" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onPageDownPressed) { - PanelService.openedPanel.onPageDownPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onPageDownPressed !== undefined) + onActivated: PanelService.openedPanel.onPageDownPressed() } Shortcut { sequence: "Ctrl+J" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onCtrlJPressed) { - PanelService.openedPanel.onCtrlJPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlJPressed !== undefined) + onActivated: PanelService.openedPanel.onCtrlJPressed() } Shortcut { sequence: "Ctrl+K" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onCtrlKPressed) { - PanelService.openedPanel.onCtrlKPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlKPressed !== undefined) + onActivated: PanelService.openedPanel.onCtrlKPressed() } Shortcut { sequence: "Ctrl+N" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onCtrlNPressed) { - PanelService.openedPanel.onCtrlNPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlNPressed !== undefined) + onActivated: PanelService.openedPanel.onCtrlNPressed() } Shortcut { sequence: "Ctrl+P" - enabled: root.isPanelOpen - onActivated: { - if (PanelService.openedPanel && PanelService.openedPanel.onCtrlPPressed) { - PanelService.openedPanel.onCtrlPPressed(); - } - } + enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlPPressed !== undefined) + onActivated: PanelService.openedPanel.onCtrlPPressed() } } diff --git a/Modules/MainScreen/SmartPanel.qml b/Modules/MainScreen/SmartPanel.qml index eb1f2bcfe..9df149f4f 100644 --- a/Modules/MainScreen/SmartPanel.qml +++ b/Modules/MainScreen/SmartPanel.qml @@ -68,38 +68,13 @@ Item { property bool exclusiveKeyboard: true - // Keyboard event handlers - override these in specific panels to handle shortcuts + // Keyboard event handler // These are called from MainScreen's centralized shortcuts + // override these in specific panels to handle shortcuts function onEscapePressed() { if (closeWithEscape) close(); } - function onTabPressed() { - } - function onBackTabPressed() { - } - function onUpPressed() { - } - function onDownPressed() { - } - function onLeftPressed() { - } - function onRightPressed() { - } - function onReturnPressed() { - } - function onHomePressed() { - } - function onEndPressed() { - } - function onPageUpPressed() { - } - function onPageDownPressed() { - } - function onCtrlJPressed() { - } - function onCtrlKPressed() { - } // Expose panel region for background rendering readonly property var panelRegion: panelContent.geometryPlaceholder