diff options
| author | François Conzelmann <45296195+zephvr@users.noreply.github.com> | 2023-12-11 17:51:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-11 16:51:10 +0000 |
| commit | e53134ca904e47a24191ea028c019ac9728b7dad (patch) | |
| tree | f1c44c9d113402f426d6c43aaa077b7ce7e8809d /src | |
| parent | 8191e635a33ea634846f6458b42685da277f50b5 (diff) | |
internal: fix interactions with fakefullscreen (#4113)
- In a maximized window, unstuck fakefullscreen from on state
- In a fakefullscreen window, going in and out of fullscreen state
keep the fakefullscreen state rendered
Diffstat (limited to 'src')
| -rw-r--r-- | src/Compositor.cpp | 2 | ||||
| -rw-r--r-- | src/Window.cpp | 5 | ||||
| -rw-r--r-- | src/Window.hpp | 1 | ||||
| -rw-r--r-- | src/managers/KeybindManager.cpp | 3 |
4 files changed, 8 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index f3d048a9..2618ad39 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -2257,7 +2257,7 @@ void CCompositor::setWindowFullscreen(CWindow* pWindow, bool on, eFullscreenMode g_pLayoutManager->getCurrentLayout()->fullscreenRequestForWindow(pWindow, MODE, on); - g_pXWaylandManager->setWindowFullscreen(pWindow, pWindow->m_bIsFullscreen && MODE == FULLSCREEN_FULL); + g_pXWaylandManager->setWindowFullscreen(pWindow, pWindow->shouldSendFullscreenState()); pWindow->updateDynamicRules(); updateWindowAnimatedDecorationValues(pWindow); diff --git a/src/Window.cpp b/src/Window.cpp index 58ec5c72..bd51f2ff 100644 --- a/src/Window.cpp +++ b/src/Window.cpp @@ -1000,3 +1000,8 @@ int CWindow::getRealBorderSize() { bool CWindow::canBeTorn() { return (m_sAdditionalConfigData.forceTearing.toUnderlying() || m_bTearingHint) && g_pHyprRenderer->m_bTearingEnvSatisfied; } + +bool CWindow::shouldSendFullscreenState() { + const auto MODE = g_pCompositor->getWorkspaceByID(m_iWorkspaceID)->m_efFullscreenMode; + return m_bFakeFullscreenState || (m_bIsFullscreen && (MODE == FULLSCREEN_FULL)); +} diff --git a/src/Window.hpp b/src/Window.hpp index 810400d7..c4f2a15d 100644 --- a/src/Window.hpp +++ b/src/Window.hpp @@ -366,6 +366,7 @@ class CWindow { bool opaque(); float rounding(); bool canBeTorn(); + bool shouldSendFullscreenState(); int getRealBorderSize(); void updateSpecialRenderData(); diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 2046b867..6aea4e32 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1918,8 +1918,7 @@ void CKeybindManager::fakeFullscreenActive(std::string args) { if (g_pCompositor->m_pLastWindow) { // will also set the flag g_pCompositor->m_pLastWindow->m_bFakeFullscreenState = !g_pCompositor->m_pLastWindow->m_bFakeFullscreenState; - g_pXWaylandManager->setWindowFullscreen(g_pCompositor->m_pLastWindow, - g_pCompositor->m_pLastWindow->m_bFakeFullscreenState || g_pCompositor->m_pLastWindow->m_bIsFullscreen); + g_pXWaylandManager->setWindowFullscreen(g_pCompositor->m_pLastWindow, g_pCompositor->m_pLastWindow->shouldSendFullscreenState()); } } |
