mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 15:45:58 +01:00
ipc: add togglegroup, moveintogroup and moveoutofgroup events (#5866)
This commit is contained in:
parent
96365309de
commit
375e77e398
2 changed files with 15 additions and 0 deletions
|
@ -836,6 +836,8 @@ void CWindow::createGroup() {
|
||||||
g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID());
|
g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID());
|
||||||
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID);
|
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID);
|
||||||
g_pCompositor->updateAllWindowsAnimatedDecorationValues();
|
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_pCompositor->updateWorkspaceSpecialRenderData(workspaceID());
|
||||||
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID);
|
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID);
|
||||||
g_pCompositor->updateAllWindowsAnimatedDecorationValues();
|
g_pCompositor->updateAllWindowsAnimatedDecorationValues();
|
||||||
|
|
||||||
|
g_pEventManager->postEvent(SHyprIPCEvent{"togglegroup", std::format("0,{:x}", (uintptr_t)this)});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string addresses;
|
||||||
PHLWINDOW curr = m_pSelf.lock();
|
PHLWINDOW curr = m_pSelf.lock();
|
||||||
std::vector<PHLWINDOW> members;
|
std::vector<PHLWINDOW> members;
|
||||||
do {
|
do {
|
||||||
|
@ -863,6 +868,8 @@ void CWindow::destroyGroup() {
|
||||||
PLASTWIN->m_sGroupData.pNextWindow.reset();
|
PLASTWIN->m_sGroupData.pNextWindow.reset();
|
||||||
curr->setHidden(false);
|
curr->setHidden(false);
|
||||||
members.push_back(curr);
|
members.push_back(curr);
|
||||||
|
|
||||||
|
addresses += std::format("{:x},", (uintptr_t)curr.get());
|
||||||
} while (curr.get() != this);
|
} while (curr.get() != this);
|
||||||
|
|
||||||
for (auto& w : members) {
|
for (auto& w : members) {
|
||||||
|
@ -883,6 +890,10 @@ void CWindow::destroyGroup() {
|
||||||
g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID());
|
g_pCompositor->updateWorkspaceSpecialRenderData(workspaceID());
|
||||||
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID);
|
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(m_iMonitorID);
|
||||||
g_pCompositor->updateAllWindowsAnimatedDecorationValues();
|
g_pCompositor->updateAllWindowsAnimatedDecorationValues();
|
||||||
|
|
||||||
|
if (!addresses.empty())
|
||||||
|
addresses.pop_back();
|
||||||
|
g_pEventManager->postEvent(SHyprIPCEvent{"togglegroup", std::format("0,{}", addresses)});
|
||||||
}
|
}
|
||||||
|
|
||||||
PHLWINDOW CWindow::getGroupHead() {
|
PHLWINDOW CWindow::getGroupHead() {
|
||||||
|
|
|
@ -2237,6 +2237,8 @@ void CKeybindManager::moveWindowIntoGroup(PHLWINDOW pWindow, PHLWINDOW pWindowIn
|
||||||
|
|
||||||
if (!pWindow->getDecorationByType(DECORATION_GROUPBAR))
|
if (!pWindow->getDecorationByType(DECORATION_GROUPBAR))
|
||||||
pWindow->addWindowDeco(std::make_unique<CHyprGroupBarDecoration>(pWindow));
|
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) {
|
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->focusWindow(PWINDOWPREV);
|
||||||
g_pCompositor->warpCursorTo(PWINDOWPREV->middle());
|
g_pCompositor->warpCursorTo(PWINDOWPREV->middle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_pEventManager->postEvent(SHyprIPCEvent{"moveoutofgroup", std::format("{:x}", (uintptr_t)pWindow.get())});
|
||||||
}
|
}
|
||||||
|
|
||||||
void CKeybindManager::moveIntoGroup(std::string args) {
|
void CKeybindManager::moveIntoGroup(std::string args) {
|
||||||
|
|
Loading…
Reference in a new issue