From 7b3fc10ef25a0527df7991eee5ece68eb6530cce Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 21 Nov 2021 20:21:58 +0100 Subject: [PATCH] bar now shows the moused workspace --- src/bar/Bar.cpp | 7 +++++-- src/windowManager.hpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bar/Bar.cpp b/src/bar/Bar.cpp index ddd077c..d267842 100644 --- a/src/bar/Bar.cpp +++ b/src/bar/Bar.cpp @@ -137,18 +137,21 @@ void CStatusBar::draw() { const auto WORKSPACE = g_pWindowManager->getWorkspaceByID(i); + // The LastWindow may be on a different one. This is where the mouse is. + const auto MOUSEWORKSPACEID = g_pWindowManager->activeWorkspaces[g_pWindowManager->getMonitorFromCursor()->ID]; + if (!WORKSPACE) continue; std::string workspaceName = std::to_string(i); - if (WORKSPACE->getID() == g_pWindowManager->activeWorkspaces[m_iMonitorID]) { + if (WORKSPACE->getID() == MOUSEWORKSPACEID) { xcb_rectangle_t rectangleActive[] = { { m_vecSize.y * drawnWorkspaces, 0, m_vecSize.y, m_vecSize.y } }; xcb_poly_fill_rectangle(g_pWindowManager->DisplayConnection, m_iPixmap, m_mContexts["MEDBG"].GContext, 1, rectangleActive); } xcb_image_text_8(g_pWindowManager->DisplayConnection, workspaceName.length(), m_iPixmap, - WORKSPACE->getID() == g_pWindowManager->activeWorkspaces[m_iMonitorID] ? m_mContexts["HITEXT"].GContext : m_mContexts["BASETEXT"].GContext, + WORKSPACE->getID() == MOUSEWORKSPACEID ? m_mContexts["HITEXT"].GContext : m_mContexts["BASETEXT"].GContext, m_vecSize.y * drawnWorkspaces + m_vecSize.y / 2.f - 2, m_vecSize.y - (m_vecSize.y - 10) / 2, workspaceName.c_str()); drawnWorkspaces++; diff --git a/src/windowManager.hpp b/src/windowManager.hpp index e923c4a..480ce95 100644 --- a/src/windowManager.hpp +++ b/src/windowManager.hpp @@ -57,6 +57,7 @@ public: void setAllWorkspaceWindowsDirtyByID(int); int getHighestWorkspaceID(); CWorkspace* getWorkspaceByID(int); + bool isWorkspaceVisible(int workspaceID); void setAllWindowsDirty(); @@ -79,7 +80,6 @@ public: void setEffectiveSizePosUsingConfig(CWindow* pWindow); void cleanupUnusedWorkspaces(); xcb_visualtype_t* setupColors(); - bool isWorkspaceVisible(int workspaceID); };