From 7b32b4214d028a173c8192bddaa9e43503326080 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Wed, 1 Nov 2023 01:28:43 +0000 Subject: [PATCH] layout: avoid redundant size sets on new fullscreen --- src/layout/DwindleLayout.cpp | 5 ++++- src/layout/MasterLayout.cpp | 7 +++++-- src/layout/MasterLayout.hpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index 74277dd4..ef7fc3c8 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -119,6 +119,9 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for // if user specified them in config const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)); + if (PWINDOW->m_bIsFullscreen && !force) + return; + PWINDOW->updateSpecialRenderData(); static auto* const PGAPSIN = &g_pConfigManager->getConfigValuePtr("general:gaps_in")->intValue; @@ -561,7 +564,7 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) { PFULLWINDOW->m_vPosition = fakeNode.position; PFULLWINDOW->m_vSize = fakeNode.size; - applyNodeDataToWindow(&fakeNode); + applyNodeDataToWindow(&fakeNode, true); } return; diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index 33b8f62d..abc0fe9c 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -566,7 +566,7 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) { } } -void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) { +void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode, bool force) { CMonitor* PMONITOR = nullptr; if (g_pCompositor->isWorkspaceSpecial(pNode->workspaceID)) { @@ -596,6 +596,9 @@ void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) { // if user specified them in config const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)); + if (PWINDOW->m_bIsFullscreen && !force) + return; + PWINDOW->updateSpecialRenderData(); static auto* const PGAPSIN = &g_pConfigManager->getConfigValuePtr("general:gaps_in")->intValue; @@ -889,7 +892,7 @@ void CHyprMasterLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscreen pWindow->m_vPosition = fakeNode.position; pWindow->m_vSize = fakeNode.size; - applyNodeDataToWindow(&fakeNode); + applyNodeDataToWindow(&fakeNode, true); } } diff --git a/src/layout/MasterLayout.hpp b/src/layout/MasterLayout.hpp index f220bd7b..f0f72d6b 100644 --- a/src/layout/MasterLayout.hpp +++ b/src/layout/MasterLayout.hpp @@ -76,7 +76,7 @@ class CHyprMasterLayout : public IHyprLayout { void buildOrientationCycleVectorFromEOperation(std::vector& cycle); void runOrientationCycle(SLayoutMessageHeader& header, CVarList* vars, int next); int getNodesOnWorkspace(const int&); - void applyNodeDataToWindow(SMasterNodeData*); + void applyNodeDataToWindow(SMasterNodeData*, bool force = false); SMasterNodeData* getNodeFromWindow(CWindow*); SMasterNodeData* getMasterNodeOnWorkspace(const int&); SMasterWorkspaceData* getMasterWorkspaceData(const int&);