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:
+7
-4
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user