Merge pull request #5846 from dignow/fix/cm_window_await_call_order

fix: cm await call
This commit is contained in:
RustDesk 2023-09-28 10:39:07 +08:00 committed by GitHub
commit 76e9d749c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -234,19 +234,24 @@ void runConnectionManagerScreen(bool hide) async {
listenUniLinks(handleByFlutter: false); listenUniLinks(handleByFlutter: false);
} }
bool _isCmReadyToShow = false;
showCmWindow({bool isStartup = false}) async { showCmWindow({bool isStartup = false}) async {
if (isStartup) { if (isStartup) {
WindowOptions windowOptions = getHiddenTitleBarWindowOptions( WindowOptions windowOptions = getHiddenTitleBarWindowOptions(
size: kConnectionManagerWindowSizeClosedChat); size: kConnectionManagerWindowSizeClosedChat);
windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.waitUntilReadyToShow(windowOptions, null);
bind.mainHideDocker(); bind.mainHideDocker();
await windowManager.show(); await Future.wait([
await Future.wait([windowManager.focus(), windowManager.setOpacity(1)]); windowManager.show(),
// ensure initial window size to be changed windowManager.focus(),
await windowManager.setSizeAlignment( windowManager.setOpacity(1)
kConnectionManagerWindowSizeClosedChat, Alignment.topRight); ]);
}); // ensure initial window size to be changed
} else { await windowManager.setSizeAlignment(
kConnectionManagerWindowSizeClosedChat, Alignment.topRight);
_isCmReadyToShow = true;
} else if (_isCmReadyToShow) {
if (await windowManager.getOpacity() != 1) { if (await windowManager.getOpacity() != 1) {
await windowManager.setOpacity(1); await windowManager.setOpacity(1);
await windowManager.focus(); await windowManager.focus();
@ -263,12 +268,12 @@ hideCmWindow({bool isStartup = false}) async {
WindowOptions windowOptions = getHiddenTitleBarWindowOptions( WindowOptions windowOptions = getHiddenTitleBarWindowOptions(
size: kConnectionManagerWindowSizeClosedChat); size: kConnectionManagerWindowSizeClosedChat);
windowManager.setOpacity(0); windowManager.setOpacity(0);
windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.waitUntilReadyToShow(windowOptions, null);
bind.mainHideDocker(); bind.mainHideDocker();
await windowManager.minimize(); await windowManager.minimize();
await windowManager.hide(); await windowManager.hide();
}); _isCmReadyToShow = true;
} else { } else if (_isCmReadyToShow) {
if (await windowManager.getOpacity() != 0) { if (await windowManager.getOpacity() != 0) {
await windowManager.setOpacity(0); await windowManager.setOpacity(0);
bind.mainHideDocker(); bind.mainHideDocker();