feat: sub window custom title bar & functions

Signed-off-by: Kingtous <kingtous@qq.com>
This commit is contained in:
Kingtous 2022-08-18 17:25:47 +08:00
parent b8f7e85c0b
commit 3cc67bf581
4 changed files with 25 additions and 14 deletions

View File

@ -84,6 +84,9 @@ class DesktopTabBar extends StatelessWidget {
onPanStart: (_) { onPanStart: (_) {
if (mainTab) { if (mainTab) {
windowManager.startDragging(); windowManager.startDragging();
} else {
WindowController.fromWindowId(windowId!)
.startDragging();
} }
}, },
child: Obx(() => TabBar( child: Obx(() => TabBar(
@ -201,16 +204,15 @@ class WindowActionPanel extends StatelessWidget {
child: Icon( child: Icon(
Icons.minimize, Icons.minimize,
color: color, color: color,
), ).paddingSymmetric(horizontal: 5),
onTap: () { onTap: () {
if (mainTab) { if (mainTab) {
windowManager.minimize(); windowManager.minimize();
} else { } else {
// TODO WindowController.fromWindowId(windowId!).minimize();
// WindowController.fromWindowId(windowId!).close();
} }
}, },
).paddingOnly(right: 10), ),
), ),
Tooltip( Tooltip(
message: translate("Maximize"), message: translate("Maximize"),
@ -218,7 +220,8 @@ class WindowActionPanel extends StatelessWidget {
child: Icon( child: Icon(
Icons.rectangle_outlined, Icons.rectangle_outlined,
color: color, color: color,
), size: 20,
).paddingSymmetric(horizontal: 5),
onTap: () { onTap: () {
if (mainTab) { if (mainTab) {
windowManager.isMaximized().then((maximized) { windowManager.isMaximized().then((maximized) {
@ -229,11 +232,17 @@ class WindowActionPanel extends StatelessWidget {
} }
}); });
} else { } else {
// TODO final wc = WindowController.fromWindowId(windowId!);
// WindowController.fromWindowId(windowId!).(); wc.isMaximized().then((maximized) {
if (maximized) {
wc.unmaximize();
} else {
wc.maximize();
}
});
} }
}, },
).paddingOnly(right: 10), ),
), ),
Tooltip( Tooltip(
message: translate("Close"), message: translate("Close"),
@ -241,7 +250,7 @@ class WindowActionPanel extends StatelessWidget {
child: Icon( child: Icon(
Icons.close, Icons.close,
color: color, color: color,
), ).paddingSymmetric(horizontal: 5),
onTap: () { onTap: () {
if (mainTab) { if (mainTab) {
windowManager.close(); windowManager.close();
@ -249,7 +258,7 @@ class WindowActionPanel extends StatelessWidget {
WindowController.fromWindowId(windowId!).close(); WindowController.fromWindowId(windowId!).close();
} }
}, },
).paddingOnly(right: 10), ),
) )
], ],
); );

View File

@ -1,5 +1,6 @@
import 'dart:convert'; import 'dart:convert';
import 'package:desktop_multi_window/desktop_multi_window.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart'; import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
import 'package:flutter_hbb/desktop/pages/server_page.dart'; import 'package:flutter_hbb/desktop/pages/server_page.dart';
@ -32,6 +33,7 @@ Future<Null> main(List<String> args) async {
// main window // main window
if (args.isNotEmpty && args.first == 'multi_window') { if (args.isNotEmpty && args.first == 'multi_window') {
windowId = int.parse(args[1]); windowId = int.parse(args[1]);
WindowController.fromWindowId(windowId!).showTitleBar(false);
final argument = args[2].isEmpty final argument = args[2].isEmpty
? Map<String, dynamic>() ? Map<String, dynamic>()
: jsonDecode(args[2]) as Map<String, dynamic>; : jsonDecode(args[2]) as Map<String, dynamic>;
@ -134,7 +136,6 @@ void runConnectionManagerScreen() async {
await windowManager.focus(); await windowManager.focus();
}) })
]); ]);
;
runApp(GetMaterialApp( runApp(GetMaterialApp(
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
theme: getCurrentTheme(), theme: getCurrentTheme(),

View File

@ -250,8 +250,8 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: "2b1176d53f195cc55e8d37151bb3d9f6bd52fad3" ref: bf670217de03f4866177a9793284f4db99271c51
resolved-ref: "2b1176d53f195cc55e8d37151bb3d9f6bd52fad3" resolved-ref: bf670217de03f4866177a9793284f4db99271c51
url: "https://github.com/Kingtous/rustdesk_desktop_multi_window" url: "https://github.com/Kingtous/rustdesk_desktop_multi_window"
source: git source: git
version: "0.1.0" version: "0.1.0"

View File

@ -63,9 +63,10 @@ dependencies:
url: https://github.com/Kingtous/rustdesk_window_manager url: https://github.com/Kingtous/rustdesk_window_manager
ref: 028a7f6 ref: 028a7f6
desktop_multi_window: desktop_multi_window:
# path: ../../rustdesk_desktop_multi_window
git: git:
url: https://github.com/Kingtous/rustdesk_desktop_multi_window url: https://github.com/Kingtous/rustdesk_desktop_multi_window
ref: 2b1176d53f195cc55e8d37151bb3d9f6bd52fad3 ref: bf670217de03f4866177a9793284f4db99271c51
freezed_annotation: ^2.0.3 freezed_annotation: ^2.0.3
tray_manager: tray_manager:
git: git: