Przeglądaj źródła

:art: https://github.com/siyuan-note/siyuan/issues/8467

Vanessa 2 lat temu
rodzic
commit
f3a1ce12f8
3 zmienionych plików z 10 dodań i 0 usunięć
  1. 5 0
      app/src/layout/Wnd.ts
  2. 3 0
      app/src/layout/dock/Custom.ts
  3. 2 0
      app/src/plugin/index.ts

+ 5 - 0
app/src/layout/Wnd.ts

@@ -692,6 +692,11 @@ export class Wnd {
         clearCounter();
         this.children.find((item, index) => {
             if (item.id === id) {
+                if (item.model instanceof Custom) {
+                    if (item.model.beforeDestroy) {
+                        item.model.beforeDestroy();
+                    }
+                }
                 if (item.model instanceof Editor && hasSaveScroll) {
                     saveScroll(item.model.editor.protyle);
                 }

+ 3 - 0
app/src/layout/dock/Custom.ts

@@ -9,6 +9,7 @@ export class Custom extends Model {
     public type: string;
     public init: () => void;
     public destroy: () => void;
+    public beforeDestroy: () => void;
     public resize: () => void;
     public update: () => void;
 
@@ -18,6 +19,7 @@ export class Custom extends Model {
         tab: Tab,
         data: any,
         destroy?: () => void,
+        beforeDestroy?: () => void,
         resize?: () => void,
         update?: () => void,
         init: () => void
@@ -33,6 +35,7 @@ export class Custom extends Model {
         this.type = options.type;
         this.init = options.init;
         this.destroy = options.destroy;
+        this.beforeDestroy = options.beforeDestroy;
         this.resize = options.resize;
         this.update = options.update;
         this.init();

+ 2 - 0
app/src/plugin/index.ts

@@ -174,6 +174,7 @@ export class Plugin {
     public addTab(options: {
         type: string,
         destroy?: () => void,
+        beforeDestroy?: () => void,
         resize?: () => void,
         update?: () => void,
         init: () => void
@@ -187,6 +188,7 @@ export class Plugin {
                 type: type2,
                 data: arg.data,
                 init: options.init,
+                beforeDestroy: options.beforeDestroy,
                 destroy: options.destroy,
                 resize: options.resize,
                 update: options.update,