KWin
Loading...
Searching...
No Matches
placementtracker.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2022 Xaver Hugl <xaver.hugl@gmail.com>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10
11#include "utils/common.h"
12
13#include <QHash>
14#include <QList>
15#include <QRect>
16#include <QString>
17#include <QUuid>
18
19namespace KWin
20{
21
22class Window;
23class Workspace;
24
25class PlacementTracker : public QObject
26{
27 Q_OBJECT
28public:
30
31 void add(Window *window);
32 void remove(Window *window);
33
34 void restore(const QString &key);
35 void init(const QString &key);
36
37 void inhibit();
38 void uninhibit();
39
40private:
41 struct WindowData
42 {
43 QUuid outputUuid;
44 QRectF geometry;
45 MaximizeMode maximize;
46 QuickTileMode quickTile;
47 QRectF geometryRestore;
48 bool fullscreen;
49 QRectF fullscreenGeometryRestore;
50 uint32_t interactiveMoveResizeCount;
51 };
52
53 void saveGeometry(Window *window);
54 void saveInteractionCounter(Window *window);
55 void saveMaximize(Window *window);
56 void saveQuickTile(Window *window);
57 void saveFullscreen(Window *window);
58 WindowData dataForWindow(Window *window) const;
59
60 QList<Window *> m_savedWindows;
61 QHash<QString, QHash<Window *, WindowData>> m_data;
62 QHash<Window *, WindowData> m_lastRestoreData;
63 QString m_currentKey;
64 int m_inhibitCount = 0;
65 Workspace *const m_workspace;
66};
67
68}
void add(Window *window)
void remove(Window *window)
void restore(const QString &key)
void init(const QString &key)
PlacementTracker(Workspace *workspace)
MaximizeMode
Definition common.h:74
Workspace * workspace()
Definition workspace.h:830