Procházet zdrojové kódy

feat: rerender canvas on focus (#8035)

David Luzar před 1 rokem
rodič
revize
1b6e3fe05b
1 změnil soubory, kde provedl 12 přidání a 2 odebrání
  1. 12 2
      packages/excalidraw/components/App.tsx

+ 12 - 2
packages/excalidraw/components/App.tsx

@@ -2594,6 +2594,9 @@ class App extends React.Component<AppProps, AppState> {
       ),
       addEventListener(window, EVENT.FOCUS, () => {
         this.maybeCleanupAfterMissingPointerUp(null);
+        // browsers (chrome?) tend to free up memory a lot, which results
+        // in canvas context being cleared. Thus re-render on focus.
+        this.triggerRender(true);
       }),
     );
 
@@ -3729,8 +3732,15 @@ class App extends React.Component<AppProps, AppState> {
     },
   );
 
-  private triggerRender = () => {
-    this.setState({});
+  private triggerRender = (
+    /** force always re-renders canvas even if no change */
+    force?: boolean,
+  ) => {
+    if (force === true) {
+      this.scene.triggerUpdate();
+    } else {
+      this.setState({});
+    }
   };
 
   /**