From c0e29b6000a45fab05ba67a357c4787057f0fa55 Mon Sep 17 00:00:00 2001 From: Ferhat Date: Wed, 26 Feb 2020 15:54:10 -0800 Subject: [PATCH] Fix stale physicalSize on resize event (#16822) --- lib/web_ui/lib/src/engine/dom_renderer.dart | 1 + lib/web_ui/lib/src/engine/window.dart | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/web_ui/lib/src/engine/dom_renderer.dart b/lib/web_ui/lib/src/engine/dom_renderer.dart index 520c1c94d01..dbabe49f4d1 100644 --- a/lib/web_ui/lib/src/engine/dom_renderer.dart +++ b/lib/web_ui/lib/src/engine/dom_renderer.dart @@ -472,6 +472,7 @@ flt-glass-pane * { /// Called immediately after browser window metrics change. void _metricsDidChange(html.Event event) { + window._computePhysicalSize(); if (ui.window.onMetricsChanged != null) { ui.window.onMetricsChanged(); } diff --git a/lib/web_ui/lib/src/engine/window.dart b/lib/web_ui/lib/src/engine/window.dart index 894ec0b2cad..e2004cda292 100644 --- a/lib/web_ui/lib/src/engine/window.dart +++ b/lib/web_ui/lib/src/engine/window.dart @@ -48,12 +48,11 @@ class EngineWindow extends ui.Window { @override ui.Size get physicalSize { - if (_physicalSize?.value == null) { + if (_physicalSize == null) { _computePhysicalSize(); } assert(_physicalSize != null); - assert(_physicalSize.value != null); - return _physicalSize.value; + return _physicalSize; } /// Computes the physical size of the screen from [html.window]. @@ -65,7 +64,7 @@ class EngineWindow extends ui.Window { assert(() { if (webOnlyDebugPhysicalSizeOverride != null) { - _physicalSize = FrameReference(webOnlyDebugPhysicalSizeOverride); + _physicalSize = webOnlyDebugPhysicalSizeOverride; override = true; } return true; @@ -82,15 +81,15 @@ class EngineWindow extends ui.Window { windowInnerWidth = html.window.innerWidth * devicePixelRatio; windowInnerHeight = html.window.innerHeight * devicePixelRatio; } - _physicalSize = FrameReference(ui.Size( + _physicalSize = ui.Size( windowInnerWidth, windowInnerHeight, - )); + ); } } /// Lazily populated and cleared at the end of the frame. - FrameReference _physicalSize; + ui.Size _physicalSize; /// Overrides the value of [physicalSize] in tests. ui.Size webOnlyDebugPhysicalSizeOverride;