summaryrefslogtreecommitdiff
path: root/src/layout/DwindleLayout.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-08-13 10:08:35 +0200
committervaxerski <vaxry@vaxry.net>2022-08-13 10:08:35 +0200
commit214c2c7b1c0182594a07a2c5ac7d99e9d7b5fcb3 (patch)
tree812f3d7dc2894bde117ac0919c4886d52d634842 /src/layout/DwindleLayout.cpp
parent9136783e9ceb10834a0da33f25d20eaca8591f6b (diff)
fix groups not updating size on head change
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
-rw-r--r--src/layout/DwindleLayout.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index fa9cbeab..192fe7c2 100644
--- a/src/layout/DwindleLayout.cpp
+++ b/src/layout/DwindleLayout.cpp
@@ -63,6 +63,20 @@ SDwindleNodeData* SDwindleNodeData::getGroupHead() {
return this;
}
+SDwindleNodeData* SDwindleNodeData::getGroupVisible() {
+ SDwindleNodeData* current = this->pNextGroupMember;
+
+ while (current != this) {
+ if (!current->pWindow->m_bHidden) {
+ return current;
+ }
+
+ current = current->pNextGroupMember;
+ }
+
+ return this;
+}
+
void SDwindleNodeData::setGroupFocusedNode(SDwindleNodeData* pMember) {
SDwindleNodeData* current = this->pNextGroupMember;
@@ -222,6 +236,14 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
PWINDOW->m_vRealSize.warp();
}
+ if (pNode->isGroupMember() && pNode->groupHead) {
+ // update visible node
+ const auto PVISNODE = pNode->getGroupVisible();
+
+ PVISNODE->pWindow->m_vRealSize = PWINDOW->m_vRealSize.goalv();
+ PVISNODE->pWindow->m_vRealPosition = PWINDOW->m_vRealPosition.goalv();
+ }
+
PWINDOW->updateWindowDecos();
}