From 2ee9fb067526f51c6e13aa399ff540efe20cb540 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 12 Oct 2022 15:16:31 +0100 Subject: [PATCH] don't recalc offset on monitor reload offset auto --- src/helpers/Monitor.hpp | 2 +- src/render/Renderer.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp index a8c44bfb..b7442188 100644 --- a/src/helpers/Monitor.hpp +++ b/src/helpers/Monitor.hpp @@ -11,7 +11,7 @@ struct SMonitorRule; class CMonitor { public: - Vector2D vecPosition = Vector2D(0,0); + Vector2D vecPosition = Vector2D(-1,-1); // means unset Vector2D vecSize = Vector2D(0,0); Vector2D vecPixelSize = Vector2D(0,0); Vector2D vecTransformedSize = Vector2D(0,0); diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 93017824..e2983cae 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -955,8 +955,6 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR wlr_output_set_scale(pMonitor->output, pMonitorRule->scale); pMonitor->scale = pMonitorRule->scale; - pMonitor->vecPosition = pMonitorRule->offset; - // loop over modes and choose an appropriate one. if (pMonitorRule->resolution != Vector2D() && pMonitorRule->resolution != Vector2D(-1,-1) && pMonitorRule->resolution != Vector2D(-1,-2)) { if (!wl_list_empty(&pMonitor->output->modes)) { @@ -1175,7 +1173,7 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR pMonitor->vecSize = (Vector2D(x, y) / pMonitor->scale).floor(); pMonitor->vecTransformedSize = Vector2D(x,y); - if (pMonitorRule->offset == Vector2D(-1, -1)) { + if (pMonitorRule->offset == Vector2D(-1, -1) && pMonitor->vecPosition == Vector2D(-1, -1)) { // let's find manually a sensible position for it, to the right. Vector2D finalPos; @@ -1189,6 +1187,8 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR } pMonitor->vecPosition = finalPos; + } else if (pMonitorRule->offset != Vector2D(-1, -1)) { + pMonitor->vecPosition = pMonitorRule->offset; } if (!pMonitor->isMirror())