diff --git a/flutter/lib/desktop/pages/server_page.dart b/flutter/lib/desktop/pages/server_page.dart index 884ac6441..e344575c7 100644 --- a/flutter/lib/desktop/pages/server_page.dart +++ b/flutter/lib/desktop/pages/server_page.dart @@ -134,6 +134,7 @@ class ConnectionManagerState extends State { showMaximize: false, showMinimize: true, showClose: true, + onWindowCloseButton: handleWindowCloseButton, controller: serverModel.tabController, maxLabelWidth: 100, tail: buildScrollJumper(), @@ -206,6 +207,27 @@ class ConnectionManagerState extends State { ], )); } + + Future handleWindowCloseButton() async { + var tabController = gFFI.serverModel.tabController; + final connLength = tabController.length; + if (connLength <= 1) { + windowManager.close(); + return true; + } else { + final opt = "enable-confirm-closing-tabs"; + final bool res; + if (!option2bool(opt, await bind.mainGetOption(key: opt))) { + res = true; + } else { + res = await closeConfirmDialog(); + } + if (res) { + windowManager.close(); + } + return res; + } + } } Widget buildConnectionCard(Client client) {