summaryrefslogtreecommitdiff
path: root/src/events/Windows.cpp
diff options
context:
space:
mode:
authorKhiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>2024-07-15 21:48:04 +1000
committerGitHub <noreply@github.com>2024-07-15 13:48:04 +0200
commitbd526822deb9ed47c0b51b534817aa8541fff07b (patch)
tree25f9a3e66f550a73f7a7e219cda2a01f67063a90 /src/events/Windows.cpp
parentf442f435d34e983768fcc83b54374ac94a7f7658 (diff)
config: add option to exit window while retaining fullscreen (#516) (#6880)
* feat: saving fullscreen mode and state for restoring later * style: no p-prefix, capitalised constants
Diffstat (limited to 'src/events/Windows.cpp')
-rw-r--r--src/events/Windows.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 44e8fa02..516ac2ae 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -580,6 +580,11 @@ void Events::listener_unmapWindow(void* owner, void* data) {
Debug::log(LOG, "{:c} unmapped", PWINDOW);
+ static auto PEXITRETAINSFS = CConfigValue<Hyprlang::INT>("misc:exit_window_retains_fullscreen");
+
+ const auto CURRENTWINDOWFSSTATE = PWINDOW->m_bIsFullscreen;
+ const auto CURRENTWINDOWFSMODE = PWINDOW->m_pWorkspace->m_efFullscreenMode;
+
if (!PWINDOW->m_pWLSurface->exists() || !PWINDOW->m_bIsMapped) {
Debug::log(WARN, "{} unmapped without being mapped??", PWINDOW);
PWINDOW->m_bFadingOut = false;
@@ -638,8 +643,11 @@ void Events::listener_unmapWindow(void* owner, void* data) {
Debug::log(LOG, "On closed window, new focused candidate is {}", PWINDOWCANDIDATE);
- if (PWINDOWCANDIDATE != g_pCompositor->m_pLastWindow.lock() && PWINDOWCANDIDATE)
+ if (PWINDOWCANDIDATE != g_pCompositor->m_pLastWindow.lock() && PWINDOWCANDIDATE) {
g_pCompositor->focusWindow(PWINDOWCANDIDATE);
+ if (*PEXITRETAINSFS && CURRENTWINDOWFSSTATE)
+ g_pCompositor->setWindowFullscreen(PWINDOWCANDIDATE, true, CURRENTWINDOWFSMODE);
+ }
if (!PWINDOWCANDIDATE && g_pCompositor->getWindowsOnWorkspace(PWINDOW->workspaceID()) == 0)
g_pInputManager->refocus();