From a8a902a31113da711ccdc572b3f9bc367a0bce17 Mon Sep 17 00:00:00 2001 From: Hans Kokx Date: Tue, 11 Aug 2026 16:59:16 +0200 Subject: [PATCH] fix: Ensure window size and always-on-top settings are updated asynchronously Signed-off-by: Hans Kokx --- lib/main.dart | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8ff5c7e..2bbf712 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -340,7 +340,10 @@ class _WinampRootState extends State { if (shadeChanged || scaleChanged) { _wasShade = _player.windowShade; _wasScale = _player.uiScale; - windowManager.setSize(_scaledSize()); + final newSize = _scaledSize(); + WidgetsBinding.instance.addPostFrameCallback((_) { + unawaited(windowManager.setSize(newSize)); + }); final mainRect = _dock.rectOf(DockWindow.main); if (mainRect != null) { _dock.repinResized( @@ -359,7 +362,7 @@ class _WinampRootState extends State { _invokeSub(DockWindow.pl, "setUiScale", _player.uiScale); unawaited(_pushDockContext()); } - windowManager.setAlwaysOnTop(_player.alwaysOnTop); + unawaited(windowManager.setAlwaysOnTop(_player.alwaysOnTop)); if (_player.alwaysOnTop != _wasAlwaysOnTop) { _wasAlwaysOnTop = _player.alwaysOnTop; _invokeSub(DockWindow.eq, "setAlwaysOnTop", _player.alwaysOnTop); @@ -370,7 +373,7 @@ class _WinampRootState extends State { if (_player.eqOpen) { unawaited(_openSubWindow(SubWindowType.eq)); } else { - _eqController?.hide(); + unawaited(_eqController?.hide()); } } if (_player.plOpen != _wasPlOpen) { @@ -378,7 +381,7 @@ class _WinampRootState extends State { if (_player.plOpen) { unawaited(_openSubWindow(SubWindowType.pl)); } else { - _plController?.hide(); + unawaited(_plController?.hide()); } } unawaited(_syncMenuToNative());