diff options
| author | MightyPlaza <123664421+MightyPlaza@users.noreply.github.com> | 2025-07-04 22:16:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-05 00:16:25 +0200 |
| commit | b99c193e46292da45c273a1421d9ac8ed7b3588f (patch) | |
| tree | b4969e10d6a0e09fc883b5a36dea23d62c08821a /src/desktop/Window.cpp | |
| parent | 9b51d73a1e22c86e8d6ec78750e622da9242e32f (diff) | |
internal: handle setGroupCurrent properly on fs groups (#10920)
Diffstat (limited to 'src/desktop/Window.cpp')
| -rw-r--r-- | src/desktop/Window.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp index 6a6fec98..a7b0cdab 100644 --- a/src/desktop/Window.cpp +++ b/src/desktop/Window.cpp @@ -1041,30 +1041,33 @@ void CWindow::setGroupCurrent(PHLWINDOW pWindow) { const auto CURRENTISFOCUS = PCURRENT == g_pCompositor->m_lastWindow.lock(); + const auto PWINDOWSIZE = PCURRENT->m_realSize->goal(); + const auto PWINDOWPOS = PCURRENT->m_realPosition->goal(); + const auto PWINDOWLASTFLOATINGSIZE = PCURRENT->m_lastFloatingSize; + const auto PWINDOWLASTFLOATINGPOSITION = PCURRENT->m_lastFloatingPosition; + if (FULLSCREEN) g_pCompositor->setWindowFullscreenInternal(PCURRENT, FSMODE_NONE); - const auto PWINDOWSIZE = PCURRENT->m_realSize->goal(); - const auto PWINDOWPOS = PCURRENT->m_realPosition->goal(); - PCURRENT->setHidden(true); pWindow->setHidden(false); // can remove m_pLastWindow g_pLayoutManager->getCurrentLayout()->replaceWindowDataWith(PCURRENT, pWindow); - if (PCURRENT->m_isFloating) { - pWindow->m_realPosition->setValueAndWarp(PWINDOWPOS); - pWindow->m_realSize->setValueAndWarp(PWINDOWSIZE); - } + pWindow->m_realPosition->setValueAndWarp(PWINDOWPOS); + pWindow->m_realSize->setValueAndWarp(PWINDOWSIZE); + + if (FULLSCREEN) + g_pCompositor->setWindowFullscreenInternal(pWindow, MODE); + + pWindow->m_lastFloatingSize = PWINDOWLASTFLOATINGSIZE; + pWindow->m_lastFloatingPosition = PWINDOWLASTFLOATINGPOSITION; g_pCompositor->updateAllWindowsAnimatedDecorationValues(); if (CURRENTISFOCUS) g_pCompositor->focusWindow(pWindow); - if (FULLSCREEN) - g_pCompositor->setWindowFullscreenInternal(pWindow, MODE); - g_pHyprRenderer->damageWindow(pWindow); pWindow->updateWindowDecos(); |
