summaryrefslogtreecommitdiff
path: root/src/events/Windows.cpp
diff options
context:
space:
mode:
authorMaxim Baz <git@maximbaz.com>2023-01-14 20:31:11 +0100
committerGitHub <noreply@github.com>2023-01-14 20:31:11 +0100
commit668d90c70093ce10816ba525780988e848f8d4af (patch)
treec58e18aa7f559847133439521532cedc5a289566 /src/events/Windows.cpp
parentb3012d97ab32abb6915f6ed496a04e206a9f0b0b (diff)
Implement urgency hint for workspaces (#1379)
When there are any unfocused windows that request activation, mark the workspace as urgent.
Diffstat (limited to 'src/events/Windows.cpp')
-rw-r--r--src/events/Windows.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 134d822c..86496bfc 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -803,7 +803,7 @@ void Events::listener_activateXDG(wl_listener* listener, void* data) {
Debug::log(LOG, "Activate request for surface at %x", E->surface);
- if (!*PFOCUSONACTIVATE || !wlr_surface_is_xdg_surface(E->surface))
+ if (!wlr_surface_is_xdg_surface(E->surface))
return;
const auto PWINDOW = g_pCompositor->getWindowFromSurface(E->surface);
@@ -811,6 +811,16 @@ void Events::listener_activateXDG(wl_listener* listener, void* data) {
if (!PWINDOW || PWINDOW == g_pCompositor->m_pLastWindow)
return;
+ PWINDOW->m_bIsUrgent = true;
+
+ const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID);
+ if (PWORKSPACE->m_pWlrHandle) {
+ wlr_ext_workspace_handle_v1_set_urgent(PWORKSPACE->m_pWlrHandle, 1);
+ }
+
+ if (!*PFOCUSONACTIVATE)
+ return;
+
if (PWINDOW->m_bIsFloating)
g_pCompositor->moveWindowToTop(PWINDOW);