From 1b6e3fe05bc81ac5b24c67f8ad82ef1a467fb1e6 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Sun, 19 May 2024 22:20:40 +0200 Subject: [PATCH] feat: rerender canvas on focus (#8035) --- packages/excalidraw/components/App.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index d991814d4f..dc9d26efeb 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -2594,6 +2594,9 @@ class App extends React.Component { ), 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 { }, ); - 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({}); + } }; /**