diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-29 15:44:30 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-29 15:45:51 +0200 |
| commit | 227cbb0464bbf211f9d5ec7f6fa8e1bba0aecd12 (patch) | |
| tree | 99e04d68d0fa6521201a7645a9b8c5ee83f6d736 /src/layout/DwindleLayout.cpp | |
| parent | fdb3f610e564c644ab0fc7fd154562258350084a (diff) | |
Added fullscreen types, maximize and full
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
| -rw-r--r-- | src/layout/DwindleLayout.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index 8117622c..79c08571 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -620,7 +620,7 @@ void CHyprDwindleLayout::onWindowCreatedFloating(CWindow* pWindow) { g_pCompositor->moveWindowToTop(pWindow); } -void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow) { +void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscreenMode fullscreenMode) { if (!g_pCompositor->windowValidMapped(pWindow)) return; @@ -650,6 +650,8 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow) { } else { // if it now got fullscreen, make it fullscreen + PWORKSPACE->m_efFullscreenMode = fullscreenMode; + // save position and size if floating if (pWindow->m_bIsFloating) { pWindow->m_vPosition = pWindow->m_vRealPosition.vec(); @@ -657,8 +659,22 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow) { } // apply new pos and size being monitors' box - pWindow->m_vRealPosition = PMONITOR->vecPosition; - pWindow->m_vRealSize = PMONITOR->vecSize; + if (fullscreenMode == FULLSCREEN_FULL) { + pWindow->m_vRealPosition = PMONITOR->vecPosition; + pWindow->m_vRealSize = PMONITOR->vecSize; + } else { + // This is a massive hack. + // We make a fake "only" node and apply + // To keep consistent with the settings without C+P code + + SDwindleNodeData fakeNode; + fakeNode.pWindow = pWindow; + fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft; + fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight; + fakeNode.workspaceID = pWindow->m_iWorkspaceID; + + applyNodeDataToWindow(&fakeNode); + } } g_pXWaylandManager->setWindowSize(pWindow, pWindow->m_vRealSize.goalv()); |
