aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/events/Windows.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/events/Windows.cpp')
-rw-r--r--src/events/Windows.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 5b96d279..be75dfd9 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -125,11 +125,21 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (MONITORSTR == "unset") {
PWINDOW->m_iMonitorID = PMONITOR->ID;
} else {
- const long int MONITOR = std::stoi(MONITORSTR);
- if (!g_pCompositor->getMonitorFromID(MONITOR))
- PWINDOW->m_iMonitorID = 0;
- else
- PWINDOW->m_iMonitorID = MONITOR;
+ if (isNumber(MONITORSTR)) {
+ const long int MONITOR = std::stoi(MONITORSTR);
+ if (!g_pCompositor->getMonitorFromID(MONITOR))
+ PWINDOW->m_iMonitorID = 0;
+ else
+ PWINDOW->m_iMonitorID = MONITOR;
+ } else {
+ const auto PMONITOR = g_pCompositor->getMonitorFromName(MONITORSTR);
+ if (PMONITOR)
+ PWINDOW->m_iMonitorID = PMONITOR->ID;
+ else {
+ Debug::log(ERR, "No monitor in monitor %s rule", MONITORSTR.c_str());
+ continue;
+ }
+ }
}
PWINDOW->m_iWorkspaceID = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID)->activeWorkspace;