diff --git a/frontend/src/ui/list.ts b/frontend/src/ui/list.ts index 81d46a6..ed77051 100644 --- a/frontend/src/ui/list.ts +++ b/frontend/src/ui/list.ts @@ -44,14 +44,13 @@ export class List extends UINode { if (idx === this.focused) { if (this.focused > 0) this.focused--; this.calculateTabIndex(); - this.children[this.focused].focus() } return this; } public _onFocus() { super._onFocus(); - this.children[this.focused].focus(); + this.focusSelectedMessage(); return this; } @@ -75,14 +74,14 @@ export class List extends UINode { this.children[this.focused].setTabbable(false); this.focused = Math.max(0, this.focused - 1); this.children[this.focused].setTabbable(true); - this.children[this.focused].focus(); + this.focusSelectedMessage(); return true; break; case "ArrowDown": this.children[this.focused].setTabbable(false); this.focused = Math.min(this.children.length - 1, this.focused + 1); this.children[this.focused].setTabbable(true); - this.children[this.focused].focus(); + this.focusSelectedMessage(); return true; break; case "Enter": @@ -93,14 +92,14 @@ export class List extends UINode { this.children[this.focused].setTabbable(false); this.focused = 0; this.children[this.focused].setTabbable(true); - this.children[this.focused].focus(); + this.focusSelectedMessage(); return true; break; case "End": this.children[this.focused].setTabbable(false); this.focused = this.children.length - 1; this.children[this.focused].setTabbable(true); - this.children[this.focused].focus(); + this.focusSelectedMessage(); return true; break; default: @@ -169,4 +168,8 @@ export class List extends UINode { this.children[this.focused].setTabbable(true); return this; } + + public focusSelectedMessage() { + this.children[this.focused].focus() + } } \ No newline at end of file diff --git a/frontend/src/views/main.ts b/frontend/src/views/main.ts index ea0b1a6..64eaa77 100644 --- a/frontend/src/views/main.ts +++ b/frontend/src/views/main.ts @@ -228,11 +228,13 @@ export class MainView extends View { itm.onClick(() => { this.openMessageDialog(message); }) - itm.onKeyDown((key: string, alt: boolean | undefined, shift: boolean | undefined, ctrl: boolean | undefined) => { + itm.onKeyDown(async(key: string, alt: boolean | undefined, shift: boolean | undefined, ctrl: boolean | undefined) => { if (key === "Delete") { - this.removeMessage(message.id); - if (this.messageList.children.length === 1) { + await this.removeMessage(message.id); + if (this.messageList.children.length === 0) { this.messageInput.focus() + } else { + this.messageList.focusSelectedMessage() } } });