workspacerules: Add a persistent workspace rule (#3530)

* add persistent flag to workspace rules

* get rid of unused ws->indestructible flag
This commit is contained in:
Roberto Previdi 2023-10-09 21:28:22 +02:00 committed by GitHub
parent 7f8e0a1318
commit df0c8e0f7a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 4 deletions

View file

@ -1188,8 +1188,11 @@ void CCompositor::sanityCheckWorkspaces() {
auto it = m_vWorkspaces.begin(); auto it = m_vWorkspaces.begin();
while (it != m_vWorkspaces.end()) { while (it != m_vWorkspaces.end()) {
if ((*it)->m_bIndestructible) const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(it->get());
if (WORKSPACERULE.isPersistent) {
++it;
continue; continue;
}
const auto WINDOWSONWORKSPACE = getWindowsOnWorkspace((*it)->m_iID); const auto WINDOWSONWORKSPACE = getWindowsOnWorkspace((*it)->m_iID);

View file

@ -1177,6 +1177,8 @@ void CConfigManager::handleWorkspaceRules(const std::string& command, const std:
wsRule.monitor = rule.substr(delim + 8); wsRule.monitor = rule.substr(delim + 8);
else if ((delim = rule.find("default:")) != std::string::npos) else if ((delim = rule.find("default:")) != std::string::npos)
wsRule.isDefault = configStringToInt(rule.substr(delim + 8)); wsRule.isDefault = configStringToInt(rule.substr(delim + 8));
else if ((delim = rule.find("persistent:")) != std::string::npos)
wsRule.isPersistent = configStringToInt(rule.substr(delim + 11));
}; };
size_t pos = 0; size_t pos = 0;

View file

@ -41,6 +41,7 @@ struct SWorkspaceRule {
std::string workspaceName = ""; std::string workspaceName = "";
int workspaceId = -1; int workspaceId = -1;
bool isDefault = false; bool isDefault = false;
bool isPersistent = false;
std::optional<int64_t> gapsIn; std::optional<int64_t> gapsIn;
std::optional<int64_t> gapsOut; std::optional<int64_t> gapsOut;
std::optional<int64_t> borderSize; std::optional<int64_t> borderSize;

View file

@ -50,9 +50,6 @@ class CWorkspace {
bool m_bDefaultFloating = false; bool m_bDefaultFloating = false;
bool m_bDefaultPseudo = false; bool m_bDefaultPseudo = false;
// don't destroy in sanity check
bool m_bIndestructible = false;
// last monitor (used on reconnect) // last monitor (used on reconnect)
std::string m_szLastMonitor = ""; std::string m_szLastMonitor = "";