summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFrançois Conzelmann <45296195+zephvr@users.noreply.github.com>2023-12-11 17:51:10 +0100
committerGitHub <noreply@github.com>2023-12-11 16:51:10 +0000
commite53134ca904e47a24191ea028c019ac9728b7dad (patch)
treef1c44c9d113402f426d6c43aaa077b7ce7e8809d /src
parent8191e635a33ea634846f6458b42685da277f50b5 (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.cpp2
-rw-r--r--src/Window.cpp5
-rw-r--r--src/Window.hpp1
-rw-r--r--src/managers/KeybindManager.cpp3
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());
}
}