#include <phosphor-engine/include/PhosphorEngine/IWindowTrackingService.h>
Public Member Functions | |
| virtual | ~IWindowTrackingService ()=default |
| virtual QObject * | asQObject ()=0 |
| virtual PhosphorScreens::ScreenManager * | screenManager () const =0 |
| virtual void | assignWindowToZone (const QString &windowId, const QString &zoneId, const QString &screenId, int virtualDesktop)=0 |
| virtual void | assignWindowToZones (const QString &windowId, const QStringList &zoneIds, const QString &screenId, int virtualDesktop)=0 |
| virtual void | unassignWindow (const QString &windowId)=0 |
| virtual QStringList | recordedSnapZones (const QString &windowId) const =0 |
| A window's recorded snap zone(s), preferring the LIVE assignment but falling back to the DURABLE placement-record snap slot when the live cache is cold. | |
| virtual QString | zoneForWindow (const QString &windowId) const =0 |
| virtual QStringList | zonesForWindow (const QString &windowId) const =0 |
| virtual QString | screenForWindow (const QString &windowId) const =0 |
| The screen a window is assigned to (empty when none), canonicalizing the id so a window resolves across the effect-restart re-identification skew (#628). | |
| virtual QString | screenForWindow (const QString &windowId, const QString &defaultScreen) const =0 |
Same, returning defaultScreen when the window has no assignment. | |
| virtual QStringList | windowsInZone (const QString &zoneId) const =0 |
| virtual bool | isWindowSnapped (const QString &windowId) const =0 |
| virtual QString | findEmptyZone (const QString &screenId=QString()) const =0 |
| virtual void | recordSnapIntent (const QString &windowId, bool wasUserInitiated)=0 |
| virtual bool | isWindowFloating (const QString &windowId) const =0 |
| virtual bool | isSuspensionFloat (const QString &windowId) const |
| Whether the window's float is a MINIMIZE SUSPENSION rather than placement intent. | |
| virtual void | clearSuspensionFloat (const QString &windowId) |
| Drop the suspension classification. | |
| virtual void | setWindowFloating (const QString &windowId, bool floating)=0 |
| virtual void | unsnapForFloat (const QString &windowId)=0 |
| virtual bool | clearFloatingForSnap (const QString &windowId)=0 |
| virtual bool | isWindowSticky (const QString &windowId) const =0 |
| virtual QStringList | preFloatZones (const QString &windowId) const =0 |
| virtual QString | preFloatScreen (const QString &windowId) const =0 |
| virtual void | clearPreFloatZone (const QString &windowId)=0 |
Clear the saved pre-float zone/screen for windowId (both the windowId key and its appId alias). | |
| virtual bool | clearAutoSnapped (const QString &windowId)=0 |
| virtual bool | consumePendingAssignment (const QString &windowId)=0 |
| virtual const QHash< QString, QList< PendingRestore > > & | pendingRestoreQueues () const =0 |
| virtual void | updateLastUsedZone (const QString &zoneId, const QString &screenId, const QString &windowClass, int virtualDesktop)=0 |
| virtual QString | currentAppIdFor (const QString &anyWindowId) const =0 |
| virtual std::optional< QRect > | validatedUnmanagedGeometry (const QString &windowId, const QString &screenId, bool exactOnly=false) const =0 |
The window's remembered UNMANAGED (free/float-back) geometry, resolved FOR screenId, or nullopt when no record can answer. | |
| virtual void | recordFreeGeometry (const QString &windowId, const QString &screenId, const QRect &geometry, bool overwrite)=0 |
| Record a window's SHARED free/float geometry (the single float-back store — the placement record's freeGeometryByScreen). | |
| virtual void | clearFreeGeometry (const QString &windowId)=0 |
| Clear a window's shared free/float geometry (all screens) from the record, leaving its engine slots intact. | |
| virtual void | releaseEngineSlot (const QString &windowId, const QString &engineId) |
Downgrade engineId's slot on windowId's record to WindowPlacement::stateReleased() and mark the placements dirty. | |
| virtual void | clearFreeGeometry (const QString &windowId, const QString &screenId) |
Screen-scoped consume-once variant: clears only screenId's remembered float-back, preserving other monitors' entries. | |
| virtual QRect | zoneGeometry (const QString &zoneId, const QString &screenId=QString()) const =0 |
| virtual QRect | resolveZoneGeometry (const QStringList &zoneIds, const QString &screenId) const =0 |
| virtual QString | resolveEffectiveScreenId (const QString &screenId) const =0 |
| virtual WindowPlacementStore & | placementStore ()=0 |
| The unified, engine-agnostic placement store. | |
| virtual QString | findEmptyZoneInLayout (PhosphorZones::Layout *layout, const QString &screenId, int desktopFilter=0) const =0 |
| virtual QSet< QUuid > | buildOccupiedZoneSet (const QString &screenFilter=QString(), int desktopFilter=0) const =0 |
| virtual QVector< ResnapEntry > | takeResnapBuffer ()=0 |
|
virtualdefault |
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Clear a window's shared free/float geometry (all screens) from the record, leaving its engine slots intact.
For the drag-out / layout-change consume paths that restore the float-back once and must not re-apply it.
Implemented in PhosphorPlacement::WindowTrackingService.
|
inlinevirtual |
Screen-scoped consume-once variant: clears only screenId's remembered float-back, preserving other monitors' entries.
Default falls back to the all-screens form for implementations without per-screen granularity.
Reimplemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Clear the saved pre-float zone/screen for windowId (both the windowId key and its appId alias).
Used to drop stale pre-float state when a floating window crosses monitors, so a later unfloat does not restore it to a zone on the monitor it left.
Implemented in PhosphorPlacement::WindowTrackingService.
|
inlinevirtual |
Drop the suspension classification.
The adaptor owns it on the minimize/unminimize edges, but an engine-side USER unfloat (the float shortcut) also ends the suspension and never crosses that boundary — without this the bit strands and every later capture takes the minimize-preserve path. No-op for implementations that do not track the classification.
Reimplemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
inlinevirtual |
Whether the window's float is a MINIMIZE SUSPENSION rather than placement intent.
Outlives the live minimize bit through the unminimize animation grace so capture paths can keep preserving the pre-minimize record. Default false for implementations that do not track the classification.
Reimplemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
The unified, engine-agnostic placement store.
Engines reach it through the tracking service to capture/restore the one WindowPlacement per window.
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
A window's recorded snap zone(s), preferring the LIVE assignment but falling back to the DURABLE placement-record snap slot when the live cache is cold.
The live per-store zone maps are runtime-only — a daemon restart (and handoffRelease on autotile entry) clears them — so consumers that must survive a restart (the autotile→snap resnap) read this instead. Returns an empty list for a window that was never snapped in either source.
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Record a window's SHARED free/float geometry (the single float-back store — the placement record's freeGeometryByScreen).
This is the ONE writer all float-back captures route through (effect pre-tile/pre-snap capture, drag store, float-toggle capture), so snap and autotile read the same value and never drift. overwrite=false leaves an existing entry for screenId untouched (first-capture-wins). No-op on an invalid geometry.
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
inlinevirtual |
Downgrade engineId's slot on windowId's record to WindowPlacement::stateReleased() and mark the placements dirty.
Called by an engine that KNOWINGLY gives a window up (cross-mode handoff), so its slot stops advertising a home the cross-screen reclaim would pull the window back to. Default no-op: an embedder without persistence has nothing to downgrade. NOT for ordinary close — a window that closed tiled keeps its slot, which is what login restore reads.
Reimplemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
The screen a window is assigned to (empty when none), canonicalizing the id so a window resolves across the effect-restart re-identification skew (#628).
There is deliberately no flat whole-map accessor on this interface: window placement is stored per (screen, desktop, activity) context, and a cross-store union erases the context that per-desktop consumers need.
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Same, returning defaultScreen when the window has no assignment.
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
The window's remembered UNMANAGED (free/float-back) geometry, resolved FOR screenId, or nullopt when no record can answer.
"Validated" describes the POSITION, not the size. The implementation prefers the spot remembered for screenId and otherwise falls back to one remembered on another screen, re-centring that rect on screenId (its absolute coordinates belong to the screen it was captured on, so only the SIZE carries over). So a non-null answer is not evidence the window was ever free on this screen.
exactOnly restricts the lookup to the window's OWN record. The default admits a same-app SIBLING's free geometry, which is deliberate cross-instance float-back sharing for free positions; pass exactOnly when the contract is per-window.
The SIZE is whatever the compositor last reported and is never bounded here. A caller minting a SIZING INTENT out of it (a Fixed column width, a fixed tile height) owes it a bound of its own — the extents are untrusted input from a compositor and, through the injected service, from an embedder. Callers that only re-place a window at a remembered spot need no such bound.
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.
|
pure virtual |
Implemented in PhosphorPlacement::WindowTrackingService.