Merge pull request #5349 from dignow/fix/save_frame_maximized

fix windowOnTop, maxmized state
This commit is contained in:
RustDesk 2023-08-11 17:28:32 +08:00 committed by GitHub
commit 3c3d1a84ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 23 deletions

View File

@ -16,6 +16,7 @@ import 'package:flutter_hbb/desktop/widgets/refresh_wrapper.dart';
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
import 'package:flutter_hbb/main.dart';
import 'package:flutter_hbb/models/peer_model.dart';
import 'package:flutter_hbb/models/state_model.dart';
import 'package:flutter_hbb/utils/multi_window_manager.dart';
import 'package:flutter_hbb/utils/platform_channel.dart';
import 'package:flutter_svg/flutter_svg.dart';
@ -558,13 +559,15 @@ void windowOnTop(int? id) async {
if (!isDesktop) {
return;
}
print("Bring window '$id' on top");
if (id == null) {
print("Bring window on top");
// main window
windowManager.restore();
windowManager.show();
windowManager.focus();
rustDeskWinManager.registerActiveWindow(kWindowMainId);
if (stateGlobal.minimized) {
await windowManager.restore();
}
await windowManager.show();
await windowManager.focus();
await rustDeskWinManager.registerActiveWindow(kWindowMainId);
} else {
WindowController.fromWindowId(id)
..focus()

View File

@ -77,7 +77,7 @@ const double kDesktopFileTransferHeaderHeight = 25.0;
EdgeInsets get kDragToResizeAreaPadding =>
!kUseCompatibleUiMode && Platform.isLinux
? stateGlobal.fullscreen || stateGlobal.maximize
? stateGlobal.fullscreen || stateGlobal.maximized
? EdgeInsets.zero
: EdgeInsets.all(5.0)
: EdgeInsets.zero;

View File

@ -1610,12 +1610,10 @@ class _IconMenuButtonState extends State<_IconMenuButton> {
).marginSymmetric(
horizontal: widget.hMargin ?? _ToolbarTheme.buttonHMargin,
vertical: widget.vMargin ?? _ToolbarTheme.buttonVMargin);
if (widget.tooltip != null) {
button = Tooltip(
message: widget.tooltip!,
child: button,
);
}
button = Tooltip(
message: widget.tooltip,
child: button,
);
if (widget.topLevel) {
return MenuBar(children: [button]);
} else {

View File

@ -521,19 +521,27 @@ class WindowActionPanelState extends State<WindowActionPanel>
super.dispose();
}
void _setMaximize(bool maximize) {
stateGlobal.setMaximize(maximize);
void _setMaximized(bool maximize) {
stateGlobal.setMaximized(maximize);
_saveFrameDebounce.call(_saveFrame);
setState(() {});
}
@override
void onWindowMinimize() {
stateGlobal.setMinimized(true);
stateGlobal.setMaximized(false);
super.onWindowMinimize();
}
@override
void onWindowMaximize() {
// catch maximize from system
if (!widget.isMaximized.value) {
widget.isMaximized.value = true;
}
_setMaximize(true);
stateGlobal.setMinimized(false);
_setMaximized(true);
super.onWindowMaximize();
}
@ -543,7 +551,8 @@ class WindowActionPanelState extends State<WindowActionPanel>
if (widget.isMaximized.value) {
widget.isMaximized.value = false;
}
_setMaximize(false);
stateGlobal.setMinimized(false);
_setMaximized(false);
super.onWindowUnmaximize();
}

View File

@ -11,7 +11,8 @@ enum SvcStatus { notReady, connecting, ready }
class StateGlobal {
int _windowId = -1;
bool _fullscreen = false;
bool _maximize = false;
bool _maximized = false;
bool _minimized = false;
bool grabKeyboard = false;
final RxBool _showTabBar = true.obs;
final RxDouble _resizeEdgeSize = RxDouble(kWindowEdgeSize);
@ -25,7 +26,8 @@ class StateGlobal {
int get windowId => _windowId;
bool get fullscreen => _fullscreen;
bool get maximize => _maximize;
bool get maximized => _maximized;
bool get minimized => _minimized;
double get tabBarHeight => fullscreen ? 0 : kDesktopRemoteTabBarHeight;
RxBool get showTabBar => _showTabBar;
RxDouble get resizeEdgeSize => _resizeEdgeSize;
@ -48,12 +50,13 @@ class StateGlobal {
}
setWindowId(int id) => _windowId = id;
setMaximize(bool v) {
if (_maximize != v && !_fullscreen) {
_maximize = v;
_resizeEdgeSize.value = _maximize ? kMaximizeEdgeSize : kWindowEdgeSize;
setMaximized(bool v) {
if (_maximized != v && !_fullscreen) {
_maximized = v;
_resizeEdgeSize.value = _maximized ? kMaximizeEdgeSize : kWindowEdgeSize;
}
}
setMinimized(bool v) => _minimized = v;
setFullscreen(bool v) {
if (_fullscreen != v) {
@ -61,7 +64,7 @@ class StateGlobal {
_showTabBar.value = !_fullscreen;
_resizeEdgeSize.value = fullscreen
? kFullScreenEdgeSize
: _maximize
: _maximized
? kMaximizeEdgeSize
: kWindowEdgeSize;
print(