fix: Ensure window size and always-on-top settings are updated asynchronously

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-08-11 16:59:16 +02:00
parent 0f6c3faf6a
commit a8a902a311
+7 -4
View File
@@ -340,7 +340,10 @@ class _WinampRootState extends State<WinampRoot> {
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<WinampRoot> {
_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<WinampRoot> {
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<WinampRoot> {
if (_player.plOpen) {
unawaited(_openSubWindow(SubWindowType.pl));
} else {
_plController?.hide();
unawaited(_plController?.hide());
}
}
unawaited(_syncMenuToNative());