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.
This commit is contained in:
ItsLemmy
2025-12-06 22:16:31 -05:00
parent ea9e830ace
commit ff6bc083fd
2 changed files with 35 additions and 127 deletions
+33 -100
View File
@@ -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()
}
}
+2 -27
View File
@@ -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