Skip to content

Commit 21b8f62

Browse files
committed
Add visiblePosition
1 parent 3e2a016 commit 21b8f62

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

lib/src/window_manager.dart

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,15 @@ class WindowManager {
256256

257257
num visibleWidth = primaryDisplay['size']['width'];
258258
num visibleHeight = primaryDisplay['size']['height'];
259+
num visibleStartX = 0;
259260
num visibleStartY = 0;
260261

261262
if (primaryDisplay['visibleSize'] != null) {
262263
visibleWidth = primaryDisplay['visibleSize']['width'];
263264
visibleHeight = primaryDisplay['visibleSize']['height'];
264265
}
265266
if (primaryDisplay['visiblePosition'] != null) {
267+
visibleStartX = primaryDisplay['visiblePosition']['x'];
266268
visibleStartY = primaryDisplay['visiblePosition']['y'];
267269
}
268270
Offset position = Offset(0, 0);
@@ -271,42 +273,42 @@ class WindowManager {
271273
position = Offset(0, 0);
272274
} else if (alignment == Alignment.topCenter) {
273275
position = Offset(
274-
(visibleWidth / 2) - (windowSize.width / 2),
276+
visibleStartX + (visibleWidth / 2) - (windowSize.width / 2),
275277
visibleStartY + 0,
276278
);
277279
} else if (alignment == Alignment.topRight) {
278280
position = Offset(
279-
visibleWidth - windowSize.width,
281+
visibleStartX + visibleWidth - windowSize.width,
280282
visibleStartY + 0,
281283
);
282284
} else if (alignment == Alignment.centerLeft) {
283285
position = Offset(
284-
0,
286+
visibleStartX + 0,
285287
visibleStartY + ((visibleHeight / 2) - (windowSize.height / 2)),
286288
);
287289
} else if (alignment == Alignment.center) {
288290
position = Offset(
289-
(visibleWidth / 2) - (windowSize.width / 2),
291+
visibleStartX + (visibleWidth / 2) - (windowSize.width / 2),
290292
visibleStartY + ((visibleHeight / 2) - (windowSize.height / 2)),
291293
);
292294
} else if (alignment == Alignment.centerRight) {
293295
position = Offset(
294-
visibleWidth - windowSize.width,
296+
visibleStartX + visibleWidth - windowSize.width,
295297
visibleStartY + ((visibleHeight / 2) - (windowSize.height / 2)),
296298
);
297299
} else if (alignment == Alignment.bottomLeft) {
298300
position = Offset(
299-
0,
301+
visibleStartX + 0,
300302
visibleStartY + (visibleHeight - windowSize.height),
301303
);
302304
} else if (alignment == Alignment.bottomCenter) {
303305
position = Offset(
304-
(visibleWidth / 2) - (windowSize.width / 2),
306+
visibleStartX + (visibleWidth / 2) - (windowSize.width / 2),
305307
visibleStartY + (visibleHeight - windowSize.height),
306308
);
307309
} else if (alignment == Alignment.bottomRight) {
308310
position = Offset(
309-
visibleWidth - windowSize.width,
311+
visibleStartX + visibleWidth - windowSize.width,
310312
visibleStartY + (visibleHeight - windowSize.height),
311313
);
312314
}
@@ -321,18 +323,20 @@ class WindowManager {
321323

322324
num visibleWidth = primaryDisplay['size']['width'];
323325
num visibleHeight = primaryDisplay['size']['height'];
326+
num visibleStartX = 0;
324327
num visibleStartY = 0;
325328

326329
if (primaryDisplay['visibleSize'] != null) {
327330
visibleWidth = primaryDisplay['visibleSize']['width'];
328331
visibleHeight = primaryDisplay['visibleSize']['height'];
329332
}
330333
if (primaryDisplay['visiblePosition'] != null) {
334+
visibleStartX = primaryDisplay['visiblePosition']['x'];
331335
visibleStartY = primaryDisplay['visiblePosition']['y'];
332336
}
333337

334338
Offset position = Offset(
335-
(visibleWidth / 2) - (windowSize.width / 2),
339+
visibleStartX + (visibleWidth / 2) - (windowSize.width / 2),
336340
visibleStartY + ((visibleHeight / 2) - (windowSize.height / 2)),
337341
);
338342

windows/window_manager.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,8 +730,12 @@ flutter::EncodableMap WindowManager::GetPrimaryDisplay(
730730
double visibleHeight =
731731
(info.rcWork.bottom - info.rcWork.top) / devicePixelRatio;
732732

733+
double x = (info.rcWork.left) / devicePixelRatio;
734+
double y = (info.rcWork.top) / devicePixelRatio;
735+
733736
flutter::EncodableMap size = flutter::EncodableMap();
734737
flutter::EncodableMap visibleSize = flutter::EncodableMap();
738+
flutter::EncodableMap visiblePosition = flutter::EncodableMap();
735739

736740
size[flutter::EncodableValue("width")] = flutter::EncodableValue(width);
737741
size[flutter::EncodableValue("height")] = flutter::EncodableValue(height);
@@ -741,10 +745,15 @@ flutter::EncodableMap WindowManager::GetPrimaryDisplay(
741745
visibleSize[flutter::EncodableValue("height")] =
742746
flutter::EncodableValue(visibleHeight);
743747

748+
visiblePosition[flutter::EncodableValue("x")] = flutter::EncodableValue(x);
749+
visiblePosition[flutter::EncodableValue("y")] = flutter::EncodableValue(y);
750+
744751
flutter::EncodableMap display = flutter::EncodableMap();
745752
display[flutter::EncodableValue("size")] = flutter::EncodableValue(size);
746753
display[flutter::EncodableValue("visibleSize")] =
747754
flutter::EncodableValue(visibleSize);
755+
display[flutter::EncodableValue("visiblePosition")] =
756+
flutter::EncodableValue(visiblePosition);
748757

749758
return display;
750759
}

0 commit comments

Comments
 (0)