diff options
author | VPavliashvili <[email protected]> | 2024-05-07 15:00:55 +0400 |
---|---|---|
committer | GitHub <[email protected]> | 2024-05-07 12:00:55 +0100 |
commit | 375e77e398b3d69ca90ed58420b929523576c6ef (patch) | |
tree | 4c5192cfa9a80065fcd228ad5502221b9b588013 | |
parent | 96365309de49b5641e61b0028199382dcc25f8b2 (diff) | |
download | Hyprland-375e77e398b3d69ca90ed58420b929523576c6ef.tar.gz Hyprland-375e77e398b3d69ca90ed58420b929523576c6ef.zip |
ipc: add togglegroup, moveintogroup and moveoutofgroup events (#5866)
-rw-r--r-- | src/desktop/Window.cpp | 11 | ||||
-rw-r--r-- | src/managers/KeybindManager.cpp | 4 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp index b92a3d9d..b4af12f1 100644 --- a/src/desktop/Window.cpp +++ b/src/desktop/Window.cpp @@ -836,6 +836,8 @@ void CWindow::createGroup() { g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID()); g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID); g_pCompositor->updateAllWindowsAnimatedDecorationValues(); + + g_pEventManager->postEvent(SHyprIPCEvent{"togglegroup", std::format("1,{:x}", (uintptr_t)this)}); } } @@ -852,9 +854,12 @@ void CWindow::destroyGroup() { g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID()); g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID); g_pCompositor->updateAllWindowsAnimatedDecorationValues(); + + g_pEventManager->postEvent(SHyprIPCEvent{"togglegroup", std::format("0,{:x}", (uintptr_t)this)}); return; } + std::string addresses; PHLWINDOW curr = m_pSelf.lock(); std::vector<PHLWINDOW> members; do { @@ -863,6 +868,8 @@ void CWindow::destroyGroup() { PLASTWIN->m_sGroupData.pNextWindow.reset(); curr->setHidden(false); members.push_back(curr); + + addresses += std::format("{:x},", (uintptr_t)curr.get()); } while (curr.get() != this); for (auto& w : members) { @@ -883,6 +890,10 @@ void CWindow::destroyGroup() { g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID()); g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID); g_pCompositor->updateAllWindowsAnimatedDecorationValues(); + + if (!addresses.empty()) + addresses.pop_back(); + g_pEventManager->postEvent(SHyprIPCEvent{"togglegroup", std::format("0,{}", addresses)}); } PHLWINDOW CWindow::getGroupHead() { diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index ce518ea6..c52fda17 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -2237,6 +2237,8 @@ void CKeybindManager::moveWindowIntoGroup(PHLWINDOW pWindow, PHLWINDOW pWindowIn if (!pWindow->getDecorationByType(DECORATION_GROUPBAR)) pWindow->addWindowDeco(std::make_unique<CHyprGroupBarDecoration>(pWindow)); + + g_pEventManager->postEvent(SHyprIPCEvent{"moveintogroup", std::format("{:x}", (uintptr_t)pWindow.get())}); } void CKeybindManager::moveWindowOutOfGroup(PHLWINDOW pWindow, const std::string& dir) { @@ -2274,6 +2276,8 @@ void CKeybindManager::moveWindowOutOfGroup(PHLWINDOW pWindow, const std::string& g_pCompositor->focusWindow(PWINDOWPREV); g_pCompositor->warpCursorTo(PWINDOWPREV->middle()); } + + g_pEventManager->postEvent(SHyprIPCEvent{"moveoutofgroup", std::format("{:x}", (uintptr_t)pWindow.get())}); } void CKeybindManager::moveIntoGroup(std::string args) { |