From e4ac34da0d87bc9210bf1361b45a73894c6b5bee Mon Sep 17 00:00:00 2001 From: dignow Date: Fri, 4 Aug 2023 00:09:22 +0800 Subject: [PATCH] refact, separate remote window, debug Signed-off-by: dignow --- flutter/lib/desktop/pages/desktop_setting_page.dart | 10 ++++++++-- flutter/lib/utils/multi_window_manager.dart | 8 ++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/flutter/lib/desktop/pages/desktop_setting_page.dart b/flutter/lib/desktop/pages/desktop_setting_page.dart index 75ea16335..9072643ea 100644 --- a/flutter/lib/desktop/pages/desktop_setting_page.dart +++ b/flutter/lib/desktop/pages/desktop_setting_page.dart @@ -324,7 +324,11 @@ class _GeneralState extends State<_General> { kOptionSeparateRemoteWindow, isServer: false, update: () { - rustDeskWinManager.separateWindows(); + final useSeparateWindow = + mainGetLocalBoolOptionSync(kOptionSeparateRemoteWindow); + if (useSeparateWindow) { + rustDeskWinManager.separateWindows(); + } }, ), ]; @@ -1681,11 +1685,13 @@ Widget _OptionCheckBox(BuildContext context, String label, String key, var ref = value.obs; onChanged(option) async { if (option != null) { - ref.value = option; if (reverse) option = !option; isServer ? await mainSetBoolOption(key, option) : await mainSetLocalBoolOption(key, option); + ref.value = isServer + ? mainGetBoolOptionSync(key) + : mainGetLocalBoolOptionSync(key); update?.call(); } } diff --git a/flutter/lib/utils/multi_window_manager.dart b/flutter/lib/utils/multi_window_manager.dart index d0c89cf3b..d759477d2 100644 --- a/flutter/lib/utils/multi_window_manager.dart +++ b/flutter/lib/utils/multi_window_manager.dart @@ -48,7 +48,11 @@ class RustDeskMultiWindowManager { final sessionIdList = await DesktopMultiWindow.invokeMethod( windowId, kWindowEventGetSessionIdList, null); if (sessionIdList != null) { - for (final idPair in sessionIdList.split(';')) { + final idList = sessionIdList.split(';') as List; + if (idList.length <= 1) { + continue; + } + for (final idPair in idList.sublist(1)) { final peerSession = idPair.split(','); var params = { 'type': WindowType.RemoteDesktop.index, @@ -58,7 +62,7 @@ class RustDeskMultiWindowManager { await newSessionWindow(WindowType.RemoteDesktop, peerSession[0], jsonEncode(params), _remoteDesktopWindows); await DesktopMultiWindow.invokeMethod( - windowId, kWindowEventCloseForSeparateWindow, peerSession[0]); + windowId, kWindowEventCloseForSeparateWindow, peerSession[0]); } } }