summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorNikolaos Karaolidis <nick@karaolidis.com>2025-05-27 15:51:59 +0100
committerGitHub <noreply@github.com>2025-05-27 15:51:59 +0100
commit90d0b8ecae9540c21ce418ef781cf0fc2afc4dff (patch)
treec1224efc942bb7e3888aa940507104629d11a5b9 /src/Compositor.cpp
parentddb9f8394df01eaa575955e7f0eee99065441e4b (diff)
core: add auto-center arrangements (#10527)
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index c6593923..b4d3aaea 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -2890,6 +2890,30 @@ void CCompositor::arrangeMonitors() {
case eAutoDirs::DIR_AUTO_LEFT: newPosition.x = maxXOffsetLeft - m->m_size.x; break;
case eAutoDirs::DIR_AUTO_RIGHT:
case eAutoDirs::DIR_AUTO_NONE: newPosition.x = maxXOffsetRight; break;
+ case eAutoDirs::DIR_AUTO_CENTER_UP: {
+ int width = maxXOffsetRight - maxXOffsetLeft;
+ newPosition.y = maxYOffsetUp - m->m_size.y;
+ newPosition.x = maxXOffsetLeft + (width - m->m_size.x) / 2;
+ break;
+ }
+ case eAutoDirs::DIR_AUTO_CENTER_DOWN: {
+ int width = maxXOffsetRight - maxXOffsetLeft;
+ newPosition.y = maxYOffsetDown;
+ newPosition.x = maxXOffsetLeft + (width - m->m_size.x) / 2;
+ break;
+ }
+ case eAutoDirs::DIR_AUTO_CENTER_LEFT: {
+ int height = maxYOffsetDown - maxYOffsetUp;
+ newPosition.x = maxXOffsetLeft - m->m_size.x;
+ newPosition.y = maxYOffsetUp + (height - m->m_size.y) / 2;
+ break;
+ }
+ case eAutoDirs::DIR_AUTO_CENTER_RIGHT: {
+ int height = maxYOffsetDown - maxYOffsetUp;
+ newPosition.x = maxXOffsetRight;
+ newPosition.y = maxYOffsetUp + (height - m->m_size.y) / 2;
+ break;
+ }
default: UNREACHABLE();
}
Debug::log(LOG, "arrangeMonitors: {} auto {:j}", m->m_name, m->m_position);