Merge pull request #5593 from dignow/fix/remove_dup_maximized_state

Remove dup maximized state
This commit is contained in:
RustDesk 2023-09-03 22:31:54 +08:00 committed by GitHub
commit f5f0bae2ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 24 deletions

View File

@ -1699,7 +1699,10 @@ Future<bool> restoreWindowPosition(WindowType type,
} }
if (lpos.isMaximized == true) { if (lpos.isMaximized == true) {
await restoreFrame(); 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 { } else {
await restoreFrame(); await restoreFrame();
} }

View File

@ -106,7 +106,8 @@ class _ConnectionPageState extends State<ConnectionPage>
@override @override
void onWindowLeaveFullScreen() { void onWindowLeaveFullScreen() {
// Restore edge border to default edge size. // Restore edge border to default edge size.
stateGlobal.resizeEdgeSize.value = kWindowEdgeSize; stateGlobal.resizeEdgeSize.value =
stateGlobal.isMaximized.isTrue ? kMaximizeEdgeSize : kWindowEdgeSize;
} }
@override @override

View File

@ -440,7 +440,6 @@ class DesktopTab extends StatelessWidget {
tabType: tabType, tabType: tabType,
state: state, state: state,
tail: tail, tail: tail,
isMaximized: stateGlobal.isMaximized,
showMinimize: showMinimize, showMinimize: showMinimize,
showMaximize: showMaximize, showMaximize: showMaximize,
showClose: showClose, showClose: showClose,
@ -455,7 +454,6 @@ class WindowActionPanel extends StatefulWidget {
final bool isMainWindow; final bool isMainWindow;
final DesktopTabType tabType; final DesktopTabType tabType;
final Rx<DesktopTabState> state; final Rx<DesktopTabState> state;
final RxBool isMaximized;
final bool showMinimize; final bool showMinimize;
final bool showMaximize; final bool showMaximize;
@ -468,7 +466,6 @@ class WindowActionPanel extends StatefulWidget {
required this.isMainWindow, required this.isMainWindow,
required this.tabType, required this.tabType,
required this.state, required this.state,
required this.isMaximized,
this.tail, this.tail,
this.showMinimize = true, this.showMinimize = true,
this.showMaximize = true, this.showMaximize = true,
@ -495,18 +492,18 @@ class WindowActionPanelState extends State<WindowActionPanel>
Future.delayed(Duration(milliseconds: 500), () { Future.delayed(Duration(milliseconds: 500), () {
if (widget.isMainWindow) { if (widget.isMainWindow) {
windowManager.isMaximized().then((maximized) { windowManager.isMaximized().then((maximized) {
if (widget.isMaximized.value != maximized) { if (stateGlobal.isMaximized.value != maximized) {
WidgetsBinding.instance.addPostFrameCallback( WidgetsBinding.instance.addPostFrameCallback(
(_) => setState(() => widget.isMaximized.value = maximized)); (_) => setState(() => stateGlobal.setMaximized(maximized)));
} }
}); });
} else { } else {
final wc = WindowController.fromWindowId(kWindowId!); final wc = WindowController.fromWindowId(kWindowId!);
wc.isMaximized().then((maximized) { wc.isMaximized().then((maximized) {
debugPrint("isMaximized $maximized"); debugPrint("isMaximized $maximized");
if (widget.isMaximized.value != maximized) { if (stateGlobal.isMaximized.value != maximized) {
WidgetsBinding.instance.addPostFrameCallback( WidgetsBinding.instance.addPostFrameCallback(
(_) => setState(() => widget.isMaximized.value = maximized)); (_) => setState(() => stateGlobal.setMaximized(maximized)));
} }
}); });
} }
@ -535,10 +532,6 @@ class WindowActionPanelState extends State<WindowActionPanel>
@override @override
void onWindowMaximize() { void onWindowMaximize() {
// catch maximize from system
if (!widget.isMaximized.value) {
widget.isMaximized.value = true;
}
stateGlobal.setMinimized(false); stateGlobal.setMinimized(false);
_setMaximized(true); _setMaximized(true);
super.onWindowMaximize(); super.onWindowMaximize();
@ -546,10 +539,6 @@ class WindowActionPanelState extends State<WindowActionPanel>
@override @override
void onWindowUnmaximize() { void onWindowUnmaximize() {
// catch unmaximize from system
if (widget.isMaximized.value) {
widget.isMaximized.value = false;
}
stateGlobal.setMinimized(false); stateGlobal.setMinimized(false);
_setMaximized(false); _setMaximized(false);
super.onWindowUnmaximize(); super.onWindowUnmaximize();
@ -632,9 +621,10 @@ class WindowActionPanelState extends State<WindowActionPanel>
Offstage( Offstage(
offstage: !widget.showMaximize || Platform.isMacOS, offstage: !widget.showMaximize || Platform.isMacOS,
child: Obx(() => ActionIcon( child: Obx(() => ActionIcon(
message: message: stateGlobal.isMaximized.isTrue
widget.isMaximized.value ? 'Restore' : 'Maximize', ? 'Restore'
icon: widget.isMaximized.value : 'Maximize',
icon: stateGlobal.isMaximized.isTrue
? IconFont.restore ? IconFont.restore
: IconFont.max, : IconFont.max,
onTap: _toggleMaximize, onTap: _toggleMaximize,
@ -671,10 +661,8 @@ class WindowActionPanelState extends State<WindowActionPanel>
void _toggleMaximize() { void _toggleMaximize() {
toggleMaximize(widget.isMainWindow).then((maximize) { toggleMaximize(widget.isMainWindow).then((maximize) {
if (widget.isMaximized.value != maximize) { // update state for sub window, wc.unmaximize/maximize() will not invoke onWindowMaximize/Unmaximize
// update state for sub window, wc.unmaximize/maximize() will not invoke onWindowMaximize/Unmaximize stateGlobal.setMaximized(maximize);
widget.isMaximized.value = maximize;
}
}); });
} }
} }