diff --git a/archive/opensumi-module-libro/src/browser/libro-keybind-contribution.ts b/archive/opensumi-module-libro/src/browser/libro-keybind-contribution.ts index 5df99906..f8bb73ce 100644 --- a/archive/opensumi-module-libro/src/browser/libro-keybind-contribution.ts +++ b/archive/opensumi-module-libro/src/browser/libro-keybind-contribution.ts @@ -1,12 +1,14 @@ import { LibroSearchToggleCommand, LibroService, + LibroView, NotebookCommands, } from '@difizen/libro-jupyter'; import type { Container } from '@difizen/mana-app'; import { CommandRegistry as LibroCommandRegistry } from '@difizen/mana-app'; import { Autowired } from '@opensumi/di'; import type { + IContextKey, KeybindingRegistry, MaybePromise, } from '@opensumi/ide-core-browser'; @@ -36,22 +38,33 @@ export class LibroKeybindContribution protected readonly commandRegistry: CommandRegistry; @Autowired(ManaContainer) private readonly manaContainer: Container; + notebookFocusContext: IContextKey; initialize(): MaybePromise { this.registerContextKey(); } + onDidStart(): MaybePromise { + this.libroService.onFocusChanged((e) => { + if (e instanceof LibroView) { + this.notebookFocusContext.set(true); + } else { + this.notebookFocusContext.set(false); + } + }); + } + registerContextKey() { - const notebookFocusContext = this.contextKeyService.createKey( + this.notebookFocusContext = this.contextKeyService.createKey( 'libroNotebookFocused', - false, + this.hasActiveNotebook(), ); this.workbenchEditorService.onActiveResourceChange((e) => { if (e?.uri?.path.ext === `.${LIBRO_COMPONENTS_SCHEME_ID}`) { - notebookFocusContext.set(true); + this.notebookFocusContext.set(true); } else { - notebookFocusContext.set(false); + this.notebookFocusContext.set(false); } }); } @@ -64,6 +77,13 @@ export class LibroKeybindContribution return this.manaContainer.get(LibroCommandRegistry); } + hasActiveNotebook() { + return ( + this.libroService.active instanceof LibroView && + this.libroService.focus instanceof LibroView + ); + } + registerCommands(commands: CommandRegistry) { commands.registerCommand(NotebookCommands['EnterCommandMode'], { execute: () => { diff --git a/archive/opensumi-module-libro/src/mana/editor/module.ts b/archive/opensumi-module-libro/src/mana/editor/module.ts index b7a651d4..b5407aa1 100644 --- a/archive/opensumi-module-libro/src/mana/editor/module.ts +++ b/archive/opensumi-module-libro/src/mana/editor/module.ts @@ -3,7 +3,6 @@ import { CodeEditorModule } from '@difizen/libro-code-editor'; import { ManaModule } from '@difizen/mana-app'; import { LibroE2EditorContribution } from './editor-contribution'; -import { Keybindhandler } from './keybind-handler'; import { LibroOpensumiEditor, LibroOpensumiEditorFactory, @@ -12,7 +11,7 @@ import { } from './opensumi-editor'; export const LibroOpensumiEditorModule = ManaModule.create() - .register(LibroE2EditorContribution, LibroOpensumiEditor, Keybindhandler, { + .register(LibroE2EditorContribution, LibroOpensumiEditor, { token: LibroOpensumiEditorFactory, useFactory: (ctx) => { return (options: IEditorOptions, editorState: EditorState) => {