Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
ZoneCache.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
7
8#include <QHash>
9#include <QString>
10
11namespace PhosphorCompositor {
12
34{
35public:
37 QString zoneForWindow(const QString& windowId) const
38 {
39 return m_byInstance.value(::PhosphorIdentity::WindowId::extractInstanceId(windowId));
40 }
41
43 bool isSnapped(const QString& windowId) const
44 {
45 return !zoneForWindow(windowId).isEmpty();
46 }
47
50 void setZone(const QString& windowId, const QString& zoneId)
51 {
52 const QString instanceId = ::PhosphorIdentity::WindowId::extractInstanceId(windowId);
53 // A composite with an empty instanceId ("appId|") is malformed: keying it
54 // would alias every empty-instance window onto one wildcard slot. Ignore.
55 if (instanceId.isEmpty()) {
56 return;
57 }
58 if (zoneId.isEmpty()) {
59 m_byInstance.remove(instanceId);
60 } else {
61 m_byInstance.insert(instanceId, zoneId);
62 }
63 }
64
65 void remove(const QString& windowId)
66 {
67 m_byInstance.remove(::PhosphorIdentity::WindowId::extractInstanceId(windowId));
68 }
69
70 void clear()
71 {
72 m_byInstance.clear();
73 }
74
75 int size() const
76 {
77 return m_byInstance.size();
78 }
79
80private:
81 QHash<QString, QString> m_byInstance;
82};
83
84} // namespace PhosphorCompositor
Compositor-agnostic snap-zone state cache.
Definition ZoneCache.h:34
QString zoneForWindow(const QString &windowId) const
The snap-zone UUID windowId occupies, or empty if it occupies none.
Definition ZoneCache.h:37
void remove(const QString &windowId)
Definition ZoneCache.h:65
void setZone(const QString &windowId, const QString &zoneId)
Record windowId's zone.
Definition ZoneCache.h:50
bool isSnapped(const QString &windowId) const
True iff windowId is snapped into a zone (has a non-empty entry).
Definition ZoneCache.h:43
void clear()
Definition ZoneCache.h:70
int size() const
Definition ZoneCache.h:75
Definition AutotileState.h:17
QString extractInstanceId(const QString &windowId)
Extract the stable KWin instance identifier (UUID) from a full window ID.
Definition WindowId.h:75