1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QWAYLANDQTSHELLCHROME_P_H
5#define QWAYLANDQTSHELLCHROME_P_H
6
7#include "qwaylandqtshell.h"
8
9#include <QtCore/qpointer.h>
10#include <QtQuick/private/qquickitem_p.h>
11#include <QtQuick/private/qquickdraghandler_p.h>
12
13#include <QtWaylandCompositor/qwaylandquickshellsurfaceitem.h>
14
15//
16// W A R N I N G
17// -------------
18//
19// This file is not part of the Qt API. It exists purely as an
20// implementation detail. This header file may change from version to
21// version without notice, or even be removed.
22//
23// We mean it.
24//
25
26QT_BEGIN_NAMESPACE
27
28class QWaylandQtShellChromePrivate : public QQuickItemPrivate
29{
30public:
31 void updateDecorationInteraction(quint8 flags, const QQuickHandlerPoint &centroid);
32 QPointF constrainPoint(const QPointF &point) const;
33
34 bool positionSet = false;
35 bool automaticFrameMargins = true;
36 QMargins explicitFrameMargins;
37
38 uint currentState = Qt::WindowNoState;
39 uint defaultFlags = Qt::Window
40 | Qt::WindowMaximizeButtonHint
41 | Qt::WindowMinimizeButtonHint
42 | Qt::WindowCloseButtonHint;
43 uint currentFlags = defaultFlags;
44 QRect restoreGeometry = QRect(0, 0, 100, 100);
45 QRect maximizedRect;
46 QPointer<QWaylandQuickShellSurfaceItem> shellSurfaceItem;
47 QPointer<QWaylandQtShellSurface> shellSurface;
48 QPointer<QWaylandSurface> surface;
49 QPointer<QWaylandQtShell> shell;
50
51 enum class DecorationInteraction : quint8 {
52 None = 0,
53 WestBound = 1,
54 EastBound = 2,
55 NorthBound = 4,
56 SouthBound = 8,
57 TitleBar = 16
58 };
59
60 quint8 decorationInteraction = quint8(DecorationInteraction::None);
61 QPointF decorationInteractionPosition;
62 QRect decorationInteractionGeometry;
63
64 QQuickItem *leftResizeHandle = nullptr;
65 QQuickDragHandler *leftResizeHandleHandler = nullptr;
66 QQuickDragHandler *rightResizeHandleHandler = nullptr;
67 QQuickDragHandler *topResizeHandleHandler = nullptr;
68 QQuickDragHandler *bottomResizeHandleHandler = nullptr;
69 QQuickDragHandler *topLeftResizeHandleHandler = nullptr;
70 QQuickDragHandler *topRightResizeHandleHandler = nullptr;
71 QQuickDragHandler *bottomLeftResizeHandleHandler = nullptr;
72 QQuickDragHandler *bottomRightResizeHandleHandler = nullptr;
73 QQuickDragHandler *titleBarHandler = nullptr;
74
75 QQuickItem *rightResizeHandle = nullptr;
76 QQuickItem *topResizeHandle = nullptr;
77 QQuickItem *bottomResizeHandle = nullptr;
78 QQuickItem *topLeftResizeHandle = nullptr;
79 QQuickItem *bottomLeftResizeHandle = nullptr;
80 QQuickItem *topRightResizeHandle = nullptr;
81 QQuickItem *bottomRightResizeHandle = nullptr;
82 QQuickItem *titleBar = nullptr;
83};
84
85QT_END_NAMESPACE
86
87#endif // QWAYLANDQTSHELLCHROME_P_H
88

source code of qtwayland/src/imports/compositor-extensions/qtshell/qwaylandqtshellchrome_p.h