protocols: add ext-workspace implementation (#10818)

This commit is contained in:
outfoxxed 2025-06-26 09:32:44 -07:00 committed by GitHub
parent 1f337a7a5e
commit 3bbdf9dc5a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 510 additions and 22 deletions

View file

@ -4,6 +4,7 @@
#include <string>
#include "DesktopTypes.hpp"
#include "../helpers/MiscFunctions.hpp"
#include "../helpers/signal/Signal.hpp"
enum eFullscreenMode : int8_t {
FSMODE_NONE = 0,
@ -21,6 +22,8 @@ class CWorkspace {
CWorkspace(WORKSPACEID id, PHLMONITOR monitor, std::string name, bool special = false, bool isEmpty = true);
~CWorkspace();
WP<CWorkspace> m_self;
// Workspaces ID-based have IDs > 0
// and workspaces name-based have IDs starting with -1337
WORKSPACEID m_id = WORKSPACE_INVALID;
@ -60,8 +63,6 @@ class CWorkspace {
// Inert: destroyed and invalid. If this is true, release the ptr you have.
bool inert();
void startAnim(bool in, bool left, bool instant = false);
void setActive(bool on);
void moveToMonitor(const MONITORID&);
MONITORID monitorID();
PHLWINDOW getLastFocusedWindow();
void rememberPrevWorkspace(const PHLWORKSPACE& prevWorkspace);
@ -83,6 +84,13 @@ class CWorkspace {
void forceReportSizesToWindows();
void updateWindows();
struct {
CSignal destroy;
CSignal rename;
CSignal monitorChange;
CSignal activeChange;
} m_events;
private:
void init(PHLWORKSPACE self);
// Previous workspace ID and name is stored during a workspace change, allowing travel
@ -91,7 +99,6 @@ class CWorkspace {
SP<HOOK_CALLBACK_FN> m_focusedWindowHook;
bool m_inert = true;
WP<CWorkspace> m_self;
};
inline bool valid(const PHLWORKSPACE& ref) {