diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp index 9da5f779..35492d17 100644 --- a/src/events/Monitors.cpp +++ b/src/events/Monitors.cpp @@ -135,13 +135,12 @@ void Events::listener_newOutput(wl_listener* listener, void* data) { g_pLayoutManager->getCurrentLayout()->recalculateMonitor(PNEWMONITOR->ID); PNEWWORKSPACE->startAnim(true,true,true); } else { - PNEWWORKSPACE = &g_pCompositor->m_lWorkspaces.emplace_back(newMonitor.ID); + PNEWWORKSPACE = &g_pCompositor->m_lWorkspaces.emplace_back(newMonitor.ID, newDefaultWorkspaceName); // We are required to set the name here immediately wlr_ext_workspace_handle_v1_set_name(PNEWWORKSPACE->m_pWlrHandle, newDefaultWorkspaceName.c_str()); PNEWWORKSPACE->m_iID = WORKSPACEID; - PNEWWORKSPACE->m_szName = newDefaultWorkspaceName; } PNEWMONITOR->activeWorkspace = PNEWWORKSPACE->m_iID; diff --git a/src/helpers/Workspace.cpp b/src/helpers/Workspace.cpp index 90d234cb..7c0185b4 100644 --- a/src/helpers/Workspace.cpp +++ b/src/helpers/Workspace.cpp @@ -1,7 +1,7 @@ #include "Workspace.hpp" #include "../Compositor.hpp" -CWorkspace::CWorkspace(int monitorID, bool special) { +CWorkspace::CWorkspace(int monitorID, std::string name, bool special) { const auto PMONITOR = g_pCompositor->getMonitorFromID(monitorID); if (!PMONITOR) { @@ -10,7 +10,7 @@ CWorkspace::CWorkspace(int monitorID, bool special) { } m_iMonitorID = monitorID; - + m_szName = name; m_bIsSpecialWorkspace = special; if (!special) { @@ -30,6 +30,8 @@ CWorkspace::CWorkspace(int monitorID, bool special) { m_fAlpha.m_pWorkspace = this; m_fAlpha.create(AVARTYPE_FLOAT, &g_pConfigManager->getConfigValuePtr("animations:workspaces_speed")->floatValue, &g_pConfigManager->getConfigValuePtr("animations:workspaces")->intValue, &g_pConfigManager->getConfigValuePtr("animations:workspaces_curve")->strValue, nullptr, AVARDAMAGE_ENTIRE); m_fAlpha.setValueAndWarp(255.f); + + g_pEventManager->postEvent({"createworkspace", m_szName}); } CWorkspace::~CWorkspace() { @@ -42,6 +44,8 @@ CWorkspace::~CWorkspace() { wlr_ext_workspace_handle_v1_destroy(m_pWlrHandle); m_pWlrHandle = nullptr; } + + g_pEventManager->postEvent({"destroyworkspace", m_szName}); } void CWorkspace::startAnim(bool in, bool left, bool instant) { diff --git a/src/helpers/Workspace.hpp b/src/helpers/Workspace.hpp index 21b36e9f..2d0c5941 100644 --- a/src/helpers/Workspace.hpp +++ b/src/helpers/Workspace.hpp @@ -10,7 +10,7 @@ enum eFullscreenMode : uint8_t { class CWorkspace { public: - CWorkspace(int monitorID, bool special = false); + CWorkspace(int monitorID, std::string name, bool special = false); ~CWorkspace(); // Workspaces ID-based have IDs > 0 diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 99b758b0..14c535d8 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -336,7 +336,7 @@ void CKeybindManager::changeworkspace(std::string args) { if (const auto POLDWORKSPACE = g_pCompositor->getWorkspaceByID(OLDWORKSPACE); POLDWORKSPACE) POLDWORKSPACE->startAnim(false, ANIMTOLEFT); - g_pCompositor->m_lWorkspaces.emplace_back(PMONITOR->ID, workspaceToChangeTo == SPECIAL_WORKSPACE_ID); + g_pCompositor->m_lWorkspaces.emplace_back(PMONITOR->ID, workspaceName, workspaceToChangeTo == SPECIAL_WORKSPACE_ID); const auto PWORKSPACE = &g_pCompositor->m_lWorkspaces.back(); // start anim on new workspace @@ -348,7 +348,6 @@ void CKeybindManager::changeworkspace(std::string args) { PWORKSPACE->m_iID = workspaceToChangeTo; PWORKSPACE->m_iMonitorID = PMONITOR->ID; - PWORKSPACE->m_szName = workspaceName; PMONITOR->specialWorkspaceOpen = false;