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

View File

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

View File

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

View File

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