diff options
| author | Nikolaos Karaolidis <nick@karaolidis.com> | 2025-05-27 15:51:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-27 15:51:59 +0100 |
| commit | 90d0b8ecae9540c21ce418ef781cf0fc2afc4dff (patch) | |
| tree | c1224efc942bb7e3888aa940507104629d11a5b9 /src/Compositor.cpp | |
| parent | ddb9f8394df01eaa575955e7f0eee99065441e4b (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.cpp | 24 |
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); |
