From a02646bd4b492c6f02f2c48faba402942c0a2d85 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 20 Apr 2022 17:36:53 +0200 Subject: [PATCH] Small Atom fixes --- src/ewmh/ewmh.cpp | 7 +++++++ src/windowManager.cpp | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/ewmh/ewmh.cpp b/src/ewmh/ewmh.cpp index acfa3bc..5306d21 100644 --- a/src/ewmh/ewmh.cpp +++ b/src/ewmh/ewmh.cpp @@ -143,6 +143,13 @@ void EWMH::updateWindow(xcb_window_t win) { if (!PWINDOW->getDock()) { long data[] = {XCB_ICCCM_WM_STATE_NORMAL, XCB_NONE}; xcb_change_property(g_pWindowManager->DisplayConnection, XCB_PROP_MODE_REPLACE, win, HYPRATOMS["WM_STATE"], HYPRATOMS["WM_STATE"], 32, 2, data); + + if (PWINDOW->getDrawable() == g_pWindowManager->LastWindow) { + uint32_t dataa[] = {HYPRATOMS["_NET_WM_STATE_FOCUSED"]}; + xcb_change_property(g_pWindowManager->DisplayConnection, XCB_PROP_MODE_APPEND, PWINDOW->getDrawable(), HYPRATOMS["_NET_WM_STATE"], XCB_ATOM_ATOM, 32, 1, dataa); + } else { + removeAtom(PWINDOW->getDrawable(), HYPRATOMS["_NET_WM_STATE"], HYPRATOMS["_NET_WM_STATE_FOCUSED"]); + } } } diff --git a/src/windowManager.cpp b/src/windowManager.cpp index cfd1f9f..00bc020 100644 --- a/src/windowManager.cpp +++ b/src/windowManager.cpp @@ -566,6 +566,8 @@ void CWindowManager::setFocusedWindow(xcb_drawable_t window) { applyShapeToWindow(PWINDOW); } + const auto LASTWINID = LastWindow; + LastWindow = window; if (PNEWFOCUS) { @@ -580,6 +582,9 @@ void CWindowManager::setFocusedWindow(xcb_drawable_t window) { // EWMH EWMH::updateCurrentWindow(window); + + EWMH::updateWindow(window); + EWMH::updateWindow(LASTWINID); } }