From 0d01aa4eea5333c3b3ea3b297e06f5e7aeaadaf4 Mon Sep 17 00:00:00 2001 From: 21pages Date: Thu, 2 Nov 2023 21:41:16 +0800 Subject: [PATCH] opt close on taskbar, not call onWindowClose multi times Signed-off-by: 21pages --- .../lib/desktop/widgets/tabbar_widget.dart | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index 7f1449ca4..67931d353 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -583,32 +583,19 @@ class WindowActionPanelState extends State void onWindowClose() async { mainWindowClose() async => await windowManager.hide(); notMainWindowClose(WindowController controller) async { - if (widget.tabController.length == 0) { - debugPrint("close emtpy multiwindow, hide"); - await controller.hide(); - await rustDeskWinManager - .call(WindowType.Main, kWindowEventHide, {"id": kWindowId!}); - } else { + if (widget.tabController.length != 0) { debugPrint("close not emtpy multiwindow from taskbar"); if (Platform.isWindows) { await controller.show(); await controller.focus(); final res = await widget.onClose?.call() ?? true; - if (res) { - Future.delayed(Duration.zero, () async { - // onWindowClose will be called again to hide - await WindowController.fromWindowId(kWindowId!).close(); - }); - } - } else { - // ubuntu22.04 windowOnTop not work from taskbar - widget.tabController.clear(); - Future.delayed(Duration.zero, () async { - // onWindowClose will be called again to hide - await WindowController.fromWindowId(kWindowId!).close(); - }); + if (!res) return; } + widget.tabController.clear(); } + await controller.hide(); + await rustDeskWinManager + .call(WindowType.Main, kWindowEventHide, {"id": kWindowId!}); } macOSWindowClose(