aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVPavliashvili <[email protected]>2024-05-07 15:00:55 +0400
committerGitHub <[email protected]>2024-05-07 12:00:55 +0100
commit375e77e398b3d69ca90ed58420b929523576c6ef (patch)
tree4c5192cfa9a80065fcd228ad5502221b9b588013
parent96365309de49b5641e61b0028199382dcc25f8b2 (diff)
downloadHyprland-375e77e398b3d69ca90ed58420b929523576c6ef.tar.gz
Hyprland-375e77e398b3d69ca90ed58420b929523576c6ef.zip
ipc: add togglegroup, moveintogroup and moveoutofgroup events (#5866)
-rw-r--r--src/desktop/Window.cpp11
-rw-r--r--src/managers/KeybindManager.cpp4
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) {