1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#include <QtWaylandCompositor/QWaylandShellSurface>
5
6/*!
7 * \class QWaylandShellSurfaceTemplate
8 * \inmodule QtWaylandCompositor
9 * \since 5.8
10 * \brief QWaylandShellSurfaceTemplate is a convenience class for creating custom shell surface
11 * classes.
12 *
13 * QWaylandShellSurfaceTemplate is a template class which inherits from QWaylandShellSurface and
14 * is convenience for building custom shell extensions.
15 *
16 * It provides the connection between Qt Wayland Compositor and the class generated by
17 * \c qtwaylandscanner, based on the XML description of the extension protocol.
18 *
19 * It provides two specific pieces of convenience:
20 * \list
21 * \li A reimplementation of \l{QWaylandCompositorExtension::extensionInterface()} which returns
22 * the \c wl_interface pointer for the qtwaylandscanner-generated base class.
23 * \li A static \l{findIn()} function which searches for an instance of the extension in a
24 * provided container, and returns this if it is found.
25 * \endlist
26 *
27 * The same usage pattern applies as for QWaylandCompositorExtensionTemplate.
28 *
29 * \sa { Custom Shell}
30 */
31
32/*!
33 * \fn template <typename T> T *QWaylandShellSurfaceTemplate<T>::findIn(QWaylandObject *container)
34 *
35 * If any instance of the interface has been registered with \a container, this is returned.
36 * Otherwise null is returned. The look-up is based on the generated \c interfaceName() which
37 * matches the interface name in the protocol description.
38 */
39
40
41/*!
42 * \qmltype ShellSurface
43 * \instantiates QWaylandShellSurface
44 * \inqmlmodule QtWayland.Compositor
45 * \since 5.8
46 * \brief Provides a common interface for surface roles specified by shell extensions.
47 *
48 * This interface represents a Wayland surface role given by a Wayland protocol extension that
49 * defines how the WaylandSurface should map onto the screen.
50 *
51 * \note Even though this type contains a very limited API, the properties and signals of the
52 * implementations are named consistently. For example, if you're only using desktop shell
53 * extensions in your compositor, it's safe to access properties such as title, maximized, etc.
54 * directly on the ShellSurface. See the various implementations for additional properties and
55 * signals.
56 *
57 * \sa WaylandSurface, ShellSurfaceItem, WlShellSurface, IviSurface
58 */
59
60/*!
61 * \class QWaylandShellSurface
62 * \inmodule QtWaylandCompositor
63 * \since 5.8
64 * \brief The QWaylandShellSurface class is a common interface for surface roles specified by shell extensions.
65 *
66 * This interface represents a Wayland surface role given by a Wayland protocol extension that
67 * defines how the QWaylandSurface should map onto the screen.
68 *
69 * \sa QWaylandSurface, QWaylandWlShellSurface, QWaylandIviSurface, QWaylandShellSurfaceTemplate
70 */
71
72#if QT_CONFIG(wayland_compositor_quick)
73/*!
74 * \fn QWaylandQuickShellIntegration *QWaylandShellSurface::createIntegration(QWaylandQuickShellSurfaceItem *item)
75 *
76 * Creates a QWaylandQuickShellIntegration for this QWaylandQuickShellSurface. It's called
77 * automatically when \a {item}'s \l {QWaylandQuickShellSurfaceItem::}{shellSurface} is assigned.
78 *
79 * \sa QWaylandQuickShellSurfaceItem
80 */
81#endif
82
83/*!
84 * \qmlproperty enum QtWayland.Compositor::ShellSurface::windowType
85 *
86 * This property holds the window type of the ShellSurface.
87 */
88
89/*!
90 * \property QWaylandShellSurface::windowType
91 *
92 * This property holds the window type of the QWaylandShellSurface.
93 */
94
95QT_BEGIN_NAMESPACE
96
97QT_END_NAMESPACE
98
99#include "moc_qwaylandshellsurface.cpp"
100

source code of qtwayland/src/compositor/extensions/qwaylandshellsurface.cpp