소스 검색

feat: rerender canvas on focus (#8035)

David Luzar 1 년 전
부모
커밋
1b6e3fe05b
1개의 변경된 파일12개의 추가작업 그리고 2개의 파일을 삭제
  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, () => {
       addEventListener(window, EVENT.FOCUS, () => {
         this.maybeCleanupAfterMissingPointerUp(null);
         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({});
+    }
   };
   };
 
 
   /**
   /**