Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qwaylandwindowmanagerintegration.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5#include "qwaylandscreen_p.h"
6#include "qwaylandwindow_p.h"
7#include "qwaylanddisplay_p.h"
9
10#include <stdint.h>
11#include <QtCore/QEvent>
12#include <QtCore/QHash>
13#include <QtCore/QUrl>
14#include <qpa/qplatformnativeinterface.h>
15#include <qpa/qplatformwindow.h>
16#include <QtGui/QtEvents>
17#include <QtGui/QGuiApplication>
18
19#include <QDebug>
20
22
23namespace QtWaylandClient {
24
26public:
31 bool m_showIsFullScreen = false;
32};
33
35 : m_waylandDisplay(waylandDisplay)
36{
37
38}
39
41 : d_ptr(new QWaylandWindowManagerIntegrationPrivate(waylandDisplay))
42{
43 waylandDisplay->addRegistryListener(&wlHandleListenerGlobal, this);
44}
45
47{
48
49}
50
52{
54 return d->m_showIsFullScreen;
55}
56
57void QWaylandWindowManagerIntegration::wlHandleListenerGlobal(void *data, wl_registry *registry, uint32_t id, const QString &interface, uint32_t version)
58{
59 Q_UNUSED(version);
60 if (interface == QStringLiteral("qt_windowmanager"))
61 static_cast<QWaylandWindowManagerIntegration *>(data)->init(registry, id, 1);
62}
63
65{
67 d->m_showIsFullScreen = showIsFullScreen;
68}
69
71{
73}
74
75void QWaylandWindowManagerIntegration::openUrl_helper(const QUrl &url)
76{
77 Q_ASSERT(isInitialized());
79
80 static const int chunkSize = 128;
81 while (!data.isEmpty()) {
82 QString chunk = data.left(chunkSize);
83 data = data.mid(chunkSize);
84 if (chunk.at(chunk.size() - 1).isHighSurrogate() && !data.isEmpty()) {
85 chunk.append(data.at(0));
86 data = data.mid(1);
87 }
88 open_url(!data.isEmpty(), chunk);
89 }
90}
91
93{
94 if (isInitialized()) {
95 openUrl_helper(url);
96 return true;
97 }
99}
100
102{
103 if (isInitialized()) {
104 openUrl_helper(url);
105 return true;
106 }
108}
109
111{
112 if (window && window->handle()) {
113 auto shellSurface = static_cast<QWaylandWindow *>(window->handle())->shellSurface();
114 if (shellSurface) {
115 const QString handle = shellSurface->externWindowHandle();
116 return QLatin1String("wayland:") + handle;
117 }
118 }
119 return QString();
120}
121}
122
124
125#include "moc_qwaylandwindowmanagerintegration_p.cpp"
constexpr bool isHighSurrogate() const noexcept
Returns true if the QChar is the high part of a UTF16 surrogate (for example if its code point is in ...
Definition qchar.h:479
static void quit()
\threadsafe
bool openDocument(const QUrl &url) override
bool openUrl(const QUrl &url) override
\inmodule QtCore
Definition qhash.h:818
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
qsizetype size() const
Returns the number of characters in this string.
Definition qstring.h:182
QString mid(qsizetype position, qsizetype n=-1) const
Returns a string that contains n characters of this string, starting at the specified position index.
Definition qstring.cpp:5204
const QChar at(qsizetype i) const
Returns the character at the given index position in the string.
Definition qstring.h:1079
QString & append(QChar c)
Definition qstring.cpp:3227
QString left(qsizetype n) const
Returns a substring that contains the n leftmost characters of the string.
Definition qstring.cpp:5161
\inmodule QtCore
Definition qurl.h:94
QString toString(FormattingOptions options=FormattingOptions(PrettyDecoded)) const
Returns a string representation of the URL.
Definition qurl.cpp:2828
\inmodule QtGui
Definition qwindow.h:63
void addRegistryListener(RegistryListener listener, void *data)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char * interface
GLuint64 GLenum void * handle
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
QLatin1StringView QLatin1String
Definition qstringfwd.h:31
#define QStringLiteral(str)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_UNUSED(x)
QUrl url("example.com")
[constructor-url-reference]
aWidget window() -> setWindowTitle("New Window Title")
[2]