mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-23 01:25:58 +01:00
workspaces: preserve pin on moves
This commit is contained in:
parent
7a514f41a3
commit
d23bbd1687
1 changed files with 15 additions and 11 deletions
|
@ -1715,6 +1715,11 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB)
|
||||||
|
|
||||||
for (auto& w : m_vWindows) {
|
for (auto& w : m_vWindows) {
|
||||||
if (w->m_iWorkspaceID == PWORKSPACEA->m_iID) {
|
if (w->m_iWorkspaceID == PWORKSPACEA->m_iID) {
|
||||||
|
if (w->m_bPinned) {
|
||||||
|
w->m_iWorkspaceID = PWORKSPACEB->m_iID;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
w->m_iMonitorID = pMonitorB->ID;
|
w->m_iMonitorID = pMonitorB->ID;
|
||||||
|
|
||||||
// additionally, move floating and fs windows manually
|
// additionally, move floating and fs windows manually
|
||||||
|
@ -1735,6 +1740,11 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB)
|
||||||
|
|
||||||
for (auto& w : m_vWindows) {
|
for (auto& w : m_vWindows) {
|
||||||
if (w->m_iWorkspaceID == PWORKSPACEB->m_iID) {
|
if (w->m_iWorkspaceID == PWORKSPACEB->m_iID) {
|
||||||
|
if (w->m_bPinned) {
|
||||||
|
w->m_iWorkspaceID = PWORKSPACEA->m_iID;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
w->m_iMonitorID = pMonitorA->ID;
|
w->m_iMonitorID = pMonitorA->ID;
|
||||||
|
|
||||||
// additionally, move floating and fs windows manually
|
// additionally, move floating and fs windows manually
|
||||||
|
@ -1750,17 +1760,6 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// fix pinned windows
|
|
||||||
for (auto& w : g_pCompositor->m_vWindows) {
|
|
||||||
if (w->m_iWorkspaceID == pMonitorA->activeWorkspace && w->m_bPinned) {
|
|
||||||
w->m_iWorkspaceID = PWORKSPACEB->m_iID;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (w->m_iWorkspaceID == pMonitorB->activeWorkspace && w->m_bPinned) {
|
|
||||||
w->m_iWorkspaceID = PWORKSPACEA->m_iID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pMonitorA->activeWorkspace = PWORKSPACEB->m_iID;
|
pMonitorA->activeWorkspace = PWORKSPACEB->m_iID;
|
||||||
pMonitorB->activeWorkspace = PWORKSPACEA->m_iID;
|
pMonitorB->activeWorkspace = PWORKSPACEA->m_iID;
|
||||||
|
|
||||||
|
@ -1910,6 +1909,11 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
|
||||||
|
|
||||||
for (auto& w : m_vWindows) {
|
for (auto& w : m_vWindows) {
|
||||||
if (w->m_iWorkspaceID == pWorkspace->m_iID) {
|
if (w->m_iWorkspaceID == pWorkspace->m_iID) {
|
||||||
|
if (w->m_bPinned) {
|
||||||
|
w->m_iWorkspaceID = nextWorkspaceOnMonitorID;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
w->m_iMonitorID = pMonitor->ID;
|
w->m_iMonitorID = pMonitor->ID;
|
||||||
|
|
||||||
// additionally, move floating and fs windows manually
|
// additionally, move floating and fs windows manually
|
||||||
|
|
Loading…
Reference in a new issue