From ee510f06898cb49192235d504fdde683cbd5c420 Mon Sep 17 00:00:00 2001 From: windingwind <33902321+windingwind@users.noreply.github.com> Date: Tue, 9 Apr 2024 22:33:25 +0800 Subject: [PATCH] fix: selected line position after workspace resizing fix: #929 --- src/elements/workspace.ts | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/elements/workspace.ts b/src/elements/workspace.ts index cc4af54..0add51e 100644 --- a/src/elements/workspace.ts +++ b/src/elements/workspace.ts @@ -5,12 +5,15 @@ import { ContextPane } from "./context"; import { OutlinePane } from "./outlinePane"; export class Workspace extends PluginCEBase { + uid: string = Zotero.Utilities.randomString(8); _item?: Zotero.Item; _editorElement!: EditorElement; _outline!: OutlinePane; _context!: ContextPane; + resizeOb!: ResizeObserver; + get content() { return this._parseContentID( MozXULElement.parseXULToFragment(` @@ -68,9 +71,8 @@ export class Workspace extends PluginCEBase { // MozXULElement.insertFTLIfNeeded(`${config.addonRef}-workspace.ftl`); // For note preview section enabled decision - this.dataset.uid = Zotero.Utilities.randomString(8); - - this._addon.data.workspace.instances[this.dataset.uid] = new WeakRef(this); + this.dataset.uid = this.uid; + this._addon.data.workspace.instances[this.uid] = new WeakRef(this); this._outline = this._queryID("left-container") as unknown as OutlinePane; this._editorElement = this._queryID("editor-main") as EditorElement; @@ -79,9 +81,20 @@ export class Workspace extends PluginCEBase { this._context = this._queryID("right-container") as unknown as ContextPane; this._loadPersist(); + + this.resizeOb = new ResizeObserver(() => { + this._addon.api.editor.scroll( + this.editor, + this._addon.api.editor.getLineAtCursor(this.editor), + ); + }); + this.resizeOb.observe(this._editorElement); } - destroy(): void {} + destroy(): void { + this.resizeOb.disconnect(); + delete this._addon.data.workspace.instances[this.uid]; + } async render() { await this._outline.render();