Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions Modules/MainScreen/MainScreen.qml
Original file line number Diff line number Diff line change
Expand Up @@ -570,4 +570,29 @@ PanelWindow {
enabled: root.isPanelOpen && (PanelService.openedPanel.onNumberPressed !== undefined)
onActivated: PanelService.openedPanel.onNumberPressed(9)
}

// ===== VIM BINDINGS =====
Shortcut {
sequence: "H"
enabled: root.isPanelOpen && (PanelService.openedPanel.onHPressed !== undefined)
onActivated: PanelService.openedPanel.onHPressed()
}

Shortcut {
sequence: "J"
enabled: root.isPanelOpen && (PanelService.openedPanel.onJPressed !== undefined)
onActivated: PanelService.openedPanel.onJPressed()
}

Shortcut {
sequence: "K"
enabled: root.isPanelOpen && (PanelService.openedPanel.onKPressed !== undefined)
onActivated: PanelService.openedPanel.onKPressed()
}

Shortcut {
sequence: "L"
enabled: root.isPanelOpen && (PanelService.openedPanel.onLPressed !== undefined)
onActivated: PanelService.openedPanel.onLPressed()
}
}
26 changes: 26 additions & 0 deletions Modules/Panels/Plugins/PluginPanelSlot.qml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,32 @@ SmartPanel {
panelAnchorLeft: pluginInstance?.panelAnchorLeft ?? false
panelAnchorRight: pluginInstance?.panelAnchorRight ?? false

// ===== KEYBOARD EVENT FORWARDING =====
// Helper function to safely retrieve a handler function from the plugin instance
function getHandler(funcName) {
// Check if instance exists and has the function
if (root.pluginInstance && typeof root.pluginInstance[funcName] === "function") {
// Return a wrapper that calls the function on the instance
return function() { root.pluginInstance[funcName]() }
}
return undefined;
}

// Standard Navigation
property var onTabPressed: root.pluginInstance ? getHandler("onTabPressed") : undefined
property var onBackTabPressed: root.pluginInstance ? getHandler("onBackTabPressed") : undefined
property var onUpPressed: root.pluginInstance ? getHandler("onUpPressed") : undefined
property var onDownPressed: root.pluginInstance ? getHandler("onDownPressed") : undefined
property var onLeftPressed: root.pluginInstance ? getHandler("onLeftPressed") : undefined
property var onRightPressed: root.pluginInstance ? getHandler("onRightPressed") : undefined
property var onReturnPressed: root.pluginInstance ? getHandler("onReturnPressed") : undefined

// Vim Navigation
property var onHPressed: root.pluginInstance ? getHandler("onHPressed") : undefined
property var onJPressed: root.pluginInstance ? getHandler("onJPressed") : undefined
property var onKPressed: root.pluginInstance ? getHandler("onKPressed") : undefined
property var onLPressed: root.pluginInstance ? getHandler("onLPressed") : undefined

// Panel content is dynamically loaded
panelContent: Component {
Item {
Expand Down