From 3cc67bf581c098cc0822c19f1c9105c254097755 Mon Sep 17 00:00:00 2001 From: Kingtous Date: Thu, 18 Aug 2022 17:25:47 +0800 Subject: [PATCH] feat: sub window custom title bar & functions Signed-off-by: Kingtous --- .../lib/desktop/widgets/tabbar_widget.dart | 29 ++++++++++++------- flutter/lib/main.dart | 3 +- flutter/pubspec.lock | 4 +-- flutter/pubspec.yaml | 3 +- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index 32504f6a8..4a2581705 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -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), + ), ) ], ); diff --git a/flutter/lib/main.dart b/flutter/lib/main.dart index d41e89116..960bfb667 100644 --- a/flutter/lib/main.dart +++ b/flutter/lib/main.dart @@ -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 main(List 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() : jsonDecode(args[2]) as Map; @@ -134,7 +136,6 @@ void runConnectionManagerScreen() async { await windowManager.focus(); }) ]); - ; runApp(GetMaterialApp( debugShowCheckedModeBanner: false, theme: getCurrentTheme(), diff --git a/flutter/pubspec.lock b/flutter/pubspec.lock index f16f9516b..679322df3 100644 --- a/flutter/pubspec.lock +++ b/flutter/pubspec.lock @@ -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" diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index d5856167a..f25d5e341 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -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: