From c31c627cf85ea4fd40c1647c84d89b5e6f186785 Mon Sep 17 00:00:00 2001 From: scorpion-26 <58082714+scorpion-26@users.noreply.github.com> Date: Tue, 17 Jan 2023 13:20:10 +0100 Subject: Don't ignore previous maximise on defullscreen req (#1393) When defullscreening a window by the apps' request, we would return the window to normal mode, even if the window was previously maximized. Now a defullscreening request honors the previous maximized state. --- src/events/Windows.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/events/Windows.cpp') diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 86496bfc..caa3972f 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -767,11 +767,23 @@ void Events::listener_fullscreenWindow(void* owner, void* data) { if (REQUESTED->fullscreen && PWINDOW->m_bIsFullscreen) { const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID); if (PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL) { + // Store that we were maximized + PWINDOW->m_bWasMaximized = true; g_pCompositor->setWindowFullscreen(PWINDOW, false, FULLSCREEN_MAXIMIZED); g_pCompositor->setWindowFullscreen(PWINDOW, true, FULLSCREEN_FULL); } - } else if (REQUESTED->fullscreen != PWINDOW->m_bIsFullscreen && !PWINDOW->m_bFakeFullscreenState) + else + PWINDOW->m_bWasMaximized = false; + } else if (REQUESTED->fullscreen != PWINDOW->m_bIsFullscreen && !PWINDOW->m_bFakeFullscreenState) { g_pCompositor->setWindowFullscreen(PWINDOW, REQUESTED->fullscreen, FULLSCREEN_FULL); + if (PWINDOW->m_bWasMaximized && !REQUESTED->fullscreen) { + // Was maximized before the fullscreen request, return now back to maximized instead of normal + g_pCompositor->setWindowFullscreen(PWINDOW, true, FULLSCREEN_MAXIMIZED); + } + } + + // Disable the maximize flag when we recieve a de-fullscreen request + PWINDOW->m_bWasMaximized &= REQUESTED->fullscreen; requestedFullState = REQUESTED->fullscreen; -- cgit v1.2.3