Merge pull request #5349 from dignow/fix/save_frame_maximized
fix windowOnTop, maxmized state
This commit is contained in:
commit
3c3d1a84ef
@ -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()
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user