feat: window size presets — 4x8 screen-ratio grid in settings (v1.8.0)
- Settings 'Size' section: 8 col x 4 row grid, 31 buttons labeled a:b (a splits H, b splits W); top-left cell empty placeholder (no 1:1 — title bar double click already maximizes) - Click resizes the window to work.width/b x work.height/a of the display's work area (screen_retriever visibleSize, taskbar excluded); position unchanged, no selection state tracking - minimumSize 400x300 -> 160x100 (4:8 cell needs it) - Settings file-properties rows left-aligned (were centered under path)
This commit is contained in:
1 parent
8a80cba116
commit
9a7480cd68
11 files changed
+150
-3
No files matched your search
@@ -84,6 +84,36 @@ class WindowPersistence {
|
||||
}
|
||||
}
|
||||
|
||||
/// Work area (taskbar excluded) of the display containing the window,
|
||||
/// in logical px. Returns null if screen info is unavailable.
|
||||
static Future<Size?> workAreaSize({
|
||||
required Offset windowPosition,
|
||||
}) async {
|
||||
try {
|
||||
final displays = await screenRetriever.getAllDisplays();
|
||||
|
||||
// Pencerenin bulunduğu monitörü bul (çoklu monitör desteği)
|
||||
Display display = await screenRetriever.getPrimaryDisplay();
|
||||
for (final d in displays) {
|
||||
final pos = d.visiblePosition;
|
||||
final size = d.visibleSize ?? d.size;
|
||||
if (pos != null &&
|
||||
windowPosition.dx >= pos.dx &&
|
||||
windowPosition.dx < pos.dx + size.width &&
|
||||
windowPosition.dy >= pos.dy &&
|
||||
windowPosition.dy < pos.dy + size.height) {
|
||||
display = d;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return display.visibleSize ?? display.size;
|
||||
} catch (_) {
|
||||
// Fallback: screen info unavailable → caller silently no-ops.
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// Cascade: place new window to the right of the previous one.
|
||||
/// Falls to the next row (row start) when it would overflow the screen,
|
||||
/// and wraps to the top-left if the next row also overflows.
|
||||
|
||||
Reference in new issue
Block a user