Prechádzať zdrojové kódy

feat: rerender canvas on focus (#8035)

David Luzar 1 rok pred
rodič
commit
1b6e3fe05b
1 zmenil súbory, kde vykonal 12 pridanie a 2 odobranie
  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({});
+    }
   };
 
   /**