summaryrefslogtreecommitdiff
path: root/src/layout/DwindleLayout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
-rw-r--r--src/layout/DwindleLayout.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index 02a3dfbe..2f66482a 100644
--- a/src/layout/DwindleLayout.cpp
+++ b/src/layout/DwindleLayout.cpp
@@ -549,6 +549,27 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) {
g_pHyprRenderer->damageMonitor(PMONITOR);
if (PMONITOR->specialWorkspaceID) {
+ const auto PSPECIALWS = g_pCompositor->getWorkspaceByID(PMONITOR->specialWorkspaceID);
+
+ if (PSPECIALWS->m_bHasFullscreenWindow) {
+ const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PSPECIALWS->m_iID);
+
+ if (PSPECIALWS->m_efFullscreenMode == FULLSCREEN_FULL) {
+ PFULLWINDOW->m_vRealPosition = PMONITOR->vecPosition;
+ PFULLWINDOW->m_vRealSize = PMONITOR->vecSize;
+ } else if (PSPECIALWS->m_efFullscreenMode == FULLSCREEN_MAXIMIZED) {
+ SDwindleNodeData fakeNode;
+ fakeNode.pWindow = PFULLWINDOW;
+ fakeNode.box = {PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft, PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight};
+ fakeNode.workspaceID = PSPECIALWS->m_iID;
+ PFULLWINDOW->m_vPosition = fakeNode.box.pos();
+ PFULLWINDOW->m_vSize = fakeNode.box.size();
+ fakeNode.ignoreFullscreenChecks = true;
+
+ applyNodeDataToWindow(&fakeNode);
+ }
+ }
+
const auto TOPNODE = getMasterNodeOnWorkspace(PMONITOR->specialWorkspaceID);
if (TOPNODE && PMONITOR) {