feat: sub window custom title bar & functions
Signed-off-by: Kingtous <kingtous@qq.com>
This commit is contained in:
parent
b8f7e85c0b
commit
3cc67bf581
@ -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),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
@ -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(),
|
||||||
|
@ -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"
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user