feat: create persistent workspaces after regular ones at init
feat: avoid recreating duplicate workspaces
This commit is contained in:
parent
a41225c4e0
commit
7d5577a2ed
|
@ -458,11 +458,11 @@ std::optional<std::string> Workspace::on_window_closed(WindowAddress &addr) {
|
|||
|
||||
void Workspaces::create_workspace(Json::Value &workspace_data, const Json::Value &clients_data) {
|
||||
// avoid recreating existing workspaces
|
||||
auto workspace_name = workspace_data["name"].asString();
|
||||
auto workspace = std::find_if(
|
||||
workspaces_.begin(), workspaces_.end(), [&](std::unique_ptr<Workspace> const &x) {
|
||||
auto name = workspace_data["name"].asString();
|
||||
return x->is_persistent() &&
|
||||
((name.starts_with("special:") && name.substr(8) == x->name()) || name == x->name());
|
||||
workspaces_.begin(), workspaces_.end(), [&](std::unique_ptr<Workspace> const &w) {
|
||||
return (workspace_name.starts_with("special:") && workspace_name.substr(8) == w->name()) ||
|
||||
workspace_name == w->name();
|
||||
});
|
||||
|
||||
if (workspace != workspaces_.end()) {
|
||||
|
@ -589,9 +589,6 @@ void Workspaces::init() {
|
|||
monitor_id_ = (*current_monitor)["id"].asInt();
|
||||
}
|
||||
|
||||
fill_persistent_workspaces();
|
||||
create_persistent_workspaces();
|
||||
|
||||
const Json::Value workspaces_json = gIPC->getSocket1JsonReply("workspaces");
|
||||
const Json::Value clients_json = gIPC->getSocket1JsonReply("clients");
|
||||
|
||||
|
@ -604,6 +601,9 @@ void Workspaces::init() {
|
|||
}
|
||||
}
|
||||
|
||||
fill_persistent_workspaces();
|
||||
create_persistent_workspaces();
|
||||
|
||||
update_window_count();
|
||||
|
||||
sort_workspaces();
|
||||
|
|
Loading…
Reference in New Issue