create workspace now respects selected output again
This commit is contained in:
parent
582ed32c9e
commit
7fce5f1063
@ -23,7 +23,7 @@ public:
|
|||||||
if (selectedOutput != nullptr)
|
if (selectedOutput != nullptr)
|
||||||
cmd << "focus output " << selectedOutput->node.name << " , ";
|
cmd << "focus output " << selectedOutput->node.name << " , ";
|
||||||
|
|
||||||
cmd << "workspace " << createNewWorkspaceId({});
|
cmd << "workspace " << createNewWorkspaceId({}, selectedOutput);
|
||||||
auto resp = SwayTreeModel::sway.sendIPC(swaymsg(0, cmd.str()));
|
auto resp = SwayTreeModel::sway.sendIPC(swaymsg(0, cmd.str()));
|
||||||
std::cout << resp.msg << "\n";
|
std::cout << resp.msg << "\n";
|
||||||
QApplication::quit();
|
QApplication::quit();
|
||||||
|
@ -32,7 +32,7 @@ protected:
|
|||||||
return containerIds;
|
return containerIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] std::string createNewWorkspaceId(const std::set<const SwayTreeNode *> &allowedContainers) const {
|
[[nodiscard]] std::string createNewWorkspaceId(const std::set<const SwayTreeNode *> &allowedContainers, const SwayTreeNode* preferredOutput = nullptr) const {
|
||||||
std::set<std::string> candidates;
|
std::set<std::string> candidates;
|
||||||
|
|
||||||
for (auto *con: allowedContainers) {
|
for (auto *con: allowedContainers) {
|
||||||
@ -40,14 +40,14 @@ protected:
|
|||||||
if (workspace == nullptr)
|
if (workspace == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (allowedContainers.contains(workspace)) {
|
if (allowedContainers.contains(workspace) && (preferredOutput == nullptr || preferredOutput == workspace->findOutput())) {
|
||||||
candidates.insert(workspace->node.name);
|
candidates.insert(workspace->node.name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto containers = workspace->accumulateContainers();
|
auto containers = workspace->accumulateContainers();
|
||||||
if (std::all_of(containers.begin(), containers.end(), [allowedContainers](const SwayTreeNode *container) {
|
if (std::all_of(containers.begin(), containers.end(), [allowedContainers, preferredOutput](const SwayTreeNode *container) {
|
||||||
return allowedContainers.contains(container);
|
return allowedContainers.contains(container) && (preferredOutput == nullptr || preferredOutput == container->findOutput());
|
||||||
})) {
|
})) {
|
||||||
candidates.insert(workspace->node.name);
|
candidates.insert(workspace->node.name);
|
||||||
}
|
}
|
||||||
@ -63,7 +63,8 @@ protected:
|
|||||||
do {
|
do {
|
||||||
newWorkspace++;
|
newWorkspace++;
|
||||||
workspaceNode = getModel()->getRoot()->findWorkspaceByName(std::to_string(newWorkspace));
|
workspaceNode = getModel()->getRoot()->findWorkspaceByName(std::to_string(newWorkspace));
|
||||||
} while (workspaceNode != nullptr && workspaceNode->childCount() != 0);
|
} while (workspaceNode != nullptr && workspaceNode->childCount() != 0
|
||||||
|
&& (preferredOutput != nullptr && preferredOutput == workspaceNode->findOutput()));
|
||||||
|
|
||||||
return std::to_string(newWorkspace);
|
return std::to_string(newWorkspace);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user