From 668d90c70093ce10816ba525780988e848f8d4af Mon Sep 17 00:00:00 2001 From: Maxim Baz Date: Sat, 14 Jan 2023 20:31:11 +0100 Subject: Implement urgency hint for workspaces (#1379) When there are any unfocused windows that request activation, mark the workspace as urgent. --- src/events/Windows.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/events/Windows.cpp') 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); -- cgit v1.2.3