mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
Merge branch 'rustdesk:master' into master
This commit is contained in:
@@ -1699,7 +1699,10 @@ Future<bool> restoreWindowPosition(WindowType type,
|
||||
}
|
||||
if (lpos.isMaximized == true) {
|
||||
await restoreFrame();
|
||||
await wc.maximize();
|
||||
// An duration is needed to avoid the window being restored after maximized.
|
||||
Future.delayed(Duration(milliseconds: 300), () async {
|
||||
await wc.maximize();
|
||||
});
|
||||
} else {
|
||||
await restoreFrame();
|
||||
}
|
||||
|
||||
@@ -106,7 +106,8 @@ class _ConnectionPageState extends State<ConnectionPage>
|
||||
@override
|
||||
void onWindowLeaveFullScreen() {
|
||||
// Restore edge border to default edge size.
|
||||
stateGlobal.resizeEdgeSize.value = kWindowEdgeSize;
|
||||
stateGlobal.resizeEdgeSize.value =
|
||||
stateGlobal.isMaximized.isTrue ? kMaximizeEdgeSize : kWindowEdgeSize;
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -440,7 +440,6 @@ class DesktopTab extends StatelessWidget {
|
||||
tabType: tabType,
|
||||
state: state,
|
||||
tail: tail,
|
||||
isMaximized: stateGlobal.isMaximized,
|
||||
showMinimize: showMinimize,
|
||||
showMaximize: showMaximize,
|
||||
showClose: showClose,
|
||||
@@ -455,7 +454,6 @@ class WindowActionPanel extends StatefulWidget {
|
||||
final bool isMainWindow;
|
||||
final DesktopTabType tabType;
|
||||
final Rx<DesktopTabState> state;
|
||||
final RxBool isMaximized;
|
||||
|
||||
final bool showMinimize;
|
||||
final bool showMaximize;
|
||||
@@ -468,7 +466,6 @@ class WindowActionPanel extends StatefulWidget {
|
||||
required this.isMainWindow,
|
||||
required this.tabType,
|
||||
required this.state,
|
||||
required this.isMaximized,
|
||||
this.tail,
|
||||
this.showMinimize = true,
|
||||
this.showMaximize = true,
|
||||
@@ -495,18 +492,18 @@ class WindowActionPanelState extends State<WindowActionPanel>
|
||||
Future.delayed(Duration(milliseconds: 500), () {
|
||||
if (widget.isMainWindow) {
|
||||
windowManager.isMaximized().then((maximized) {
|
||||
if (widget.isMaximized.value != maximized) {
|
||||
if (stateGlobal.isMaximized.value != maximized) {
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => setState(() => widget.isMaximized.value = maximized));
|
||||
(_) => setState(() => stateGlobal.setMaximized(maximized)));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
final wc = WindowController.fromWindowId(kWindowId!);
|
||||
wc.isMaximized().then((maximized) {
|
||||
debugPrint("isMaximized $maximized");
|
||||
if (widget.isMaximized.value != maximized) {
|
||||
if (stateGlobal.isMaximized.value != maximized) {
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => setState(() => widget.isMaximized.value = maximized));
|
||||
(_) => setState(() => stateGlobal.setMaximized(maximized)));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -535,10 +532,6 @@ class WindowActionPanelState extends State<WindowActionPanel>
|
||||
|
||||
@override
|
||||
void onWindowMaximize() {
|
||||
// catch maximize from system
|
||||
if (!widget.isMaximized.value) {
|
||||
widget.isMaximized.value = true;
|
||||
}
|
||||
stateGlobal.setMinimized(false);
|
||||
_setMaximized(true);
|
||||
super.onWindowMaximize();
|
||||
@@ -546,10 +539,6 @@ class WindowActionPanelState extends State<WindowActionPanel>
|
||||
|
||||
@override
|
||||
void onWindowUnmaximize() {
|
||||
// catch unmaximize from system
|
||||
if (widget.isMaximized.value) {
|
||||
widget.isMaximized.value = false;
|
||||
}
|
||||
stateGlobal.setMinimized(false);
|
||||
_setMaximized(false);
|
||||
super.onWindowUnmaximize();
|
||||
@@ -632,9 +621,10 @@ class WindowActionPanelState extends State<WindowActionPanel>
|
||||
Offstage(
|
||||
offstage: !widget.showMaximize || Platform.isMacOS,
|
||||
child: Obx(() => ActionIcon(
|
||||
message:
|
||||
widget.isMaximized.value ? 'Restore' : 'Maximize',
|
||||
icon: widget.isMaximized.value
|
||||
message: stateGlobal.isMaximized.isTrue
|
||||
? 'Restore'
|
||||
: 'Maximize',
|
||||
icon: stateGlobal.isMaximized.isTrue
|
||||
? IconFont.restore
|
||||
: IconFont.max,
|
||||
onTap: _toggleMaximize,
|
||||
@@ -671,10 +661,8 @@ class WindowActionPanelState extends State<WindowActionPanel>
|
||||
|
||||
void _toggleMaximize() {
|
||||
toggleMaximize(widget.isMainWindow).then((maximize) {
|
||||
if (widget.isMaximized.value != maximize) {
|
||||
// update state for sub window, wc.unmaximize/maximize() will not invoke onWindowMaximize/Unmaximize
|
||||
widget.isMaximized.value = maximize;
|
||||
}
|
||||
// update state for sub window, wc.unmaximize/maximize() will not invoke onWindowMaximize/Unmaximize
|
||||
stateGlobal.setMaximized(maximize);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,9 @@ class _HomePageState extends State<HomePage> {
|
||||
var _selectedIndex = 0;
|
||||
int get selectedIndex => _selectedIndex;
|
||||
final List<PageShape> _pages = [];
|
||||
bool get isChatPageCurrentTab => isAndroid
|
||||
? _selectedIndex == 1
|
||||
: false; // change this when ios have chat page
|
||||
|
||||
void refreshPages() {
|
||||
setState(() {
|
||||
@@ -79,13 +82,15 @@ class _HomePageState extends State<HomePage> {
|
||||
unselectedItemColor: MyTheme.darkGray,
|
||||
onTap: (index) => setState(() {
|
||||
// close chat overlay when go chat page
|
||||
if (index == 1 && _selectedIndex != index) {
|
||||
gFFI.chatModel.hideChatIconOverlay();
|
||||
gFFI.chatModel.hideChatWindowOverlay();
|
||||
gFFI.chatModel
|
||||
.mobileClearClientUnread(gFFI.chatModel.currentKey.connId);
|
||||
if (_selectedIndex != index) {
|
||||
_selectedIndex = index;
|
||||
if (isChatPageCurrentTab) {
|
||||
gFFI.chatModel.hideChatIconOverlay();
|
||||
gFFI.chatModel.hideChatWindowOverlay();
|
||||
gFFI.chatModel.mobileClearClientUnread(
|
||||
gFFI.chatModel.currentKey.connId);
|
||||
}
|
||||
}
|
||||
_selectedIndex = index;
|
||||
}),
|
||||
),
|
||||
body: _pages.elementAt(_selectedIndex),
|
||||
@@ -95,7 +100,7 @@ class _HomePageState extends State<HomePage> {
|
||||
Widget appTitle() {
|
||||
final currentUser = gFFI.chatModel.currentUser;
|
||||
final currentKey = gFFI.chatModel.currentKey;
|
||||
if (_selectedIndex == 1 &&
|
||||
if (isChatPageCurrentTab &&
|
||||
currentUser != null &&
|
||||
currentKey.peerId.isNotEmpty) {
|
||||
final connected =
|
||||
|
||||
@@ -403,7 +403,7 @@ class ChatModel with ChangeNotifier {
|
||||
parent.target?.serverModel.jumpTo(id);
|
||||
}
|
||||
} else {
|
||||
if (HomePage.homeKey.currentState?.selectedIndex != 1 ||
|
||||
if (HomePage.homeKey.currentState?.isChatPageCurrentTab != true ||
|
||||
_currentKey != messagekey) {
|
||||
client.unreadChatMessageCount.value += 1;
|
||||
mobileUpdateUnreadSum();
|
||||
|
||||
Reference in New Issue
Block a user