@@ -6,24 +6,39 @@ Future<Offset> calcWindowPosition(
66 Alignment alignment,
77) async {
88 Display primaryDisplay = await screenRetriever.getPrimaryDisplay ();
9+ List <Display > allDisplays = await screenRetriever.getAllDisplays ();
10+ Offset cursorScreenPoint = await screenRetriever.getCursorScreenPoint ();
911
10- num visibleWidth = primaryDisplay.size.width;
11- num visibleHeight = primaryDisplay.size.height;
12+ Display currentDisplay = allDisplays.firstWhere (
13+ (display) => Rect .fromLTWH (
14+ display.visiblePosition! .dx,
15+ display.visiblePosition! .dy,
16+ display.size.width,
17+ display.size.height,
18+ ).contains (cursorScreenPoint),
19+ orElse: () => primaryDisplay,
20+ );
21+
22+ num visibleWidth = currentDisplay.size.width;
23+ num visibleHeight = currentDisplay.size.height;
1224 num visibleStartX = 0 ;
1325 num visibleStartY = 0 ;
1426
15- if (primaryDisplay .visibleSize != null ) {
16- visibleWidth = primaryDisplay .visibleSize! .width;
17- visibleHeight = primaryDisplay .visibleSize! .height;
27+ if (currentDisplay .visibleSize != null ) {
28+ visibleWidth = currentDisplay .visibleSize! .width;
29+ visibleHeight = currentDisplay .visibleSize! .height;
1830 }
19- if (primaryDisplay .visiblePosition != null ) {
20- visibleStartX = primaryDisplay .visiblePosition! .dx;
21- visibleStartY = primaryDisplay .visiblePosition! .dy;
31+ if (currentDisplay .visiblePosition != null ) {
32+ visibleStartX = currentDisplay .visiblePosition! .dx;
33+ visibleStartY = currentDisplay .visiblePosition! .dy;
2234 }
2335 Offset position = const Offset (0 , 0 );
2436
2537 if (alignment == Alignment .topLeft) {
26- position = const Offset (0 , 0 );
38+ position = Offset (
39+ visibleStartX + 0 ,
40+ visibleStartY + 0 ,
41+ );
2742 } else if (alignment == Alignment .topCenter) {
2843 position = Offset (
2944 visibleStartX + (visibleWidth / 2 ) - (windowSize.width / 2 ),
@@ -65,6 +80,5 @@ Future<Offset> calcWindowPosition(
6580 visibleStartY + (visibleHeight - windowSize.height),
6681 );
6782 }
68-
6983 return position;
7084}
0 commit comments