Skip to content

Commit 4f6c2ee

Browse files
authored
Other key bind bug fixes (#529)
1 parent a1e4e80 commit 4f6c2ee

2 files changed

Lines changed: 52 additions & 8 deletions

File tree

src/app/workspace/workspaceview.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,33 +54,34 @@ class SessionKeybindings extends React.Component<{}, {}> {
5454
GlobalModel.onBracketCmd(1);
5555
return true;
5656
});
57-
keybindManager.registerKeybinding("pane", "session", "app:selectLineAbove", (waveEvent) => {
57+
keybindManager.registerKeybinding("pane", "screen", "app:selectLineAbove", (waveEvent) => {
5858
GlobalModel.onMetaArrowUp();
5959
return true;
6060
});
61-
keybindManager.registerKeybinding("pane", "session", "app:selectLineBelow", (waveEvent) => {
61+
keybindManager.registerKeybinding("pane", "screen", "app:selectLineBelow", (waveEvent) => {
6262
GlobalModel.onMetaArrowDown();
6363
return true;
6464
});
65-
keybindManager.registerKeybinding("pane", "session", "app:restartCommand", (waveEvent) => {
65+
keybindManager.registerKeybinding("pane", "screen", "app:restartCommand", (waveEvent) => {
6666
GlobalModel.onRestartCommand();
6767
return true;
6868
});
69-
keybindManager.registerKeybinding("pane", "session", "app:restartLastCommand", (waveEvent) => {
69+
keybindManager.registerKeybinding("pane", "screen", "app:restartLastCommand", (waveEvent) => {
7070
GlobalModel.onRestartLastCommand();
7171
return true;
7272
});
73-
keybindManager.registerKeybinding("pane", "session", "app:focusSelectedLine", (waveEvent) => {
73+
keybindManager.registerKeybinding("pane", "screen", "app:focusSelectedLine", (waveEvent) => {
7474
GlobalModel.onFocusSelectedLine();
7575
return true;
7676
});
77-
keybindManager.registerKeybinding("pane", "session", "app:deleteActiveLine", (waveEvent) => {
77+
keybindManager.registerKeybinding("pane", "screen", "app:deleteActiveLine", (waveEvent) => {
7878
return GlobalModel.handleDeleteActiveLine();
7979
});
8080
}
8181

8282
componentWillUnmount() {
8383
GlobalModel.keybindManager.unregisterDomain("session");
84+
GlobalModel.keybindManager.unregisterDomain("screen");
8485
}
8586

8687
render() {
@@ -220,7 +221,7 @@ class WorkspaceView extends React.Component<{}, {}> {
220221
<i className="fa-solid fa-sharp fa-xmark-large" />
221222
</div>
222223
<TabSettings key={activeScreen.screenId} screen={activeScreen} />
223-
<If condition={showTabSettings}>
224+
<If condition={showTabSettings && !isHidden}>
224225
<TabSettingsPulldownKeybindings />
225226
</If>
226227
</div>

src/util/keyutil.ts

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,49 @@ class KeybindManager {
277277
return false;
278278
}
279279

280+
processModalLevel(nativeEvent: any, event: WaveKeyboardEvent, keybindsArray: Array<Keybind>): boolean {
281+
let curModalDomain: string = "";
282+
// iterate through keybinds in backwards order
283+
let domainCallbacksToRun: Map<string, KeybindCallback> = new Map();
284+
for (let index = keybindsArray.length - 1; index >= 0; index--) {
285+
let curKeybind = keybindsArray[index];
286+
if (curModalDomain == "") {
287+
curModalDomain = curKeybind.domain;
288+
}
289+
if (curKeybind.domain != curModalDomain) {
290+
continue;
291+
}
292+
if (this.domainCallbacks.has(curKeybind.domain)) {
293+
let curDomainCallback = this.domainCallbacks.get(curKeybind.domain);
294+
if (curDomainCallback != null) {
295+
domainCallbacksToRun.set(curKeybind.domain, curDomainCallback);
296+
}
297+
}
298+
if (this.checkKeyPressed(event, curKeybind.keybinding)) {
299+
if (DumpLogs) {
300+
console.log("keybind found", curKeybind);
301+
}
302+
let shouldReturn = false;
303+
let shouldRunCommand = true;
304+
if (curKeybind.callback != null) {
305+
shouldReturn = curKeybind.callback(event);
306+
shouldRunCommand = false;
307+
}
308+
if (shouldRunCommand) {
309+
shouldReturn = this.runSlashCommand(curKeybind);
310+
}
311+
if (shouldReturn) {
312+
nativeEvent.preventDefault();
313+
nativeEvent.stopPropagation();
314+
this.runDomainCallbacks(event, domainCallbacksToRun);
315+
return true;
316+
}
317+
}
318+
}
319+
this.runDomainCallbacks(event, domainCallbacksToRun);
320+
return false;
321+
}
322+
280323
processKeyEvent(nativeEvent: any, event: WaveKeyboardEvent): boolean {
281324
let modalLevel = this.levelMap.get("modal");
282325
if (modalLevel.length != 0) {
@@ -287,7 +330,7 @@ class KeybindManager {
287330
if (shouldReturn) {
288331
return true;
289332
}
290-
shouldReturn = this.processLevel(nativeEvent, event, modalLevel);
333+
shouldReturn = this.processModalLevel(nativeEvent, event, modalLevel);
291334
if (shouldReturn) {
292335
return true;
293336
}

0 commit comments

Comments
 (0)