Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qwaylandquickoutput.cpp
Go to the documentation of this file.
1// Copyright (C) 2017 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2// Copyright (C) 2017 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
8
10
14
19
21{
23
24 QQuickWindow *quickWindow = qobject_cast<QQuickWindow *>(window());
25 if (!quickWindow) {
26 qWarning("Initialization error: Could not locate QQuickWindow on initializing QWaylandQuickOutput %p.\n", this);
27 return;
28 }
32
34 this, &QWaylandQuickOutput::doFrameCallbacks);
35}
36
40
42{
43 if (!compositor()) {
44 for (QObject *p = parent(); p != nullptr; p = p->parent()) {
45 if (auto c = qobject_cast<QWaylandCompositor *>(p)) {
47 break;
48 }
49 }
50 }
51}
52
54{
55 if (!m_updateScheduled) {
56 //don't qobject_cast since we have verified the type in initialize
57 static_cast<QQuickWindow *>(window())->update();
58 m_updateScheduled = true;
59 }
60}
61
71{
72 return m_automaticFrameCallback;
73}
74
76{
77 if (m_automaticFrameCallback == automatic)
78 return;
79
80 m_automaticFrameCallback = automatic;
82}
83
85{
86 if (!rootItem->isEnabled() || !rootItem->isVisible())
87 return nullptr;
88
89 QList<QQuickItem *> paintOrderItems = QQuickItemPrivate::get(rootItem)->paintOrderChildItems();
90 auto negativeZStart = paintOrderItems.crend();
91 for (auto it = paintOrderItems.crbegin(); it != paintOrderItems.crend(); ++it) {
92 if ((*it)->z() < 0) {
93 negativeZStart = it;
94 break;
95 }
97 if (item)
98 return item;
99 }
100
102 return rootItem;
103
104 for (auto it = negativeZStart; it != paintOrderItems.crend(); ++it) {
106 if (item)
107 return item;
108 }
109
110 return nullptr;
111}
112
114{
115 QQuickWindow *quickWindow = qobject_cast<QQuickWindow *>(window());
116 if (!quickWindow)
117 return nullptr;
118
119 return clickableItemAtPosition(quickWindow->contentItem(), position);
120}
121
126{
127 m_updateScheduled = false;
128
129 if (!compositor())
130 return;
131
132 frameStarted();
133}
134
135void QWaylandQuickOutput::doFrameCallbacks()
136{
137 if (m_automaticFrameCallback)
139}
141
142#include "moc_qwaylandquickoutput.cpp"
\inmodule QtCore
Definition qobject.h:103
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
\inmodule QtCore\reentrant
Definition qpoint.h:217
static QQuickItemPrivate * get(QQuickItem *item)
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:63
Qt::MouseButtons acceptedMouseButtons() const
Returns the mouse buttons accepted by this item.
Q_INVOKABLE QPointF mapToItem(const QQuickItem *item, const QPointF &point) const
Maps the given point in this item's coordinate system to the equivalent point within item's coordinat...
bool isVisible() const
virtual Q_INVOKABLE bool contains(const QPointF &point) const
\qmlmethod bool QtQuick::Item::contains(point point)
bool isEnabled() const
\qmltype Window \instantiates QQuickWindow \inqmlmodule QtQuick
void beforeSynchronizing()
This signal is emitted before the scene graph is synchronized with the QML state.
QQuickItem * contentItem
\qmlattachedproperty Item Window::contentItem
void afterRendering()
\qmlsignal QtQuick::Window::beforeRendering()
\qmltype WaylandCompositor \instantiates QWaylandCompositor \inqmlmodule QtWayland....
\qmltype WaylandOutput \instantiates QWaylandOutput \inqmlmodule QtWayland.Compositor
QPoint position
\qmlproperty point QtWayland.Compositor::WaylandOutput::position
void frameStarted()
Informs QWaylandOutput that a frame has started.
virtual void initialize()
void setCompositor(QWaylandCompositor *compositor)
void sendFrameCallbacks()
Sends pending frame callbacks.
QWindow * window
\qmlproperty Window QtWayland.Compositor::WaylandOutput::window
QWaylandCompositor * compositor
QQuickItem * pickClickableItem(const QPointF &position)
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
void update() override
Schedules a QEvent::UpdateRequest to be delivered to the QWaylandOutput's \l{window()}{window}.
void setAutomaticFrameCallback(bool automatic)
void automaticFrameCallbackChanged()
void classBegin() override
Invoked after class creation, but before any properties have been set.
\inmodule QtGui
Definition qwindow.h:63
QSet< QString >::iterator it
Combined button and popup list for selecting options.
@ NoButton
Definition qnamespace.h:57
@ DirectConnection
#define qWarning
Definition qlogging.h:166
static QOpenGLCompositor * compositor
const GLubyte * c
GLfloat GLfloat p
[1]
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
const QQuickItem * rootItem(const I &item)
static QQuickItem * clickableItemAtPosition(QQuickItem *rootItem, const QPointF &position)
QGraphicsItem * item
aWidget window() -> setWindowTitle("New Window Title")
[2]