Per-screen snap placement state. More...
#include <phosphor-snap-engine/include/PhosphorSnapEngine/SnapState.h>
Classes | |
| struct | UnassignResult |
Signals | |
| void | windowAssigned (const QString &windowId, const QString &zoneId) |
| void | windowUnassigned (const QString &windowId) |
| void | floatingChanged (const QString &windowId, bool floating) |
| void | stateChanged () |
Public Member Functions | |
| SnapState (const QString &screenId, QObject *parent=nullptr) | |
| ~SnapState () override | |
| SnapState (const SnapState &)=delete | |
| SnapState & | operator= (const SnapState &)=delete |
| QString | screenId () const override |
| Screen this state object manages. | |
| int | windowCount () const override |
| Total number of managed windows (tiled + floating). | |
| QStringList | managedWindows () const override |
| All windows managed by this state (tiled + floating). | |
| bool | containsWindow (const QString &windowId) const override |
| Whether the window is in this state's managed set. | |
| bool | isFloating (const QString &windowId) const override |
| Whether the window is floating (excluded from placement). | |
| QStringList | floatingWindows () const override |
| All currently-floating windows. | |
| QString | placementIdForWindow (const QString &windowId) const override |
| Opaque placement identifier for the window's current slot. | |
| QJsonObject | toJson () const override |
| Serialize to JSON for session persistence. | |
| void | assignWindowToZone (const QString &windowId, const QString &zoneId, const QString &screenId, int virtualDesktop) |
| void | assignWindowToZones (const QString &windowId, const QStringList &zoneIds, const QString &screenId, int virtualDesktop) |
| UnassignResult | unassignWindow (const QString &windowId) |
| QString | zoneForWindow (const QString &windowId) const |
| QStringList | zonesForWindow (const QString &windowId) const |
| QStringList | windowsInZone (const QString &zoneId) const |
| QStringList | snappedWindows () const |
| bool | isWindowSnapped (const QString &windowId) const |
| QString | screenForWindow (const QString &windowId) const |
| int | desktopForWindow (const QString &windowId) const |
| const QHash< QString, QString > & | screenAssignments () const |
| const QHash< QString, int > & | desktopAssignments () const |
| void | setScreenAssignments (const QHash< QString, QString > &s) |
| void | setDesktopAssignments (const QHash< QString, int > &d) |
| void | setFloating (const QString &windowId, bool floating) |
| void | setFloatingOnScreen (const QString &windowId, const QString &screenId, int virtualDesktop) |
| Mark a window floating AND record its screen+desktop without a zone. | |
| UnassignResult | unsnapForFloat (const QString &windowId) |
| Save zone assignment before floating for later restore. | |
| QString | preFloatZone (const QString &windowId) const |
| QStringList | preFloatZones (const QString &windowId) const |
| QString | preFloatScreen (const QString &windowId) const |
| void | clearPreFloatZone (const QString &windowId) |
| void | addPreFloatZone (const QString &windowId, const QStringList &zoneIds) |
| void | addPreFloatScreen (const QString &windowId, const QString &screenId) |
| const QHash< QString, QStringList > & | preFloatZoneAssignments () const |
| const QHash< QString, QString > & | preFloatScreenAssignments () const |
| void | setPreFloatScreenAssignments (const QHash< QString, QString > &a) |
| void | windowClosed (const QString &windowId) |
| bool | isEmpty () const |
| void | clear () |
| QStringList | rotateAssignments (bool clockwise) |
| Rotate zone assignments: each window moves to the next/previous zone in zone-number order. | |
| void | updateLastUsedZone (const QString &zoneId, const QString &screenId, const QString &windowClass, int virtualDesktop) |
| Update last-used zone and emit stateChanged. | |
| void | restoreLastUsedZone (const QString &zoneId, const QString &screenId, const QString &zoneClass, int desktop) |
| Restore last-used zone fields from persistence without emitting stateChanged. | |
| QString | lastUsedZoneId () const |
| QString | lastUsedScreenId () const |
| QString | lastUsedZoneClass () const |
| int | lastUsedDesktop () const |
| void | retagLastUsedZoneClass (const QString &newClass) |
| void | recordSnapIntent (const QString &windowClass, bool wasUserInitiated) |
| const QSet< QString > & | userSnappedClasses () const |
| void | setUserSnappedClasses (const QSet< QString > &classes) |
| void | markAsAutoSnapped (const QString &windowId) |
| bool | isAutoSnapped (const QString &windowId) const |
| bool | clearAutoSnapped (const QString &windowId) |
| QSet< QString > | buildOccupiedZoneSet (const QString &screenFilter={}, int desktopFilter=0) const |
| Build the set of zone IDs currently occupied by snapped windows. | |
| int | pruneStaleAssignments (const QSet< QString > &aliveWindowIds) |
| Remove zone/screen/desktop assignments for windows not in the alive set. | |
| const QHash< QString, QStringList > & | zoneAssignments () const |
| void | setZoneAssignments (const QHash< QString, QStringList > &zones) |
| void | setFloatingWindows (const QSet< QString > &windows) |
| void | setPreFloatZoneAssignments (const QHash< QString, QStringList > &a) |
Public Member Functions inherited from PhosphorEngine::IPlacementState | |
| virtual | ~IPlacementState ()=default |
| virtual int | tiledWindowCount () const |
| Number of tiled (non-floating) windows in the managed set. | |
| virtual int | masterCount () const |
| Number of master windows (autotile concept; snap returns 1). | |
Static Public Member Functions | |
| static SnapState * | fromJson (const QJsonObject &json, QObject *parent=nullptr) |
Per-screen snap placement state.
Owns the mutable state for manual zone-based snapping: which window is assigned to which zone, floating state, pre-tile geometry for restore, and pre-float zone memory for unfloat. Analogous to PhosphorTiles::TilingState for automatic tiling.
Both SnapState and TilingState implement PhosphorEngine::IPlacementState so the daemon's persistence layer and D-Bus adaptor can serialize state uniformly without branching on mode.
|
explicit |
|
override |
|
delete |
| void PhosphorSnapEngine::SnapState::addPreFloatScreen | ( | const QString & | windowId, |
| const QString & | screenId | ||
| ) |
| void PhosphorSnapEngine::SnapState::addPreFloatZone | ( | const QString & | windowId, |
| const QStringList & | zoneIds | ||
| ) |
| void PhosphorSnapEngine::SnapState::assignWindowToZone | ( | const QString & | windowId, |
| const QString & | zoneId, | ||
| const QString & | screenId, | ||
| int | virtualDesktop | ||
| ) |
| void PhosphorSnapEngine::SnapState::assignWindowToZones | ( | const QString & | windowId, |
| const QStringList & | zoneIds, | ||
| const QString & | screenId, | ||
| int | virtualDesktop | ||
| ) |
| QSet< QString > PhosphorSnapEngine::SnapState::buildOccupiedZoneSet | ( | const QString & | screenFilter = {}, |
| int | desktopFilter = 0 |
||
| ) | const |
Build the set of zone IDs currently occupied by snapped windows.
Desktop 0 means "on all desktops" per KWin convention — windows with desktop 0 pass the filter and appear occupied on every desktop.
| void PhosphorSnapEngine::SnapState::clear | ( | ) |
| bool PhosphorSnapEngine::SnapState::clearAutoSnapped | ( | const QString & | windowId | ) |
| void PhosphorSnapEngine::SnapState::clearPreFloatZone | ( | const QString & | windowId | ) |
|
overridevirtual |
Whether the window is in this state's managed set.
Implements PhosphorEngine::IPlacementState.
|
inline |
| int PhosphorSnapEngine::SnapState::desktopForWindow | ( | const QString & | windowId | ) | const |
|
signal |
|
overridevirtual |
All currently-floating windows.
Implements PhosphorEngine::IPlacementState.
|
static |
| bool PhosphorSnapEngine::SnapState::isAutoSnapped | ( | const QString & | windowId | ) | const |
| bool PhosphorSnapEngine::SnapState::isEmpty | ( | ) | const |
|
overridevirtual |
Whether the window is floating (excluded from placement).
Implements PhosphorEngine::IPlacementState.
| bool PhosphorSnapEngine::SnapState::isWindowSnapped | ( | const QString & | windowId | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
|
overridevirtual |
All windows managed by this state (tiled + floating).
Implements PhosphorEngine::IPlacementState.
| void PhosphorSnapEngine::SnapState::markAsAutoSnapped | ( | const QString & | windowId | ) |
|
overridevirtual |
Opaque placement identifier for the window's current slot.
Snap mode: zone UUID. Autotile mode: tiling-order index as string. Empty if the window is floating or unassigned.
Implements PhosphorEngine::IPlacementState.
| QString PhosphorSnapEngine::SnapState::preFloatScreen | ( | const QString & | windowId | ) | const |
|
inline |
| QString PhosphorSnapEngine::SnapState::preFloatZone | ( | const QString & | windowId | ) | const |
|
inline |
| QStringList PhosphorSnapEngine::SnapState::preFloatZones | ( | const QString & | windowId | ) | const |
| int PhosphorSnapEngine::SnapState::pruneStaleAssignments | ( | const QSet< QString > & | aliveWindowIds | ) |
Remove zone/screen/desktop assignments for windows not in the alive set.
| void PhosphorSnapEngine::SnapState::recordSnapIntent | ( | const QString & | windowClass, |
| bool | wasUserInitiated | ||
| ) |
| void PhosphorSnapEngine::SnapState::restoreLastUsedZone | ( | const QString & | zoneId, |
| const QString & | screenId, | ||
| const QString & | zoneClass, | ||
| int | desktop | ||
| ) |
Restore last-used zone fields from persistence without emitting stateChanged.
|
inline |
| QStringList PhosphorSnapEngine::SnapState::rotateAssignments | ( | bool | clockwise | ) |
Rotate zone assignments: each window moves to the next/previous zone in zone-number order.
Returns the list of window IDs affected.
|
inline |
| QString PhosphorSnapEngine::SnapState::screenForWindow | ( | const QString & | windowId | ) | const |
|
overridevirtual |
Screen this state object manages.
Implements PhosphorEngine::IPlacementState.
|
inline |
| void PhosphorSnapEngine::SnapState::setFloating | ( | const QString & | windowId, |
| bool | floating | ||
| ) |
| void PhosphorSnapEngine::SnapState::setFloatingOnScreen | ( | const QString & | windowId, |
| const QString & | screenId, | ||
| int | virtualDesktop | ||
| ) |
Mark a window floating AND record its screen+desktop without a zone.
Used by cross-engine handoff when the snap engine adopts a floating window from another engine — the screen entry is what makes the snap engine answerable for "where does this window live" lookups (screenAssignments / screenForTrackedWindow) so future shortcut routing reaches this engine.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| QStringList PhosphorSnapEngine::SnapState::snappedWindows | ( | ) | const |
|
signal |
|
overridevirtual |
Serialize to JSON for session persistence.
Implements PhosphorEngine::IPlacementState.
| UnassignResult PhosphorSnapEngine::SnapState::unassignWindow | ( | const QString & | windowId | ) |
| UnassignResult PhosphorSnapEngine::SnapState::unsnapForFloat | ( | const QString & | windowId | ) |
Save zone assignment before floating for later restore.
| void PhosphorSnapEngine::SnapState::updateLastUsedZone | ( | const QString & | zoneId, |
| const QString & | screenId, | ||
| const QString & | windowClass, | ||
| int | virtualDesktop | ||
| ) |
Update last-used zone and emit stateChanged.
|
inline |
|
signal |
| void PhosphorSnapEngine::SnapState::windowClosed | ( | const QString & | windowId | ) |
|
overridevirtual |
Total number of managed windows (tiled + floating).
Implements PhosphorEngine::IPlacementState.
| QStringList PhosphorSnapEngine::SnapState::windowsInZone | ( | const QString & | zoneId | ) | const |
|
signal |
|
inline |
| QString PhosphorSnapEngine::SnapState::zoneForWindow | ( | const QString & | windowId | ) | const |
| QStringList PhosphorSnapEngine::SnapState::zonesForWindow | ( | const QString & | windowId | ) | const |