mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-13 11:05:46 -07:00
minor fixes for fakefullscreen
This commit is contained in:
@@ -158,7 +158,7 @@ class CWindow {
|
|||||||
bool m_bPinned = false;
|
bool m_bPinned = false;
|
||||||
|
|
||||||
// fakefullscreen
|
// fakefullscreen
|
||||||
bool m_bInFullscreenReported = false;
|
bool m_bFakeFullscreenState = false;
|
||||||
|
|
||||||
// for proper cycling. While cycling we can't just move the pointers, so we need to keep track of the last cycled window.
|
// for proper cycling. While cycling we can't just move the pointers, so we need to keep track of the last cycled window.
|
||||||
CWindow* m_pLastCycledWindow = nullptr;
|
CWindow* m_pLastCycledWindow = nullptr;
|
||||||
|
@@ -756,18 +756,30 @@ void Events::listener_fullscreenWindow(void* owner, void* data) {
|
|||||||
if (PWINDOW->isHidden() || PWINDOW->m_bNoFullscreenRequest)
|
if (PWINDOW->isHidden() || PWINDOW->m_bNoFullscreenRequest)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
bool requestedFullState = false;
|
||||||
|
|
||||||
if (!PWINDOW->m_bIsX11) {
|
if (!PWINDOW->m_bIsX11) {
|
||||||
const auto REQUESTED = &PWINDOW->m_uSurface.xdg->toplevel->requested;
|
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);
|
g_pCompositor->setWindowFullscreen(PWINDOW, REQUESTED->fullscreen, FULLSCREEN_FULL);
|
||||||
|
|
||||||
|
requestedFullState = REQUESTED->fullscreen;
|
||||||
|
|
||||||
wlr_xdg_surface_schedule_configure(PWINDOW->m_uSurface.xdg);
|
wlr_xdg_surface_schedule_configure(PWINDOW->m_uSurface.xdg);
|
||||||
} else {
|
} else {
|
||||||
if (!PWINDOW->m_uSurface.xwayland->mapped)
|
if (!PWINDOW->m_uSurface.xwayland->mapped)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!PWINDOW->m_bFakeFullscreenState)
|
||||||
g_pCompositor->setWindowFullscreen(PWINDOW, PWINDOW->m_uSurface.xwayland->fullscreen, FULLSCREEN_FULL);
|
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();
|
PWINDOW->updateToplevel();
|
||||||
|
@@ -1823,6 +1823,8 @@ void CKeybindManager::bringActiveToTop(std::string args) {
|
|||||||
void CKeybindManager::fakeFullscreenActive(std::string args) {
|
void CKeybindManager::fakeFullscreenActive(std::string args) {
|
||||||
if (g_pCompositor->m_pLastWindow) {
|
if (g_pCompositor->m_pLastWindow) {
|
||||||
// will also set the flag
|
// will also set the flag
|
||||||
g_pXWaylandManager->setWindowFullscreen(g_pCompositor->m_pLastWindow, !g_pCompositor->m_pLastWindow->m_bInFullscreenReported);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -257,8 +257,6 @@ void CHyprXWaylandManager::setWindowFullscreen(CWindow* pWindow, bool fullscreen
|
|||||||
|
|
||||||
if (pWindow->m_phForeignToplevel)
|
if (pWindow->m_phForeignToplevel)
|
||||||
wlr_foreign_toplevel_handle_v1_set_fullscreen(pWindow->m_phForeignToplevel, fullscreen);
|
wlr_foreign_toplevel_handle_v1_set_fullscreen(pWindow->m_phForeignToplevel, fullscreen);
|
||||||
|
|
||||||
pWindow->m_bInFullscreenReported = fullscreen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2D CHyprXWaylandManager::getMaxSizeForWindow(CWindow* pWindow) {
|
Vector2D CHyprXWaylandManager::getMaxSizeForWindow(CWindow* pWindow) {
|
||||||
|
Reference in New Issue
Block a user