From 8fefb180b1f4bd62cd866f4c3d1d93ed3f019536 Mon Sep 17 00:00:00 2001 From: MightyPlaza <123664421+MightyPlaza@users.noreply.github.com> Date: Sun, 3 Sep 2023 15:23:13 +0000 Subject: [PATCH] windowrules: Monitor rule fix (#3157) * fix monitor rules modified: src/events/Windows.cpp * exec on workspace as silent when special is open modified: src/events/Windows.cpp --- src/events/Windows.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 65fb154f..888f0447 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -142,11 +142,11 @@ void Events::listener_mapWindow(void* owner, void* data) { const auto PMONITORFROMID = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID); - PWINDOW->m_iWorkspaceID = PMONITOR->specialWorkspaceID ? PMONITOR->specialWorkspaceID : PMONITOR->activeWorkspace; if (PWINDOW->m_iMonitorID != PMONITOR->ID) { g_pKeybindManager->m_mDispatchers["focusmonitor"](std::to_string(PWINDOW->m_iMonitorID)); PMONITOR = PMONITORFROMID; } + PWINDOW->m_iWorkspaceID = PMONITOR->specialWorkspaceID ? PMONITOR->specialWorkspaceID : PMONITOR->activeWorkspace; Debug::log(ERR, "Rule monitor, applying to window %lx -> mon: %i, workspace: %i", PWINDOW, PWINDOW->m_iMonitorID, PWINDOW->m_iWorkspaceID); } catch (std::exception& e) { Debug::log(ERR, "Rule monitor failed, rule: %s -> %s | err: %s", r.szRule.c_str(), r.szValue.c_str(), e.what()); } @@ -248,6 +248,9 @@ void Events::listener_mapWindow(void* owner, void* data) { PWINDOW->m_iWorkspaceID = pWorkspace->m_iID; PWINDOW->m_iMonitorID = pWorkspace->m_iMonitorID; + if (g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID)->specialWorkspaceID && !pWorkspace->m_bIsSpecialWorkspace) + workspaceSilent = true; + if (!workspaceSilent) { if (pWorkspace->m_bIsSpecialWorkspace) g_pCompositor->getMonitorFromID(pWorkspace->m_iMonitorID)->setSpecialWorkspace(pWorkspace);