8#include <phosphorengine_export.h>
96 return !(*
this == other);
113 std::optional<WindowMetadata>
metadata(
const QString& instanceId)
const;
121 int virtualDesktop = 0;
136 if (virtualDesktops.size() > 1 && virtualDesktops.contains(screenCurrentDesktop)) {
137 return screenCurrentDesktop;
139 return virtualDesktop > 0 ? virtualDesktop : screenCurrentDesktop;
149 return activity.isEmpty() ? currentActivity : activity;
152 std::optional<WindowContext>
windowContext(
const QString& instanceId)
const;
153 Q_INVOKABLE QString
appIdFor(
const QString& instanceId)
const override;
198 QHash<QString, WindowMetadata> m_records;
199 QMultiHash<QString, QString> m_appIdIndex;
200 QHash<QString, QString> m_canonicalByInstance;
205 QSet<QString> m_disappearingInstances;
206 QHash<QString, WindowMetadata> m_pendingUpserts;
217 void indexInsert(
const QString& instanceId,
const QString& appId);
218 void indexRemove(
const QString& instanceId,
const QString& appId);
Definition IWindowRegistry.h:14
Definition WindowRegistry.h:101
void clear()
Remove every record and canonical mapping, firing windowDisappeared for each.
bool isMinimized(const QString &windowId) const
Live compositor minimize state, collapsed to a bool: unknown reads as false.
std::optional< WindowContext > windowContext(const QString &instanceId) const
void windowDisappeared(const QString &instanceId)
int pruneStaleInstances(const QSet< QString > &aliveInstanceIds)
Defensive cleanup for windows that died WITHOUT a close signal reaching the registry (compositor cras...
WindowRegistry(QObject *parent=nullptr)
void metadataChanged(const QString &instanceId, const WindowMetadata &oldMetadata, const WindowMetadata &newMetadata)
~WindowRegistry() override
QString appIdFor(const QString &instanceId) const override
The app identity recorded for instanceId, or empty when the instance is unknown.
std::optional< WindowMetadata > metadata(const QString &instanceId) const
QStringList instancesWithAppId(const QString &appId) const
Every instance currently recorded under appId, in UNSPECIFIED order (QMultiHash bucket order,...
void remove(const QString &instanceId)
Remove metadata and canonical state, emitting windowDisappeared exactly once while the canonical mapp...
void upsert(const QString &instanceId, const WindowMetadata &metadata)
bool contains(const QString &instanceId) const
QString canonicalizeForLookup(const QString &rawWindowId) const override
void windowAppeared(const QString &instanceId)
std::optional< bool > minimizedState(const QString &windowId) const override
Tri-state minimize state (IWindowRegistry contract): engaged when a record exists AND the compositor ...
QString canonicalizeWindowId(const QString &rawWindowId) override
Freeze (on first contact) and return the canonical id for rawWindowId's instance.
Definition EngineTypes.h:14
WindowType
Window-type vocabulary shared by the compositor effect, the daemon's WindowRegistry,...
Definition WindowTypeEnum.h:23
@ Unknown
type could not be determined
The window's own context for per-window mode resolution: its virtual desktop (0 = all/unknown),...
Definition WindowRegistry.h:120
QList< int > virtualDesktops
Definition WindowRegistry.h:122
QString effectiveActivity(const QString ¤tActivity) const
Effective activity: the window's own when known, else currentActivity.
Definition WindowRegistry.h:147
QString activity
Definition WindowRegistry.h:123
int effectiveDesktop(int screenCurrentDesktop) const
Effective desktop for per-window mode resolution: the window's own desktop when known (virtualDesktop...
Definition WindowRegistry.h:134