mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
refact, split tab to separate window
Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
@@ -570,6 +570,17 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
forceRelay: call.arguments['forceRelay'],
|
||||
forceSeparateWindow: call.arguments['forceSeparateWindow'],
|
||||
);
|
||||
} else if (call.method == kWindowEventSplit) {
|
||||
final args = call.arguments.split(',');
|
||||
int? windowId;
|
||||
try {
|
||||
windowId = int.parse(args[0]);
|
||||
} catch (e) {
|
||||
debugPrint("Failed to parse window id '${call.arguments}': $e");
|
||||
}
|
||||
if (windowId != null) {
|
||||
await rustDeskWinManager.splitWindow(windowId, args[1], args[2]);
|
||||
}
|
||||
}
|
||||
});
|
||||
_uniLinksSubscription = listenUniLinks();
|
||||
|
||||
@@ -6,7 +6,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:flutter_hbb/consts.dart';
|
||||
import 'package:flutter_hbb/utils/multi_window_manager.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_home_page.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
||||
import 'package:flutter_hbb/models/platform_model.dart';
|
||||
@@ -323,13 +322,6 @@ class _GeneralState extends State<_General> {
|
||||
'Separate remote window',
|
||||
kOptionSeparateRemoteWindow,
|
||||
isServer: false,
|
||||
update: () {
|
||||
final useSeparateWindow =
|
||||
mainGetLocalBoolOptionSync(kOptionSeparateRemoteWindow);
|
||||
if (useSeparateWindow) {
|
||||
rustDeskWinManager.separateWindows();
|
||||
}
|
||||
},
|
||||
),
|
||||
];
|
||||
// though this is related to GUI, but opengl problem affects all users, so put in config rather than local
|
||||
|
||||
@@ -329,6 +329,22 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
|
||||
));
|
||||
}
|
||||
|
||||
if (tabController.state.value.tabs.length > 1) {
|
||||
final splitAction = MenuEntryButton<String>(
|
||||
childBuilder: (TextStyle? style) => Text(
|
||||
translate('Split'),
|
||||
style: style,
|
||||
),
|
||||
proc: () async {
|
||||
await DesktopMultiWindow.invokeMethod(
|
||||
kMainWindowId, kWindowEventSplit, '${windowId()},$key,$sessionId');
|
||||
cancelFunc();
|
||||
},
|
||||
padding: padding,
|
||||
);
|
||||
menu.insert(1, splitAction);
|
||||
}
|
||||
|
||||
if (perms['keyboard'] != false && !ffi.ffiModel.viewOnly) {
|
||||
if (perms['clipboard'] != false) {
|
||||
menu.add(RemoteMenuEntry.disableClipboard(sessionId, padding,
|
||||
|
||||
Reference in New Issue
Block a user