diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 45c78f3d9..078bda8a4 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -3492,7 +3492,8 @@ Widget buildVirtualWindowFrame(BuildContext context, Widget child) { ); } -get windowEdgeSize => isLinux && !_linuxWindowResizable ? 0.0 : kWindowEdgeSize; +get windowResizeEdgeSize => + isLinux && !_linuxWindowResizable ? 0.0 : kWindowResizeEdgeSize; // `windowManager.setResizable(false)` will reset the window size to the default size on Linux and then set unresizable. // See _linuxWindowResizable for more details. @@ -3570,3 +3571,19 @@ Widget netWorkErrorWidget() { ], )); } + +List? get windowManagerEnableResizeEdges => isWindows + ? [ + ResizeEdge.topLeft, + ResizeEdge.top, + ResizeEdge.topRight, + ] + : null; + +List? get subWindowManagerEnableResizeEdges => isWindows + ? [ + SubWindowResizeEdge.topLeft, + SubWindowResizeEdge.top, + SubWindowResizeEdge.topRight, + ] + : null; diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index b836200a4..a5414dd0d 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -241,9 +241,9 @@ const kDefaultScrollDuration = Duration(milliseconds: 50); const kDefaultMouseWheelThrottleDuration = Duration(milliseconds: 50); const kFullScreenEdgeSize = 0.0; const kMaximizeEdgeSize = 0.0; -// Do not use kWindowEdgeSize directly. Use `windowEdgeSize` in `common.dart` instead. -final kWindowEdgeSize = isWindows ? 1.0 : 5.0; -final kWindowBorderWidth = 1.0; +// Do not use kWindowResizeEdgeSize directly. Use `windowResizeEdgeSize` in `common.dart` instead. +const kWindowResizeEdgeSize = 5.0; +const kWindowBorderWidth = 1.0; const kDesktopMenuPadding = EdgeInsets.only(left: 12.0, right: 3.0); const kFrameBorderRadius = 12.0; const kFrameClipRRectBorderRadius = 12.0; diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index 09ec3418b..b2073ae4a 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -257,8 +257,9 @@ class _ConnectionPageState extends State @override void onWindowLeaveFullScreen() { // Restore edge border to default edge size. - stateGlobal.resizeEdgeSize.value = - stateGlobal.isMaximized.isTrue ? kMaximizeEdgeSize : windowEdgeSize; + stateGlobal.resizeEdgeSize.value = stateGlobal.isMaximized.isTrue + ? kMaximizeEdgeSize + : windowResizeEdgeSize; } @override diff --git a/flutter/lib/desktop/pages/desktop_tab_page.dart b/flutter/lib/desktop/pages/desktop_tab_page.dart index 2e577e625..7319f7a3c 100644 --- a/flutter/lib/desktop/pages/desktop_tab_page.dart +++ b/flutter/lib/desktop/pages/desktop_tab_page.dart @@ -126,6 +126,7 @@ class _DesktopTabPageState extends State : Obx( () => DragToResizeArea( resizeEdgeSize: stateGlobal.resizeEdgeSize.value, + enableResizeEdges: windowManagerEnableResizeEdges, child: tabWidget, ), ); diff --git a/flutter/lib/desktop/pages/file_manager_tab_page.dart b/flutter/lib/desktop/pages/file_manager_tab_page.dart index a68e4feec..ca17ac3ff 100644 --- a/flutter/lib/desktop/pages/file_manager_tab_page.dart +++ b/flutter/lib/desktop/pages/file_manager_tab_page.dart @@ -111,6 +111,7 @@ class _FileManagerTabPageState extends State { : SubWindowDragToResizeArea( child: tabWidget, resizeEdgeSize: stateGlobal.resizeEdgeSize.value, + enableResizeEdges: subWindowManagerEnableResizeEdges, windowId: stateGlobal.windowId, ); } diff --git a/flutter/lib/desktop/pages/install_page.dart b/flutter/lib/desktop/pages/install_page.dart index 5285fc35f..0ff04240b 100644 --- a/flutter/lib/desktop/pages/install_page.dart +++ b/flutter/lib/desktop/pages/install_page.dart @@ -43,6 +43,7 @@ class _InstallPageState extends State { Widget build(BuildContext context) { return DragToResizeArea( resizeEdgeSize: stateGlobal.resizeEdgeSize.value, + enableResizeEdges: windowManagerEnableResizeEdges, child: Container( child: Scaffold( backgroundColor: Theme.of(context).colorScheme.background, diff --git a/flutter/lib/desktop/pages/port_forward_tab_page.dart b/flutter/lib/desktop/pages/port_forward_tab_page.dart index 5534db855..812f7aa99 100644 --- a/flutter/lib/desktop/pages/port_forward_tab_page.dart +++ b/flutter/lib/desktop/pages/port_forward_tab_page.dart @@ -127,6 +127,7 @@ class _PortForwardTabPageState extends State { () => SubWindowDragToResizeArea( child: tabWidget, resizeEdgeSize: stateGlobal.resizeEdgeSize.value, + enableResizeEdges: subWindowManagerEnableResizeEdges, windowId: stateGlobal.windowId, ), ); diff --git a/flutter/lib/desktop/pages/remote_tab_page.dart b/flutter/lib/desktop/pages/remote_tab_page.dart index 94535bc6d..dc0153da0 100644 --- a/flutter/lib/desktop/pages/remote_tab_page.dart +++ b/flutter/lib/desktop/pages/remote_tab_page.dart @@ -228,6 +228,7 @@ class _ConnectionTabPageState extends State { // Specially configured for a better resize area and remote control. childPadding: kDragToResizeAreaPadding, resizeEdgeSize: stateGlobal.resizeEdgeSize.value, + enableResizeEdges: subWindowManagerEnableResizeEdges, windowId: stateGlobal.windowId, )); } diff --git a/flutter/lib/models/state_model.dart b/flutter/lib/models/state_model.dart index 3c514aaaa..7c4d3cfd0 100644 --- a/flutter/lib/models/state_model.dart +++ b/flutter/lib/models/state_model.dart @@ -14,7 +14,7 @@ class StateGlobal { bool _isMinimized = false; final RxBool isMaximized = false.obs; final RxBool _showTabBar = true.obs; - final RxDouble _resizeEdgeSize = RxDouble(windowEdgeSize); + final RxDouble _resizeEdgeSize = RxDouble(windowResizeEdgeSize); final RxDouble _windowBorderWidth = RxDouble(kWindowBorderWidth); final RxBool showRemoteToolBar = false.obs; final svcStatus = SvcStatus.notReady.obs; @@ -93,7 +93,7 @@ class StateGlobal { ? kFullScreenEdgeSize : isMaximized.isTrue ? kMaximizeEdgeSize - : windowEdgeSize; + : windowResizeEdgeSize; String getInputSource({bool force = false}) { if (force || _inputSource.isEmpty) {