diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 41fa826b8..d40a4e899 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -545,16 +545,25 @@ closeConnection({String? id}) { } } -void window_on_top(int? id) { +void window_on_top(int? id) async { if (!isDesktop) { return; } if (id == null) { print("Bring window on top"); // main window - windowManager.restore(); - windowManager.show(); - windowManager.focus(); + if (desktopType == DesktopType.cm && + !(await windowManager.isMinimized() || + !await windowManager.isVisible())) { + await windowManager.setAlwaysOnTop(true); + Future.delayed(Duration(microseconds: 500), () async { + windowManager.setAlwaysOnTop(false); + }); + } else { + windowManager.restore(); + windowManager.show(); + windowManager.focus(); + } rustDeskWinManager.registerActiveWindow(kWindowMainId); } else { WindowController.fromWindowId(id)