Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
PhosphorSnapEngine::SnapState Class Reference

Per-screen snap placement state. More...

#include <phosphor-snap-engine/include/PhosphorSnapEngine/SnapState.h>

Inheritance diagram for PhosphorSnapEngine::SnapState:
[legend]

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
 
SnapStateoperator= (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 SnapStatefromJson (const QJsonObject &json, QObject *parent=nullptr)
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ SnapState() [1/2]

PhosphorSnapEngine::SnapState::SnapState ( const QString &  screenId,
QObject *  parent = nullptr 
)
explicit

◆ ~SnapState()

PhosphorSnapEngine::SnapState::~SnapState ( )
override

◆ SnapState() [2/2]

PhosphorSnapEngine::SnapState::SnapState ( const SnapState )
delete

Member Function Documentation

◆ addPreFloatScreen()

void PhosphorSnapEngine::SnapState::addPreFloatScreen ( const QString &  windowId,
const QString &  screenId 
)

◆ addPreFloatZone()

void PhosphorSnapEngine::SnapState::addPreFloatZone ( const QString &  windowId,
const QStringList &  zoneIds 
)

◆ assignWindowToZone()

void PhosphorSnapEngine::SnapState::assignWindowToZone ( const QString &  windowId,
const QString &  zoneId,
const QString &  screenId,
int  virtualDesktop 
)

◆ assignWindowToZones()

void PhosphorSnapEngine::SnapState::assignWindowToZones ( const QString &  windowId,
const QStringList &  zoneIds,
const QString &  screenId,
int  virtualDesktop 
)

◆ buildOccupiedZoneSet()

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.

◆ clear()

void PhosphorSnapEngine::SnapState::clear ( )

◆ clearAutoSnapped()

bool PhosphorSnapEngine::SnapState::clearAutoSnapped ( const QString &  windowId)

◆ clearPreFloatZone()

void PhosphorSnapEngine::SnapState::clearPreFloatZone ( const QString &  windowId)

◆ containsWindow()

bool PhosphorSnapEngine::SnapState::containsWindow ( const QString &  windowId) const
overridevirtual

Whether the window is in this state's managed set.

Implements PhosphorEngine::IPlacementState.

◆ desktopAssignments()

const QHash< QString, int > & PhosphorSnapEngine::SnapState::desktopAssignments ( ) const
inline

◆ desktopForWindow()

int PhosphorSnapEngine::SnapState::desktopForWindow ( const QString &  windowId) const

◆ floatingChanged

void PhosphorSnapEngine::SnapState::floatingChanged ( const QString &  windowId,
bool  floating 
)
signal

◆ floatingWindows()

QStringList PhosphorSnapEngine::SnapState::floatingWindows ( ) const
overridevirtual

All currently-floating windows.

Implements PhosphorEngine::IPlacementState.

◆ fromJson()

static SnapState * PhosphorSnapEngine::SnapState::fromJson ( const QJsonObject &  json,
QObject *  parent = nullptr 
)
static

◆ isAutoSnapped()

bool PhosphorSnapEngine::SnapState::isAutoSnapped ( const QString &  windowId) const

◆ isEmpty()

bool PhosphorSnapEngine::SnapState::isEmpty ( ) const

◆ isFloating()

bool PhosphorSnapEngine::SnapState::isFloating ( const QString &  windowId) const
overridevirtual

Whether the window is floating (excluded from placement).

Implements PhosphorEngine::IPlacementState.

◆ isWindowSnapped()

bool PhosphorSnapEngine::SnapState::isWindowSnapped ( const QString &  windowId) const

◆ lastUsedDesktop()

int PhosphorSnapEngine::SnapState::lastUsedDesktop ( ) const
inline

◆ lastUsedScreenId()

QString PhosphorSnapEngine::SnapState::lastUsedScreenId ( ) const
inline

◆ lastUsedZoneClass()

QString PhosphorSnapEngine::SnapState::lastUsedZoneClass ( ) const
inline

◆ lastUsedZoneId()

QString PhosphorSnapEngine::SnapState::lastUsedZoneId ( ) const
inline

◆ managedWindows()

QStringList PhosphorSnapEngine::SnapState::managedWindows ( ) const
overridevirtual

All windows managed by this state (tiled + floating).

Implements PhosphorEngine::IPlacementState.

◆ markAsAutoSnapped()

void PhosphorSnapEngine::SnapState::markAsAutoSnapped ( const QString &  windowId)

◆ operator=()

SnapState & PhosphorSnapEngine::SnapState::operator= ( const SnapState )
delete

◆ placementIdForWindow()

QString PhosphorSnapEngine::SnapState::placementIdForWindow ( const QString &  windowId) const
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.

◆ preFloatScreen()

QString PhosphorSnapEngine::SnapState::preFloatScreen ( const QString &  windowId) const

◆ preFloatScreenAssignments()

const QHash< QString, QString > & PhosphorSnapEngine::SnapState::preFloatScreenAssignments ( ) const
inline

◆ preFloatZone()

QString PhosphorSnapEngine::SnapState::preFloatZone ( const QString &  windowId) const

◆ preFloatZoneAssignments()

const QHash< QString, QStringList > & PhosphorSnapEngine::SnapState::preFloatZoneAssignments ( ) const
inline

◆ preFloatZones()

QStringList PhosphorSnapEngine::SnapState::preFloatZones ( const QString &  windowId) const

◆ pruneStaleAssignments()

int PhosphorSnapEngine::SnapState::pruneStaleAssignments ( const QSet< QString > &  aliveWindowIds)

Remove zone/screen/desktop assignments for windows not in the alive set.

◆ recordSnapIntent()

void PhosphorSnapEngine::SnapState::recordSnapIntent ( const QString &  windowClass,
bool  wasUserInitiated 
)

◆ restoreLastUsedZone()

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.

◆ retagLastUsedZoneClass()

void PhosphorSnapEngine::SnapState::retagLastUsedZoneClass ( const QString &  newClass)
inline

◆ rotateAssignments()

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.

◆ screenAssignments()

const QHash< QString, QString > & PhosphorSnapEngine::SnapState::screenAssignments ( ) const
inline

◆ screenForWindow()

QString PhosphorSnapEngine::SnapState::screenForWindow ( const QString &  windowId) const

◆ screenId()

QString PhosphorSnapEngine::SnapState::screenId ( ) const
overridevirtual

Screen this state object manages.

Implements PhosphorEngine::IPlacementState.

◆ setDesktopAssignments()

void PhosphorSnapEngine::SnapState::setDesktopAssignments ( const QHash< QString, int > &  d)
inline

◆ setFloating()

void PhosphorSnapEngine::SnapState::setFloating ( const QString &  windowId,
bool  floating 
)

◆ setFloatingOnScreen()

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.

◆ setFloatingWindows()

void PhosphorSnapEngine::SnapState::setFloatingWindows ( const QSet< QString > &  windows)
inline

◆ setPreFloatScreenAssignments()

void PhosphorSnapEngine::SnapState::setPreFloatScreenAssignments ( const QHash< QString, QString > &  a)
inline

◆ setPreFloatZoneAssignments()

void PhosphorSnapEngine::SnapState::setPreFloatZoneAssignments ( const QHash< QString, QStringList > &  a)
inline

◆ setScreenAssignments()

void PhosphorSnapEngine::SnapState::setScreenAssignments ( const QHash< QString, QString > &  s)
inline

◆ setUserSnappedClasses()

void PhosphorSnapEngine::SnapState::setUserSnappedClasses ( const QSet< QString > &  classes)
inline

◆ setZoneAssignments()

void PhosphorSnapEngine::SnapState::setZoneAssignments ( const QHash< QString, QStringList > &  zones)
inline

◆ snappedWindows()

QStringList PhosphorSnapEngine::SnapState::snappedWindows ( ) const

◆ stateChanged

void PhosphorSnapEngine::SnapState::stateChanged ( )
signal

◆ toJson()

QJsonObject PhosphorSnapEngine::SnapState::toJson ( ) const
overridevirtual

Serialize to JSON for session persistence.

Implements PhosphorEngine::IPlacementState.

◆ unassignWindow()

UnassignResult PhosphorSnapEngine::SnapState::unassignWindow ( const QString &  windowId)

◆ unsnapForFloat()

UnassignResult PhosphorSnapEngine::SnapState::unsnapForFloat ( const QString &  windowId)

Save zone assignment before floating for later restore.

◆ updateLastUsedZone()

void PhosphorSnapEngine::SnapState::updateLastUsedZone ( const QString &  zoneId,
const QString &  screenId,
const QString &  windowClass,
int  virtualDesktop 
)

Update last-used zone and emit stateChanged.

◆ userSnappedClasses()

const QSet< QString > & PhosphorSnapEngine::SnapState::userSnappedClasses ( ) const
inline

◆ windowAssigned

void PhosphorSnapEngine::SnapState::windowAssigned ( const QString &  windowId,
const QString &  zoneId 
)
signal

◆ windowClosed()

void PhosphorSnapEngine::SnapState::windowClosed ( const QString &  windowId)

◆ windowCount()

int PhosphorSnapEngine::SnapState::windowCount ( ) const
overridevirtual

Total number of managed windows (tiled + floating).

Implements PhosphorEngine::IPlacementState.

◆ windowsInZone()

QStringList PhosphorSnapEngine::SnapState::windowsInZone ( const QString &  zoneId) const

◆ windowUnassigned

void PhosphorSnapEngine::SnapState::windowUnassigned ( const QString &  windowId)
signal

◆ zoneAssignments()

const QHash< QString, QStringList > & PhosphorSnapEngine::SnapState::zoneAssignments ( ) const
inline

◆ zoneForWindow()

QString PhosphorSnapEngine::SnapState::zoneForWindow ( const QString &  windowId) const

◆ zonesForWindow()

QStringList PhosphorSnapEngine::SnapState::zonesForWindow ( const QString &  windowId) const

The documentation for this class was generated from the following file: