Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
EngineTypes.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
6#include <QHashFunctions>
7#include <QLatin1StringView>
8#include <functional>
9#include <QList>
10#include <QRect>
11#include <QString>
12#include <QStringList>
13
14namespace PhosphorEngine {
15
22{
23 QString screenId;
24 int desktop = 1;
25 QString activity;
26
27 bool operator==(const PlacementStateKey& other) const
28 {
29 return screenId == other.screenId && desktop == other.desktop && activity == other.activity;
30 }
31};
32
33inline size_t qHash(const PlacementStateKey& key, size_t seed = 0)
34{
35 return qHashMulti(seed, key.screenId, key.desktop, key.activity);
36}
37
38} // namespace PhosphorEngine
39
43template<>
44struct std::hash<PhosphorEngine::PlacementStateKey>
45{
46 size_t operator()(const PhosphorEngine::PlacementStateKey& key) const noexcept
47 {
48 return qHash(key);
49 }
50};
51
52namespace PhosphorEngine {
53
58
59enum class SnapIntent {
62};
63
66enum class WindowKind : int {
67 Unknown = 0,
68 Normal = 1,
69 Transient = 2,
70};
71
83{
84 switch (wire) {
85 case static_cast<int>(WindowKind::Normal):
86 return WindowKind::Normal;
87 case static_cast<int>(WindowKind::Transient):
89 default:
91 }
92}
93
95{
96 QString windowId;
97 int zonePosition = 0;
98 QString screenId;
100};
101
112
114{
115 bool shouldSnap = false;
116 QRect geometry;
117 QString zoneId;
118 QStringList zoneIds;
119 QString screenId;
134
135 bool isValid() const
136 {
137 return shouldSnap && geometry.isValid() && !zoneId.isEmpty();
138 }
139
141 {
142 // Value-initialize so every field takes its in-class default; a
143 // positional initializer here would silently stop covering fields
144 // added to the struct later.
145 return SnapResult{};
146 }
147};
148
150{
151 bool found = false;
152 QStringList zoneIds;
153 QRect geometry;
154 QString screenId;
155};
156
172
174 TreatAsNormal = 0,
175 RestoreOnly = 1,
176 IgnoreAll = 2
177};
178
179inline constexpr QLatin1StringView RestoreSentinel("__restore__");
180
181} // namespace PhosphorEngine
Definition EngineTypes.h:14
StickyWindowHandling
Definition EngineTypes.h:173
WindowKind clampWindowKindFromWire(int wire)
Clamp an integer wire value to a valid WindowKind.
Definition EngineTypes.h:82
SnapIntent
Definition EngineTypes.h:59
constexpr QLatin1StringView RestoreSentinel("__restore__")
WindowKind
Coarse structural classification for the snap-restore consume gate.
Definition EngineTypes.h:66
size_t qHash(const PlacementStateKey &key, size_t seed=0)
Definition EngineTypes.h:33
Definition EngineTypes.h:103
QString layoutId
Definition EngineTypes.h:107
int virtualDesktop
Definition EngineTypes.h:106
QString screenId
Definition EngineTypes.h:105
QList< int > zoneNumbers
Definition EngineTypes.h:108
QStringList zoneIds
Definition EngineTypes.h:104
WindowKind windowKind
Closing window's kind; the consume gate refuses when both sides are concrete and disagree.
Definition EngineTypes.h:110
Identity of a per-screen placement state: a window's placement is scoped to the (screen,...
Definition EngineTypes.h:22
bool operator==(const PlacementStateKey &other) const
Definition EngineTypes.h:27
int desktop
Definition EngineTypes.h:24
QString screenId
Definition EngineTypes.h:23
QString activity
Definition EngineTypes.h:25
Definition EngineTypes.h:95
int virtualDesktop
Definition EngineTypes.h:99
QString windowId
Definition EngineTypes.h:96
QString screenId
Definition EngineTypes.h:98
int zonePosition
Definition EngineTypes.h:97
Definition EngineTypes.h:114
static SnapResult noSnap()
Definition EngineTypes.h:140
bool shouldSnap
Definition EngineTypes.h:115
QString zoneId
Definition EngineTypes.h:117
QStringList zoneIds
Definition EngineTypes.h:118
QRect geometry
Definition EngineTypes.h:116
bool deferredToTilingEngine
Set (with shouldSnap false) when snap's resolve stood down because the record homes the window TILED ...
Definition EngineTypes.h:127
QString screenId
Definition EngineTypes.h:119
int virtualDesktop
Target virtual desktop the snap should be committed in (1-based).
Definition EngineTypes.h:133
bool isValid() const
Definition EngineTypes.h:135
Definition EngineTypes.h:150
QStringList zoneIds
Definition EngineTypes.h:152
QRect geometry
Definition EngineTypes.h:153
QString screenId
Definition EngineTypes.h:154
bool found
Definition EngineTypes.h:151
Definition EngineTypes.h:158
QString windowId
Definition EngineTypes.h:159
QRect targetGeometry
Definition EngineTypes.h:163
QString targetScreenId
Definition EngineTypes.h:164
QStringList targetZoneIds
Definition EngineTypes.h:162
QString targetZoneId
Definition EngineTypes.h:161
QString sourceZoneId
Definition EngineTypes.h:160
int virtualDesktop
Virtual desktop to record the assignment on (1-based).
Definition EngineTypes.h:170
size_t operator()(const PhosphorEngine::PlacementStateKey &key) const noexcept
Definition EngineTypes.h:46