mirror of
https://github.com/levnikmyskin/hyprland-virtual-desktops.git
synced 2024-10-04 06:17:11 +03:00
fix: don't do anything if rule is applied
This commit is contained in:
parent
ba8e2a5e17
commit
6a38d78a30
@ -39,6 +39,7 @@ class VirtualDesk {
|
||||
void deleteInvalidMonitorsOnActiveLayout();
|
||||
void deleteInvalidMonitorOnAllLayouts(const CMonitor*);
|
||||
static std::shared_ptr<CMonitor> firstAvailableMonitor(const std::vector<std::shared_ptr<CMonitor>>&);
|
||||
bool isWorkspaceOnActiveLayout(int workspaceId);
|
||||
|
||||
private:
|
||||
int m_activeLayout_idx;
|
||||
|
@ -130,6 +130,14 @@ std::shared_ptr<CMonitor> VirtualDesk::firstAvailableMonitor(const std::vector<s
|
||||
return newMonitor;
|
||||
}
|
||||
|
||||
bool VirtualDesk::isWorkspaceOnActiveLayout(int workspaceId) {
|
||||
for (auto [_, wid] : layouts[m_activeLayout_idx]) {
|
||||
if (workspaceId == wid)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void VirtualDesk::checkAndAdaptLayout(Layout* layout, const CMonitor* exclude) {
|
||||
auto enabledMons = currentlyEnabledMonitors(exclude);
|
||||
if (enabledMons.size() == 0)
|
||||
|
@ -36,6 +36,8 @@ void StickyApps::matchRules(const std::vector<SStickyRule>& rules, std::unique_p
|
||||
if (ruleMatch(r.value, windowProp)) {
|
||||
printLog(std::format("rule matched {}: {}", r.value, windowProp));
|
||||
auto windowPidFmt = std::format("pid:{}", w->getPID());
|
||||
if (vdeskManager->activeVdesk()->isWorkspaceOnActiveLayout(w->m_iWorkspaceID))
|
||||
continue;
|
||||
vdeskManager->moveToDesk(windowPidFmt, r.vdesk);
|
||||
}
|
||||
}
|
||||
@ -50,6 +52,8 @@ int StickyApps::matchRuleOnWindow(const std::vector<SStickyRule>& rules, std::un
|
||||
if (ruleMatch(r.value, windowProp)) {
|
||||
printLog(std::format("rule matched {}: {}", r.value, windowProp));
|
||||
auto windowPidFmt = std::format("pid:{}", window->getPID());
|
||||
if (vdeskManager->activeVdesk()->isWorkspaceOnActiveLayout(window->m_iWorkspaceID))
|
||||
return -1;
|
||||
vdeskManager->moveToDesk(windowPidFmt, r.vdesk);
|
||||
return r.vdesk;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user