summaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2023-11-01 01:28:43 +0000
committerVaxry <vaxry@vaxry.net>2023-11-01 01:28:43 +0000
commit7b32b4214d028a173c8192bddaa9e43503326080 (patch)
treeaf6a2a5fbf49852f87f084bfb53ae6b81fcad2bf /src/layout
parent6914103289125c4c909c1f17e53f9bdd02a66e62 (diff)
layout: avoid redundant size sets on new fullscreen
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/DwindleLayout.cpp5
-rw-r--r--src/layout/MasterLayout.cpp7
-rw-r--r--src/layout/MasterLayout.hpp2
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<eOrientation>& 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&);