diff options
| author | vaxerski <vaxry@vaxry.net> | 2023-01-06 13:29:43 +0100 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2023-01-06 13:29:49 +0100 |
| commit | 461fab0f27e4913993c6321625b343537aba1bdf (patch) | |
| tree | c1559a5d1cccd3c35434293a4053e1bb8bfb2ca1 /src/events/Windows.cpp | |
| parent | e9a6c3b49828ff39b211effeee952756bb23ef8a (diff) | |
minor fixes for fakefullscreen
Diffstat (limited to 'src/events/Windows.cpp')
| -rw-r--r-- | src/events/Windows.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 2557e0f0..50f58cfc 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -756,18 +756,30 @@ void Events::listener_fullscreenWindow(void* owner, void* data) { if (PWINDOW->isHidden() || PWINDOW->m_bNoFullscreenRequest) return; + bool requestedFullState = false; + if (!PWINDOW->m_bIsX11) { const auto REQUESTED = &PWINDOW->m_uSurface.xdg->toplevel->requested; - if (REQUESTED->fullscreen != PWINDOW->m_bIsFullscreen) + if (REQUESTED->fullscreen != PWINDOW->m_bIsFullscreen && !PWINDOW->m_bFakeFullscreenState) g_pCompositor->setWindowFullscreen(PWINDOW, REQUESTED->fullscreen, FULLSCREEN_FULL); + requestedFullState = REQUESTED->fullscreen; + wlr_xdg_surface_schedule_configure(PWINDOW->m_uSurface.xdg); } else { if (!PWINDOW->m_uSurface.xwayland->mapped) return; - g_pCompositor->setWindowFullscreen(PWINDOW, PWINDOW->m_uSurface.xwayland->fullscreen, FULLSCREEN_FULL); + if (!PWINDOW->m_bFakeFullscreenState) + g_pCompositor->setWindowFullscreen(PWINDOW, PWINDOW->m_uSurface.xwayland->fullscreen, FULLSCREEN_FULL); + + requestedFullState = PWINDOW->m_uSurface.xwayland->fullscreen; + } + + if (!requestedFullState && PWINDOW->m_bFakeFullscreenState) { + g_pXWaylandManager->setWindowFullscreen(PWINDOW, false); // fixes for apps expecting a de-fullscreen (e.g. ff) + g_pXWaylandManager->setWindowFullscreen(PWINDOW, true); } PWINDOW->updateToplevel(); |
