Skip to content

Commit 700abde

Browse files
committed
fix: dock mode compatibility with windows
1 parent 42db7c8 commit 700abde

File tree

3 files changed

+57
-21
lines changed

3 files changed

+57
-21
lines changed

lib/widgets/titlebar.dart

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,30 @@ import 'package:flutter_bloc/flutter_bloc.dart';
1414
import 'package:universal_io/io.dart';
1515
import 'package:window_manager/window_manager.dart';
1616

17+
class ResizeHandleForDockView extends StatelessWidget {
18+
final AppView view;
19+
final Widget child;
20+
const ResizeHandleForDockView(
21+
{super.key, required this.view, required this.child});
22+
23+
@override
24+
Widget build(BuildContext context) {
25+
if (view == AppView.windowed) return child;
26+
ResizeEdge? edge = switch (view) {
27+
AppView.leftDocked => ResizeEdge.right,
28+
AppView.topDocked => ResizeEdge.bottom,
29+
AppView.rightDocked => ResizeEdge.left,
30+
AppView.bottomDocked => ResizeEdge.top,
31+
_ => null,
32+
};
33+
return DragToResizeArea(
34+
// resizeEdgeColor: Colors.red,
35+
enableResizeEdges: edge != null ? [edge] : null,
36+
child: child,
37+
);
38+
}
39+
}
40+
1741
class AppTitle extends StatelessWidget {
1842
const AppTitle({super.key});
1943

@@ -48,7 +72,8 @@ class TitlebarView extends StatelessWidget {
4872
},
4973
builder: (context, view) {
5074
final isWindowMode = view == AppView.windowed;
51-
final dragToMove = DragToMoveArea2(
75+
76+
final dragToMoveHandler = DragToMoveArea2(
5277
enabled: isWindowMode,
5378
child: DecoratedBox(
5479
decoration: BoxDecoration(color: colors.surface),
@@ -64,7 +89,7 @@ class TitlebarView extends StatelessWidget {
6489
const AppLayoutToggleButton(),
6590
width2,
6691
const AppViewButton(),
67-
if (Platform.isWindows)
92+
if (Platform.isWindows && isWindowMode)
6893
WindowCaptionButton.close(
6994
brightness: colors.brightness,
7095
onPressed: context.windowAction?.hide,
@@ -75,14 +100,25 @@ class TitlebarView extends StatelessWidget {
75100
),
76101
);
77102
if (view == AppView.topDocked) {
78-
return Column(
79-
mainAxisSize: MainAxisSize.min,
80-
children: [Expanded(child: child), dragToMove],
103+
return ResizeHandleForDockView(
104+
view: view,
105+
child: Column(
106+
mainAxisSize: MainAxisSize.min,
107+
children: [Expanded(child: child), dragToMoveHandler],
108+
),
81109
);
82110
}
83-
return Column(
84-
mainAxisSize: MainAxisSize.min,
85-
children: [dragToMove, Expanded(child: child)],
111+
return ResizeHandleForDockView(
112+
view: view,
113+
child: Column(
114+
mainAxisSize: MainAxisSize.min,
115+
children: [
116+
dragToMoveHandler,
117+
Expanded(
118+
child: child,
119+
)
120+
],
121+
),
86122
);
87123
},
88124
);

packages/copycat_base

pubspec.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,18 +1047,18 @@ packages:
10471047
dependency: transitive
10481048
description:
10491049
name: leak_tracker
1050-
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
1050+
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
10511051
url: "https://pub.dev"
10521052
source: hosted
1053-
version: "10.0.4"
1053+
version: "10.0.5"
10541054
leak_tracker_flutter_testing:
10551055
dependency: transitive
10561056
description:
10571057
name: leak_tracker_flutter_testing
1058-
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
1058+
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
10591059
url: "https://pub.dev"
10601060
source: hosted
1061-
version: "3.0.3"
1061+
version: "3.0.5"
10621062
leak_tracker_testing:
10631063
dependency: transitive
10641064
description:
@@ -1103,10 +1103,10 @@ packages:
11031103
dependency: transitive
11041104
description:
11051105
name: material_color_utilities
1106-
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
1106+
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
11071107
url: "https://pub.dev"
11081108
source: hosted
1109-
version: "0.8.0"
1109+
version: "0.11.1"
11101110
menu_base:
11111111
dependency: transitive
11121112
description:
@@ -1119,10 +1119,10 @@ packages:
11191119
dependency: transitive
11201120
description:
11211121
name: meta
1122-
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
1122+
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
11231123
url: "https://pub.dev"
11241124
source: hosted
1125-
version: "1.12.0"
1125+
version: "1.15.0"
11261126
mime:
11271127
dependency: "direct main"
11281128
description:
@@ -1766,10 +1766,10 @@ packages:
17661766
dependency: transitive
17671767
description:
17681768
name: test_api
1769-
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
1769+
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
17701770
url: "https://pub.dev"
17711771
source: hosted
1772-
version: "0.7.0"
1772+
version: "0.7.2"
17731773
time:
17741774
dependency: transitive
17751775
description:
@@ -1958,10 +1958,10 @@ packages:
19581958
dependency: transitive
19591959
description:
19601960
name: vm_service
1961-
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
1961+
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
19621962
url: "https://pub.dev"
19631963
source: hosted
1964-
version: "14.2.1"
1964+
version: "14.2.5"
19651965
watcher:
19661966
dependency: transitive
19671967
description:

0 commit comments

Comments
 (0)