diff --git a/src/app/workspace/workspaceview.tsx b/src/app/workspace/workspaceview.tsx
index 4d874f33..84915def 100644
--- a/src/app/workspace/workspaceview.tsx
+++ b/src/app/workspace/workspaceview.tsx
@@ -54,33 +54,34 @@ class SessionKeybindings extends React.Component<{}, {}> {
GlobalModel.onBracketCmd(1);
return true;
});
- keybindManager.registerKeybinding("pane", "session", "app:selectLineAbove", (waveEvent) => {
+ keybindManager.registerKeybinding("pane", "screen", "app:selectLineAbove", (waveEvent) => {
GlobalModel.onMetaArrowUp();
return true;
});
- keybindManager.registerKeybinding("pane", "session", "app:selectLineBelow", (waveEvent) => {
+ keybindManager.registerKeybinding("pane", "screen", "app:selectLineBelow", (waveEvent) => {
GlobalModel.onMetaArrowDown();
return true;
});
- keybindManager.registerKeybinding("pane", "session", "app:restartCommand", (waveEvent) => {
+ keybindManager.registerKeybinding("pane", "screen", "app:restartCommand", (waveEvent) => {
GlobalModel.onRestartCommand();
return true;
});
- keybindManager.registerKeybinding("pane", "session", "app:restartLastCommand", (waveEvent) => {
+ keybindManager.registerKeybinding("pane", "screen", "app:restartLastCommand", (waveEvent) => {
GlobalModel.onRestartLastCommand();
return true;
});
- keybindManager.registerKeybinding("pane", "session", "app:focusSelectedLine", (waveEvent) => {
+ keybindManager.registerKeybinding("pane", "screen", "app:focusSelectedLine", (waveEvent) => {
GlobalModel.onFocusSelectedLine();
return true;
});
- keybindManager.registerKeybinding("pane", "session", "app:deleteActiveLine", (waveEvent) => {
+ keybindManager.registerKeybinding("pane", "screen", "app:deleteActiveLine", (waveEvent) => {
return GlobalModel.handleDeleteActiveLine();
});
}
componentWillUnmount() {
GlobalModel.keybindManager.unregisterDomain("session");
+ GlobalModel.keybindManager.unregisterDomain("screen");
}
render() {
@@ -220,7 +221,7 @@ class WorkspaceView extends React.Component<{}, {}> {
-
+
diff --git a/src/util/keyutil.ts b/src/util/keyutil.ts
index c70f67e0..7f0bfe69 100644
--- a/src/util/keyutil.ts
+++ b/src/util/keyutil.ts
@@ -277,6 +277,49 @@ class KeybindManager {
return false;
}
+ processModalLevel(nativeEvent: any, event: WaveKeyboardEvent, keybindsArray: Array): boolean {
+ let curModalDomain: string = "";
+ // iterate through keybinds in backwards order
+ let domainCallbacksToRun: Map = new Map();
+ for (let index = keybindsArray.length - 1; index >= 0; index--) {
+ let curKeybind = keybindsArray[index];
+ if (curModalDomain == "") {
+ curModalDomain = curKeybind.domain;
+ }
+ if (curKeybind.domain != curModalDomain) {
+ continue;
+ }
+ if (this.domainCallbacks.has(curKeybind.domain)) {
+ let curDomainCallback = this.domainCallbacks.get(curKeybind.domain);
+ if (curDomainCallback != null) {
+ domainCallbacksToRun.set(curKeybind.domain, curDomainCallback);
+ }
+ }
+ if (this.checkKeyPressed(event, curKeybind.keybinding)) {
+ if (DumpLogs) {
+ console.log("keybind found", curKeybind);
+ }
+ let shouldReturn = false;
+ let shouldRunCommand = true;
+ if (curKeybind.callback != null) {
+ shouldReturn = curKeybind.callback(event);
+ shouldRunCommand = false;
+ }
+ if (shouldRunCommand) {
+ shouldReturn = this.runSlashCommand(curKeybind);
+ }
+ if (shouldReturn) {
+ nativeEvent.preventDefault();
+ nativeEvent.stopPropagation();
+ this.runDomainCallbacks(event, domainCallbacksToRun);
+ return true;
+ }
+ }
+ }
+ this.runDomainCallbacks(event, domainCallbacksToRun);
+ return false;
+ }
+
processKeyEvent(nativeEvent: any, event: WaveKeyboardEvent): boolean {
let modalLevel = this.levelMap.get("modal");
if (modalLevel.length != 0) {
@@ -287,7 +330,7 @@ class KeybindManager {
if (shouldReturn) {
return true;
}
- shouldReturn = this.processLevel(nativeEvent, event, modalLevel);
+ shouldReturn = this.processModalLevel(nativeEvent, event, modalLevel);
if (shouldReturn) {
return true;
}