From 4154943f69563e6c68c398ef81b4a7e3f6c5004e Mon Sep 17 00:00:00 2001
From: patrick96
Date: Fri, 15 Jan 2021 20:23:25 +0100
Subject: [PATCH] fix(xworkspaces): Handle -1 value for _NET_WM_DESKTOP
Fixes #2352
---
src/modules/xworkspaces.cpp | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/modules/xworkspaces.cpp b/src/modules/xworkspaces.cpp
index 6423152e..b2752b41 100644
--- a/src/modules/xworkspaces.cpp
+++ b/src/modules/xworkspaces.cpp
@@ -165,7 +165,16 @@ namespace modules {
m_urgent_desktops.assign(m_desktop_names.size(), false);
for (auto&& client : ewmh_util::get_client_list()) {
auto desk = ewmh_util::get_desktop_from_window(client);
- m_urgent_desktops[desk] = m_urgent_desktops[desk] || icccm_util::get_wm_urgency(m_connection, client);
+ /*
+ * EWMH allows for 0xFFFFFFFF to be returned here, which means the window
+ * should appear on all desktops.
+ *
+ * We don't take those windows into account for the urgency hint because
+ * it would mark all workspaces as urgent.
+ */
+ if (desk < m_urgent_desktops.size()) {
+ m_urgent_desktops[desk] = m_urgent_desktops[desk] || icccm_util::get_wm_urgency(m_connection, client);
+ }
}
}