From 90d0b8ecae9540c21ce418ef781cf0fc2afc4dff Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Tue, 27 May 2025 15:51:59 +0100 Subject: core: add auto-center arrangements (#10527) Signed-off-by: Nikolaos Karaolidis --- src/Compositor.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/Compositor.cpp') 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); -- cgit v1.2.3