summaryrefslogtreecommitdiff
path: root/src/events/Windows.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-30 20:16:23 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-30 20:16:23 +0200
commitf794c91293ca4249fe0883bad4371a4e9e8d4344 (patch)
treedcf11d4415b95ecd5a896e967115e50e63a5e32a /src/events/Windows.cpp
parente49657f0f927abbe9ef9b5f9b5714ca1adeec99d (diff)
windows on top of fullscreen, lastmonitor fixes
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 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) {