summaryrefslogtreecommitdiff
path: root/src/layout/MasterLayout.cpp
diff options
context:
space:
mode:
authorMightyPlaza <123664421+MightyPlaza@users.noreply.github.com>2023-07-24 10:13:40 +0000
committerGitHub <noreply@github.com>2023-07-24 12:13:40 +0200
commit6db3c4ef5ec21f415577a26b0cdf57c98a778eb5 (patch)
tree3f3725b1b21c8c9dccd10635923cbcd2763bd7f2 /src/layout/MasterLayout.cpp
parent2bbe3aa122f242f43ac31fb85a39da48db69ca79 (diff)
layout: no_border_when_only-improvements (#2791)
Diffstat (limited to 'src/layout/MasterLayout.cpp')
-rw-r--r--src/layout/MasterLayout.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp
index ca826d4d..ebe7f4b7 100644
--- a/src/layout/MasterLayout.cpp
+++ b/src/layout/MasterLayout.cpp
@@ -530,20 +530,22 @@ void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) {
PWINDOW->m_vSize = pNode->size;
PWINDOW->m_vPosition = pNode->position;
- auto calcPos = PWINDOW->m_vPosition + Vector2D(borderSize, borderSize);
- auto calcSize = PWINDOW->m_vSize - Vector2D(2 * borderSize, 2 * borderSize);
-
- if (*PNOGAPSWHENONLY && !WORKSPACERULE.border && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) &&
+ if (*PNOGAPSWHENONLY && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) &&
(getNodesOnWorkspace(PWINDOW->m_iWorkspaceID) == 1 ||
(PWINDOW->m_bIsFullscreen && g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)->m_efFullscreenMode == FULLSCREEN_MAXIMIZED))) {
- PWINDOW->m_vRealPosition = calcPos - Vector2D(borderSize, borderSize);
- PWINDOW->m_vRealSize = calcSize + Vector2D(2 * borderSize, 2 * borderSize);
-
- PWINDOW->updateWindowDecos();
PWINDOW->m_sSpecialRenderData.rounding = false;
- PWINDOW->m_sSpecialRenderData.border = false;
- PWINDOW->m_sSpecialRenderData.decorate = false;
+ PWINDOW->m_sSpecialRenderData.decorate = WORKSPACERULE.decorate.value_or(true);
+ PWINDOW->m_sSpecialRenderData.border = WORKSPACERULE.border.value_or(*PNOGAPSWHENONLY == 2);
+
+ const auto RESERVED = PWINDOW->getFullWindowReservedArea();
+
+ borderSize *= PWINDOW->m_sSpecialRenderData.border;
+
+ PWINDOW->m_vRealPosition = PWINDOW->m_vPosition + Vector2D(borderSize, borderSize) + RESERVED.topLeft;
+ PWINDOW->m_vRealSize = PWINDOW->m_vSize - Vector2D(2 * borderSize, 2 * borderSize) - (RESERVED.topLeft + RESERVED.bottomRight);
+
+ PWINDOW->updateWindowDecos();
return;
}
@@ -553,6 +555,9 @@ void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) {
PWINDOW->m_sSpecialRenderData.border = WORKSPACERULE.border.value_or(true);
PWINDOW->m_sSpecialRenderData.borderSize = WORKSPACERULE.borderSize.value_or(-1);
+ auto calcPos = PWINDOW->m_vPosition + Vector2D(borderSize, borderSize);
+ auto calcSize = PWINDOW->m_vSize - Vector2D(2 * borderSize, 2 * borderSize);
+
const auto OFFSETTOPLEFT = Vector2D(DISPLAYLEFT ? gapsOut : gapsIn, DISPLAYTOP ? gapsOut : gapsIn);
const auto OFFSETBOTTOMRIGHT = Vector2D(DISPLAYRIGHT ? gapsOut : gapsIn, DISPLAYBOTTOM ? gapsOut : gapsIn);