From e5a4c0c986f72813e8822f31ed3d5fa6be1b6c13 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Sun, 19 Feb 2023 21:07:32 +0000 Subject: Group/Tab Rework (#1580) --- src/render/decorations/CHyprGroupBarDecoration.cpp | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'src/render') diff --git a/src/render/decorations/CHyprGroupBarDecoration.cpp b/src/render/decorations/CHyprGroupBarDecoration.cpp index 7b7c1576..ca9d1b72 100644 --- a/src/render/decorations/CHyprGroupBarDecoration.cpp +++ b/src/render/decorations/CHyprGroupBarDecoration.cpp @@ -33,24 +33,29 @@ void CHyprGroupBarDecoration::updateWindow(CWindow* pWindow) { m_vLastWindowSize = pWindow->m_vRealSize.vec(); } - // let's check if the window group is different. - - if (g_pLayoutManager->getCurrentLayout()->getLayoutName() != "dwindle") { - // ???? + if (!m_pWindow->m_sGroupData.pNextWindow) { m_pWindow->m_vDecosToRemove.push_back(this); return; } - // get the group info - SLayoutMessageHeader header; - header.pWindow = m_pWindow; + m_dwGroupMembers.clear(); + CWindow* curr = pWindow; + CWindow* head = nullptr; + while (!curr->m_sGroupData.head) { + curr = curr->m_sGroupData.pNextWindow; + } - m_dwGroupMembers = std::any_cast>(g_pLayoutManager->getCurrentLayout()->layoutMessage(header, "groupinfo")); + head = curr; + m_dwGroupMembers.push_back(curr); + curr = curr->m_sGroupData.pNextWindow; + while (curr != head) { + m_dwGroupMembers.push_back(curr); + curr = curr->m_sGroupData.pNextWindow; + } damageEntire(); if (m_dwGroupMembers.size() == 0) { - // remove m_pWindow->m_vDecosToRemove.push_back(this); return; } @@ -86,8 +91,8 @@ void CHyprGroupBarDecoration::draw(CMonitor* pMonitor, float a, const Vector2D& scaleBox(&rect, pMonitor->scale); - static auto* const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border_active")->data; - static auto* const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border")->data; + static auto* const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("general:col.group_border_active")->data; + static auto* const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("general:col.group_border")->data; CColor color = m_dwGroupMembers[i] == g_pCompositor->m_pLastWindow ? ((CGradientValueData*)PGROUPCOLACTIVE->get())->m_vColors[0] : ((CGradientValueData*)PGROUPCOLINACTIVE->get())->m_vColors[0]; -- cgit v1.2.3