mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 10:25:58 +01:00
internal: don't change ws on active swap
This commit is contained in:
parent
093755d53f
commit
fbb938fcf2
1 changed files with 25 additions and 23 deletions
|
@ -1869,33 +1869,35 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
|
||||||
|
|
||||||
// fix old mon
|
// fix old mon
|
||||||
int nextWorkspaceOnMonitorID = -1;
|
int nextWorkspaceOnMonitorID = -1;
|
||||||
for (auto& w : m_vWorkspaces) {
|
if (!SWITCHINGISACTIVE)
|
||||||
if (w->m_iMonitorID == POLDMON->ID && w->m_iID != pWorkspace->m_iID && !w->m_bIsSpecialWorkspace) {
|
nextWorkspaceOnMonitorID = pWorkspace->m_iID;
|
||||||
nextWorkspaceOnMonitorID = w->m_iID;
|
else {
|
||||||
break;
|
for (auto& w : m_vWorkspaces) {
|
||||||
|
if (w->m_iMonitorID == POLDMON->ID && w->m_iID != pWorkspace->m_iID && !w->m_bIsSpecialWorkspace) {
|
||||||
|
nextWorkspaceOnMonitorID = w->m_iID;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nextWorkspaceOnMonitorID == -1) {
|
||||||
|
nextWorkspaceOnMonitorID = 1;
|
||||||
|
|
||||||
|
while (getWorkspaceByID(nextWorkspaceOnMonitorID) || [&]() -> bool {
|
||||||
|
const auto B = g_pConfigManager->getBoundMonitorForWS(std::to_string(nextWorkspaceOnMonitorID));
|
||||||
|
return B && B != POLDMON;
|
||||||
|
}())
|
||||||
|
nextWorkspaceOnMonitorID++;
|
||||||
|
|
||||||
|
Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with new %d", nextWorkspaceOnMonitorID);
|
||||||
|
|
||||||
|
g_pCompositor->createNewWorkspace(nextWorkspaceOnMonitorID, POLDMON->ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with existing %d", nextWorkspaceOnMonitorID);
|
||||||
|
POLDMON->changeWorkspace(nextWorkspaceOnMonitorID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nextWorkspaceOnMonitorID == -1) {
|
|
||||||
nextWorkspaceOnMonitorID = 1;
|
|
||||||
|
|
||||||
while (getWorkspaceByID(nextWorkspaceOnMonitorID) || [&]() -> bool {
|
|
||||||
const auto B = g_pConfigManager->getBoundMonitorForWS(std::to_string(nextWorkspaceOnMonitorID));
|
|
||||||
return B && B != POLDMON;
|
|
||||||
}())
|
|
||||||
nextWorkspaceOnMonitorID++;
|
|
||||||
|
|
||||||
Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with new %d", nextWorkspaceOnMonitorID);
|
|
||||||
|
|
||||||
g_pCompositor->createNewWorkspace(nextWorkspaceOnMonitorID, POLDMON->ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with existing %d", nextWorkspaceOnMonitorID);
|
|
||||||
|
|
||||||
POLDMON->changeWorkspace(nextWorkspaceOnMonitorID);
|
|
||||||
|
|
||||||
// move the workspace
|
// move the workspace
|
||||||
|
|
||||||
pWorkspace->m_iMonitorID = pMonitor->ID;
|
pWorkspace->m_iMonitorID = pMonitor->ID;
|
||||||
pWorkspace->moveToMonitor(pMonitor->ID);
|
pWorkspace->moveToMonitor(pMonitor->ID);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue