From e12d0ef4aa017d7b12af5d4aa51dbc791c299ec0 Mon Sep 17 00:00:00 2001 From: dignow Date: Fri, 4 Aug 2023 00:17:11 +0800 Subject: [PATCH] tmp commit Signed-off-by: dignow --- flutter/lib/utils/multi_window_manager.dart | 91 ++++++++++++--------- 1 file changed, 53 insertions(+), 38 deletions(-) diff --git a/flutter/lib/utils/multi_window_manager.dart b/flutter/lib/utils/multi_window_manager.dart index d759477d2..974dfd9c4 100644 --- a/flutter/lib/utils/multi_window_manager.dart +++ b/flutter/lib/utils/multi_window_manager.dart @@ -45,25 +45,29 @@ class RustDeskMultiWindowManager { separateWindows() async { for (final windowId in _remoteDesktopWindows) { - final sessionIdList = await DesktopMultiWindow.invokeMethod( + final String sessionIdList = await DesktopMultiWindow.invokeMethod( windowId, kWindowEventGetSessionIdList, null); - if (sessionIdList != null) { - 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, - 'id': peerSession[0], - 'sessionId': peerSession[1], - }; - await newSessionWindow(WindowType.RemoteDesktop, peerSession[0], - jsonEncode(params), _remoteDesktopWindows); - await DesktopMultiWindow.invokeMethod( - windowId, kWindowEventCloseForSeparateWindow, peerSession[0]); - } + final idList = sessionIdList.split(';'); + if (idList.length <= 1) { + continue; + } + for (final idPair in idList.sublist(1)) { + final peerSession = idPair.split(','); + var params = { + 'type': WindowType.RemoteDesktop.index, + 'id': peerSession[0], + 'sessionId': peerSession[1], + }; + await _newSession( + true, + WindowType.RemoteDesktop, + kWindowEventNewRemoteDesktop, + peerSession[0], + _remoteDesktopWindows, + jsonEncode(params), + ); + await DesktopMultiWindow.invokeMethod( + windowId, kWindowEventCloseForSeparateWindow, peerSession[0]); } } } @@ -87,6 +91,36 @@ class RustDeskMultiWindowManager { windows.add(windowController.windowId); } + _newSession( + bool separateWindow, + WindowType type, + String methodName, + String remoteId, + List windows, + String msg, + ) async { + if (separateWindow) { + if (kCloseMultiWindowByHide && _inactiveWindows.isNotEmpty) { + final windowId = _inactiveWindows.first; + final invokeRes = + await DesktopMultiWindow.invokeMethod(windowId, methodName, msg); + final windowController = WindowController.fromWindowId(windowId); + windowController.show(); + registerActiveWindow(windowController.windowId); + windows.add(windowController.windowId); + return invokeRes; + } else { + await newSessionWindow(type, remoteId, msg, windows); + } + } else { + if (windows.isEmpty) { + await newSessionWindow(type, remoteId, msg, windows); + } else { + return call(type, methodName, msg); + } + } + } + Future newSession( WindowType type, String methodName, @@ -126,26 +160,7 @@ class RustDeskMultiWindowManager { } } - if (separateWindow) { - if (kCloseMultiWindowByHide && _inactiveWindows.isNotEmpty) { - final windowId = _inactiveWindows.first; - final invokeRes = - await DesktopMultiWindow.invokeMethod(windowId, methodName, msg); - final windowController = WindowController.fromWindowId(windowId); - windowController.show(); - registerActiveWindow(windowController.windowId); - windows.add(windowController.windowId); - return invokeRes; - } else { - await newSessionWindow(type, remoteId, msg, windows); - } - } else { - if (windows.isEmpty) { - await newSessionWindow(type, remoteId, msg, windows); - } else { - return call(type, methodName, msg); - } - } + await _newSession(separateWindow, type, methodName, remoteId, windows, msg); } Future newRemoteDesktop(