summaryrefslogtreecommitdiff
path: root/src/desktop/Window.cpp
diff options
context:
space:
mode:
authorMightyPlaza <123664421+MightyPlaza@users.noreply.github.com>2025-07-04 22:16:25 +0000
committerGitHub <noreply@github.com>2025-07-05 00:16:25 +0200
commitb99c193e46292da45c273a1421d9ac8ed7b3588f (patch)
treeb4969e10d6a0e09fc883b5a36dea23d62c08821a /src/desktop/Window.cpp
parent9b51d73a1e22c86e8d6ec78750e622da9242e32f (diff)
internal: handle setGroupCurrent properly on fs groups (#10920)
Diffstat (limited to 'src/desktop/Window.cpp')
-rw-r--r--src/desktop/Window.cpp23
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();