From b39dcfa497f84486569bf862092dfcfadbfd8747 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Thu, 29 Feb 2024 13:03:38 +0000 Subject: refactor: move a few things to desktop/ --- src/desktop/Workspace.hpp | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/desktop/Workspace.hpp (limited to 'src/desktop/Workspace.hpp') diff --git a/src/desktop/Workspace.hpp b/src/desktop/Workspace.hpp new file mode 100644 index 00000000..d4915769 --- /dev/null +++ b/src/desktop/Workspace.hpp @@ -0,0 +1,67 @@ +#pragma once + +#include "../helpers/AnimatedVariable.hpp" +#include +#include "../defines.hpp" + +enum eFullscreenMode : int8_t { + FULLSCREEN_INVALID = -1, + FULLSCREEN_FULL = 0, + FULLSCREEN_MAXIMIZED +}; + +class CWindow; + +class CWorkspace { + public: + CWorkspace(int monitorID, std::string name, bool special = false); + ~CWorkspace(); + + // Workspaces ID-based have IDs > 0 + // and workspaces name-based have IDs starting with -1337 + int m_iID = -1; + std::string m_szName = ""; + uint64_t m_iMonitorID = -1; + // Previous workspace ID is stored during a workspace change, allowing travel + // to the previous workspace. + struct SPrevWorkspaceData { + int iID = -1; + std::string name = ""; + } m_sPrevWorkspace; + + bool m_bHasFullscreenWindow = false; + eFullscreenMode m_efFullscreenMode = FULLSCREEN_FULL; + + wl_array m_wlrCoordinateArr; + + // for animations + CAnimatedVariable m_vRenderOffset; + CAnimatedVariable m_fAlpha; + bool m_bForceRendering = false; + + // "scratchpad" + bool m_bIsSpecialWorkspace = false; + + // last window + CWindow* m_pLastFocusedWindow = nullptr; + + // user-set + bool m_bDefaultFloating = false; + bool m_bDefaultPseudo = false; + + // last monitor (used on reconnect) + std::string m_szLastMonitor = ""; + + // Whether the user configured command for on-created-empty has been executed, if any + bool m_bOnCreatedEmptyExecuted = false; + + void startAnim(bool in, bool left, bool instant = false); + void setActive(bool on); + + void moveToMonitor(const int&); + + CWindow* getLastFocusedWindow(); + void rememberPrevWorkspace(const CWorkspace* prevWorkspace); + + std::string getConfigName(); +}; -- cgit v1.2.3