From 068cbddd9f50cdf7c1424b24128605adfacba278 Mon Sep 17 00:00:00 2001 From: Jonah Iden Date: Tue, 19 Mar 2024 13:47:22 +0100 Subject: [PATCH] fix keybindings triggering when cell editor is focused Signed-off-by: Jonah Iden --- .../contributions/notebook-cell-actions-contribution.ts | 4 ++-- .../src/browser/service/notebook-context-manager.ts | 4 ++++ packages/notebook/src/browser/view/notebook-cell-editor.tsx | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/notebook/src/browser/contributions/notebook-cell-actions-contribution.ts b/packages/notebook/src/browser/contributions/notebook-cell-actions-contribution.ts index 73f7c049c966e..2bf784afa9b12 100644 --- a/packages/notebook/src/browser/contributions/notebook-cell-actions-contribution.ts +++ b/packages/notebook/src/browser/contributions/notebook-cell-actions-contribution.ts @@ -328,12 +328,12 @@ export class NotebookCellActionContribution implements MenuContribution, Command { command: NotebookCellCommands.TO_CODE_CELL_COMMAND.id, keybinding: 'Y', - when: `${NOTEBOOK_EDITOR_FOCUSED} && ${NOTEBOOK_CELL_FOCUSED} && ${NOTEBOOK_CELL_TYPE} == 'markdown'`, + when: `!editorTextFocus && ${NOTEBOOK_EDITOR_FOCUSED} && ${NOTEBOOK_CELL_FOCUSED} && ${NOTEBOOK_CELL_TYPE} == 'markdown'`, }, { command: NotebookCellCommands.TO_MARKDOWN_CELL_COMMAND.id, keybinding: 'M', - when: `${NOTEBOOK_EDITOR_FOCUSED} && ${NOTEBOOK_CELL_FOCUSED} && ${NOTEBOOK_CELL_TYPE} == 'code'`, + when: `!editorTextFocus && ${NOTEBOOK_EDITOR_FOCUSED} && ${NOTEBOOK_CELL_FOCUSED} && ${NOTEBOOK_CELL_TYPE} == 'code'`, } ); } diff --git a/packages/notebook/src/browser/service/notebook-context-manager.ts b/packages/notebook/src/browser/service/notebook-context-manager.ts index 53fa382868f67..7980fcfa82090 100644 --- a/packages/notebook/src/browser/service/notebook-context-manager.ts +++ b/packages/notebook/src/browser/service/notebook-context-manager.ts @@ -113,6 +113,10 @@ export class NotebookContextManager { } + onDidEditorTextFocus(focus: boolean): void { + this.scopedStore.setContext('inputFocus', focus); + } + createContextKeyChangedEvent(affectedKeys: string[]): ContextKeyChangeEvent { return { affects: keys => affectedKeys.some(key => keys.has(key)) }; } diff --git a/packages/notebook/src/browser/view/notebook-cell-editor.tsx b/packages/notebook/src/browser/view/notebook-cell-editor.tsx index 1ad807a14cfb3..5edc85c4596d5 100644 --- a/packages/notebook/src/browser/view/notebook-cell-editor.tsx +++ b/packages/notebook/src/browser/view/notebook-cell-editor.tsx @@ -97,6 +97,12 @@ export class CellEditor extends React.Component { this.toDispose.push(this.editor.onDocumentContentChanged(e => { notebookModel.cellDirtyChanged(cell, true); })); + this.toDispose.push(this.editor.getControl().onDidFocusEditorText(() => { + this.props.notebookContextManager.onDidEditorTextFocus(true); + })); + this.toDispose.push(this.editor.getControl().onDidBlurEditorText(() => { + this.props.notebookContextManager.onDidEditorTextFocus(false); + })); } }