Desktop/history: Move history to desktop (#12676)

This commit is contained in:
Vaxry 2025-12-20 22:16:13 +00:00 committed by GitHub
parent 70f54a1e1b
commit b9bef69554
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 372 additions and 181 deletions

View file

@ -0,0 +1,54 @@
#pragma once
#include "../DesktopTypes.hpp"
#include "../../SharedDefs.hpp"
#include "../../macros.hpp"
#include "../../helpers/MiscFunctions.hpp"
#include <vector>
namespace Desktop::History {
class CWorkspaceHistoryTracker {
public:
CWorkspaceHistoryTracker();
~CWorkspaceHistoryTracker() = default;
CWorkspaceHistoryTracker(const CWorkspaceHistoryTracker&) = delete;
CWorkspaceHistoryTracker(CWorkspaceHistoryTracker&) = delete;
CWorkspaceHistoryTracker(CWorkspaceHistoryTracker&&) = delete;
struct SWorkspacePreviousData {
PHLWORKSPACEREF workspace;
PHLWORKSPACEREF previous;
PHLMONITORREF previousMon;
std::string previousName = "";
WORKSPACEID previousID = WORKSPACE_INVALID;
};
const SWorkspacePreviousData* previousWorkspace(PHLWORKSPACE ws);
SWorkspaceIDName previousWorkspaceIDName(PHLWORKSPACE ws);
const SWorkspacePreviousData* previousWorkspace(PHLWORKSPACE ws, PHLMONITOR restrict);
SWorkspaceIDName previousWorkspaceIDName(PHLWORKSPACE ws, PHLMONITOR restrict);
private:
struct SMonitorData {
PHLMONITORREF monitor;
PHLWORKSPACEREF workspace;
std::string workspaceName = "";
WORKSPACEID workspaceID = WORKSPACE_INVALID;
};
std::vector<SWorkspacePreviousData> m_datas;
std::vector<SMonitorData> m_monitorDatas;
void track(PHLWORKSPACE w);
void track(PHLMONITOR mon);
void gc();
SMonitorData& dataFor(PHLMONITOR mon);
SWorkspacePreviousData& dataFor(PHLWORKSPACE ws);
};
SP<CWorkspaceHistoryTracker> workspaceTracker();
};