diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-30 20:16:23 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-30 20:16:23 +0200 |
| commit | f794c91293ca4249fe0883bad4371a4e9e8d4344 (patch) | |
| tree | dcf11d4415b95ecd5a896e967115e50e63a5e32a /src/events/Windows.cpp | |
| parent | e49657f0f927abbe9ef9b5f9b5714ca1adeec99d (diff) | |
windows on top of fullscreen, lastmonitor fixes
Diffstat (limited to 'src/events/Windows.cpp')
| -rw-r--r-- | src/events/Windows.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 92b26cf8..667a5ea3 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -24,7 +24,8 @@ void addViewCoords(void* pWindow, int* x, int* y) { void Events::listener_mapWindow(void* owner, void* data) { CWindow* PWINDOW = (CWindow*)owner; - const auto PMONITOR = g_pCompositor->m_pLastMonitor; + const auto PMONITOR = g_pCompositor->getMonitorFromCursor(); + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PMONITOR->activeWorkspace); PWINDOW->m_iMonitorID = PMONITOR->ID; PWINDOW->m_bMappedX11 = true; PWINDOW->m_iWorkspaceID = PMONITOR->activeWorkspace; @@ -43,6 +44,12 @@ void Events::listener_mapWindow(void* owner, void* data) { if (g_pXWaylandManager->shouldBeFloated(PWINDOW)) PWINDOW->m_bIsFloating = true; + if (PWORKSPACE->hasFullscreenWindow && !PWINDOW->m_bIsFloating) { + const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->ID); + g_pLayoutManager->getCurrentLayout()->fullscreenRequestForWindow(PFULLWINDOW); + g_pXWaylandManager->setWindowFullscreen(PFULLWINDOW, PFULLWINDOW->m_bIsFullscreen); + } + // window rules const auto WINDOWRULES = g_pConfigManager->getMatchingRules(PWINDOW); @@ -71,6 +78,7 @@ void Events::listener_mapWindow(void* owner, void* data) { if (PWINDOW->m_bIsFloating) { g_pLayoutManager->getCurrentLayout()->onWindowCreatedFloating(PWINDOW); + PWINDOW->m_bCreatedOverFullscreen = true; // size and move rules for (auto& r : WINDOWRULES) { |
