summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dependencies.yaml6
-rw-r--r--licenseRule.json124
-rw-r--r--src/client/CMakeLists.txt1
-rw-r--r--src/client/doc/src/cmake/qt_generate_wayland_protocol_client_sources.qdoc3
-rw-r--r--src/client/qwaylanddisplay.cpp15
-rw-r--r--src/client/qwaylanddisplay_p.h3
-rw-r--r--src/client/qwaylandinputdevice.cpp6
-rw-r--r--src/client/qwaylandintegration.cpp7
-rw-r--r--src/client/qwaylandintegration_p.h2
-rw-r--r--src/client/qwaylandplatformservices.cpp50
-rw-r--r--src/client/qwaylandplatformservices_p.h48
-rw-r--r--src/client/qwaylandwindow.cpp2
-rw-r--r--src/client/qwaylandwindowmanagerintegration.cpp70
-rw-r--r--src/client/qwaylandwindowmanagerintegration_p.h25
-rw-r--r--src/compositor/extensions/qwaylandtextinputmanagerv3.cpp2
-rw-r--r--src/compositor/extensions/qwaylandtextinputmanagerv3.h2
-rw-r--r--src/compositor/extensions/qwaylandtextinputmanagerv3_p.h2
-rw-r--r--src/compositor/extensions/qwaylandtextinputv3.cpp2
-rw-r--r--src/compositor/extensions/qwaylandtextinputv3.h2
-rw-r--r--src/compositor/extensions/qwaylandtextinputv3_p.h2
-rw-r--r--src/qtwaylandscanner/qtwaylandscanner.cpp4
-rw-r--r--tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp2
22 files changed, 273 insertions, 107 deletions
diff --git a/dependencies.yaml b/dependencies.yaml
index 7a4f9870c..0d15a2061 100644
--- a/dependencies.yaml
+++ b/dependencies.yaml
@@ -1,10 +1,10 @@
dependencies:
../qtbase:
- ref: f0633e823796775d2c019363ca4f1cb008851402
+ ref: 7c128f8866ff174f7fe8ff59399f37330995a970
required: true
../qtdeclarative:
- ref: 1635ca51f018bbb8d1ea5069a7f2ed8503be8cb9
+ ref: 8bd1fd8c891319dc715ee93a9d7575654130c0f9
required: false
../qtsvg:
- ref: 71c6161d45db2cd6d2b809db5807ded9bde81570
+ ref: ccb00b0ca4e6e9345ad8b585aa3b3fd0e1f31726
required: false
diff --git a/licenseRule.json b/licenseRule.json
new file mode 100644
index 000000000..be2d93028
--- /dev/null
+++ b/licenseRule.json
@@ -0,0 +1,124 @@
+[
+ {
+ "comment" : ["file_pattern_ending: strings matched against the end of a file name.",
+ "location keys: regular expression matched against the beginning of",
+ "the file path (relative to the git submodule root).",
+ "spdx: list of SPDX-License-Expression's allowed in the matching files.",
+ "-------------------------------------------------------",
+ "Files with the following endings are Build System licensed,",
+ "unless they are examples",
+ "Files with other endings can also be build system files"
+ ],
+ "file_pattern_ending" : ["CMakeLists.txt", ".cmake", ".pro", ".pri", ".prf",
+ "configure", "configure.bat", "cmake.in", "plist.in", "CMakeLists.txt.in"],
+ "location" : {
+ "" : {
+ "comment" : "Default",
+ "file type" : "build system",
+ "spdx" : ["BSD-3-Clause"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Example takes precedence",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ }
+ }
+ },
+ {
+ "comments" : ["Files with the following endings are Tool licensed,",
+ "unless they are examples.",
+ "Files with other endings can also be tool files."],
+ "file_pattern_ending" : [".sh", ".py", ".pl", ".bat", ".ps1"],
+ "location" :{
+ "" : {
+ "comment" : "Default",
+ "file type" : "tools and utils",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Example takes precedence",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ }
+ }
+ },
+ {
+ "comment" : "Files with the following endings are Documentation licensed.",
+ "file_pattern_ending" : [".qdoc", ".qdocinc" , ".qdocconf", ".txt", "README", "qt_attribution.json"],
+ "location" :{
+ "" : {
+ "comment" : "",
+ "file type" : "documentation",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only"]
+ }
+ }
+ },
+ {
+ "comment" : ["All other files",
+ "The licensing is defined only by the file location in the Qt module repository.",
+ "NO <file_pattern_ending> key for this case!",
+ "This needs to be the last entry of the file."],
+ "location" : {
+ "" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "src/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "src/plugins/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "src/plugins/hardwareintegration/compositor/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "src/shared/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "src/imports/texture-sharing" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "src/qtwaylandscanner/qtwaylandscanner\\.cpp" : {
+ "comment" : "Default",
+ "file type" : "tools and utils",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0"]
+ },
+ "src/client/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "src/hardwareintegration/client/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "tests/" : {
+ "comment" : "Default",
+ "file type" : "test",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Default",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ },
+ "config\\.tests/" : {
+ "comment" : "Default",
+ "file type" : "build system",
+ "spdx" : ["BSD-3-Clause"]
+ }
+ }
+ }
+]
diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt
index 4916af81e..300fd4ffa 100644
--- a/src/client/CMakeLists.txt
+++ b/src/client/CMakeLists.txt
@@ -42,6 +42,7 @@ qt_internal_add_module(WaylandClient
qwaylandinputmethodcontext.cpp qwaylandinputmethodcontext_p.h
qwaylandintegration.cpp qwaylandintegration_p.h
qwaylandnativeinterface.cpp qwaylandnativeinterface_p.h
+ qwaylandplatformservices.cpp qwaylandplatformservices_p.h
qwaylandpointergestures.cpp qwaylandpointergestures_p.h
qwaylandqtkey.cpp qwaylandqtkey_p.h
qwaylandscreen.cpp qwaylandscreen_p.h
diff --git a/src/client/doc/src/cmake/qt_generate_wayland_protocol_client_sources.qdoc b/src/client/doc/src/cmake/qt_generate_wayland_protocol_client_sources.qdoc
index 43f448fbd..0abd14d4e 100644
--- a/src/client/doc/src/cmake/qt_generate_wayland_protocol_client_sources.qdoc
+++ b/src/client/doc/src/cmake/qt_generate_wayland_protocol_client_sources.qdoc
@@ -37,7 +37,8 @@ code in C and C++ for implementing the protocols, and the resulting files will b
of the \c target.
The options \c{PUBLIC_CODE} and \c{PRIVATE_CODE} correspond to the \c{public-code} and
-\c{private-code} options of \c{wayland-scanner}. For backwards compatibility \c{PUBLIC_CODE} is the
+\c{private-code} options of \c{wayland-scanner}. \c{PUBLIC_CODE} will cause the symbols in the
+code that is generated by \c{wayland-scanner} to be exported. For backwards compatibility \c{PUBLIC_CODE} is the
default but generally \c{PRIVATE_CODE} is strongly recommended.
qt_generate_wayland_protocol_client_sources() will trigger generation of the files needed to
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index 265f0bb3f..e6ed0772f 100644
--- a/src/client/qwaylanddisplay.cpp
+++ b/src/client/qwaylanddisplay.cpp
@@ -312,7 +312,7 @@ QWaylandClientBufferIntegration * QWaylandDisplay::clientBufferIntegration() con
QWaylandWindowManagerIntegration *QWaylandDisplay::windowManagerIntegration() const
{
- return mWindowManagerIntegration.data();
+ return mGlobals.windowManagerIntegration.get();
}
QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
@@ -335,8 +335,6 @@ void QWaylandDisplay::setupConnection()
struct ::wl_registry *registry = wl_display_get_registry(mDisplay);
init(registry);
- mWindowManagerIntegration.reset(new QWaylandWindowManagerIntegration(this));
-
#if QT_CONFIG(xkbcommon)
mXkbContext.reset(xkb_context_new(XKB_CONTEXT_NO_FLAGS));
if (!mXkbContext)
@@ -373,7 +371,6 @@ QWaylandDisplay::~QWaylandDisplay(void)
// Reset the globals manually since they need to be destroyed before the wl_display
mGlobals = {};
- mWindowManagerIntegration.reset();
if (object())
wl_registry_destroy(object());
@@ -781,6 +778,9 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
mGlobals.xdgToplevelDragManager.reset(
new WithDestructor<QtWayland::xdg_toplevel_drag_manager_v1,
xdg_toplevel_drag_manager_v1_destroy>(registry, id, 1));
+ } else if (interface == QLatin1String(QtWayland::qt_windowmanager::interface()->name)) {
+ mGlobals.windowManagerIntegration.reset(
+ new QWaylandWindowManagerIntegration(this, id, version));
}
mRegistryGlobals.append(RegistryGlobal(id, interface, version, registry));
@@ -891,7 +891,12 @@ bool QWaylandDisplay::supportsWindowDecoration() const
if (disabled)
return false;
- static bool integrationSupport = clientBufferIntegration() && clientBufferIntegration()->supportsWindowDecoration();
+ // Don't initialize client buffer integration just to check whether it can have a decoration.
+ if (!mWaylandIntegration->mClientBufferIntegrationInitialized)
+ return true;
+
+ // We can do software-rendered decorations, only disable them if the integration explicitly says it can't.
+ static bool integrationSupport = !clientBufferIntegration() || clientBufferIntegration()->supportsWindowDecoration();
return integrationSupport;
}
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
index 5b564c8d7..2fd176d84 100644
--- a/src/client/qwaylanddisplay_p.h
+++ b/src/client/qwaylanddisplay_p.h
@@ -316,8 +316,6 @@ private:
QScopedPointer<QWaylandCursor> mCursor;
#endif
- QScopedPointer<QWaylandWindowManagerIntegration> mWindowManagerIntegration;
-
struct GlobalHolder
{
std::unique_ptr<QtWayland::wl_compositor> compositor;
@@ -346,6 +344,7 @@ private:
std::unique_ptr<QtWayland::wp_fractional_scale_manager_v1> fractionalScaleManager;
std::unique_ptr<QtWayland::wp_cursor_shape_manager_v1> cursorShapeManager;
std::unique_ptr<QtWayland::xdg_toplevel_drag_manager_v1> xdgToplevelDragManager;
+ std::unique_ptr<QWaylandWindowManagerIntegration> windowManagerIntegration;
} mGlobals;
int mFd = -1;
int mWritableNotificationFd = -1;
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 1df7ac483..ce04971ba 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -892,8 +892,10 @@ public:
WheelEvent(QWaylandWindow *surface, Qt::ScrollPhase phase, ulong timestamp, const QPointF &local,
const QPointF &global, const QPoint &pixelDelta, const QPoint &angleDelta,
Qt::MouseEventSource source, Qt::KeyboardModifiers modifiers, bool inverted)
- : QWaylandPointerEvent(QEvent::Wheel, phase, surface, timestamp,
- local, global, pixelDelta, angleDelta, source, modifiers, inverted)
+ : QWaylandPointerEvent(QEvent::Wheel, phase, surface, timestamp, local, global,
+ modifiers & Qt::AltModifier ? pixelDelta.transposed() : pixelDelta,
+ modifiers & Qt::AltModifier ? angleDelta.transposed() : angleDelta,
+ source, modifiers, inverted)
{
}
};
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index eb19be45d..c5eb1e96a 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -15,6 +15,7 @@
#endif
#include "qwaylanddnd_p.h"
#include "qwaylandwindowmanagerintegration_p.h"
+#include "qwaylandplatformservices_p.h"
#include "qwaylandscreen_p.h"
#include "qwaylandcursor_p.h"
@@ -83,6 +84,7 @@ QWaylandIntegration::QWaylandIntegration()
#endif
{
mDisplay.reset(new QWaylandDisplay(this));
+ mPlatformServices.reset(new QWaylandPlatformServices(mDisplay.data()));
QWaylandWindow::fixedToplevelPositions =
!qEnvironmentVariableIsSet("QT_WAYLAND_DISABLE_FIXED_POSITIONS");
@@ -246,7 +248,7 @@ QPlatformAccessibility *QWaylandIntegration::accessibility() const
QPlatformServices *QWaylandIntegration::services() const
{
- return mDisplay->windowManagerIntegration();
+ return mPlatformServices.data();
}
QWaylandDisplay *QWaylandIntegration::display() const
@@ -525,8 +527,7 @@ void QWaylandIntegration::reset()
void QWaylandIntegration::setApplicationBadge(qint64 number)
{
- auto unixServices = mDisplay->windowManagerIntegration();
- unixServices->setApplicationBadge(number);
+ mPlatformServices->setApplicationBadge(number);
}
}
diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h
index 81d1ae6d2..f26cc3d29 100644
--- a/src/client/qwaylandintegration_p.h
+++ b/src/client/qwaylandintegration_p.h
@@ -34,6 +34,7 @@ class QWaylandInputDeviceIntegration;
class QWaylandInputDevice;
class QWaylandScreen;
class QWaylandCursor;
+class QWaylandPlatformServices;
class Q_WAYLANDCLIENT_EXPORT QWaylandIntegration : public QPlatformIntegration
{
@@ -136,6 +137,7 @@ private:
#if QT_CONFIG(accessibility)
mutable QScopedPointer<QPlatformAccessibility> mAccessibility;
#endif
+ QScopedPointer<QWaylandPlatformServices> mPlatformServices;
QMutex mClientBufferInitLock;
bool mClientBufferIntegrationInitialized = false;
bool mServerBufferIntegrationInitialized = false;
diff --git a/src/client/qwaylandplatformservices.cpp b/src/client/qwaylandplatformservices.cpp
new file mode 100644
index 000000000..14556d282
--- /dev/null
+++ b/src/client/qwaylandplatformservices.cpp
@@ -0,0 +1,50 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qwaylandplatformservices_p.h"
+#include "qwaylandwindow_p.h"
+#include "qwaylanddisplay_p.h"
+#include "qwaylandshellsurface_p.h"
+#include "qwaylandwindowmanagerintegration_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace QtWaylandClient {
+
+QWaylandPlatformServices::QWaylandPlatformServices(QWaylandDisplay *display)
+ : m_display(display) { }
+
+bool QWaylandPlatformServices::openUrl(const QUrl &url)
+{
+ if (auto windowManagerIntegration = m_display->windowManagerIntegration()) {
+ windowManagerIntegration->openUrl(url);
+ return true;
+ }
+ return QGenericUnixServices::openUrl(url);
+}
+
+bool QWaylandPlatformServices::openDocument(const QUrl &url)
+{
+ if (auto windowManagerIntegration = m_display->windowManagerIntegration()) {
+ windowManagerIntegration->openUrl(url);
+ return true;
+ }
+ return QGenericUnixServices::openDocument(url);
+}
+
+QString QWaylandPlatformServices::portalWindowIdentifier(QWindow *window)
+{
+ if (window && window->handle()) {
+ auto shellSurface = static_cast<QWaylandWindow *>(window->handle())->shellSurface();
+ if (shellSurface) {
+ const QString handle = shellSurface->externWindowHandle();
+ return QLatin1String("wayland:") + handle;
+ }
+ }
+ return QString();
+}
+} // namespace QtWaylandClient
+
+QT_END_NAMESPACE
+
+#include "moc_qwaylandplatformservices_p.cpp"
diff --git a/src/client/qwaylandplatformservices_p.h b/src/client/qwaylandplatformservices_p.h
new file mode 100644
index 000000000..6106a9018
--- /dev/null
+++ b/src/client/qwaylandplatformservices_p.h
@@ -0,0 +1,48 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QWAYLANDPLATFORMSERVICES_H
+#define QWAYLANDPLATFORMSERVICES_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/QObject>
+
+#include <QtGui/private/qgenericunixservices_p.h>
+
+#include <QtWaylandClient/private/qwayland-qt-windowmanager.h>
+#include <QtWaylandClient/qtwaylandclientglobal.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QtWaylandClient {
+
+class QWaylandDisplay;
+
+class Q_WAYLANDCLIENT_EXPORT QWaylandPlatformServices : public QGenericUnixServices
+{
+public:
+ explicit QWaylandPlatformServices(QWaylandDisplay *waylandDisplay);
+
+ bool openUrl(const QUrl &url) override;
+ bool openDocument(const QUrl &url) override;
+ QString portalWindowIdentifier(QWindow *window) override;
+
+private:
+ QWaylandDisplay *m_display;
+};
+
+QT_END_NAMESPACE
+
+} // namespace QtWaylandClient
+
+#endif // QWAYLANDPLATFORMSERVICES_H
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 081110f83..73fb331eb 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -12,7 +12,7 @@
#include "qwaylandshellsurface_p.h"
#include "qwaylandsubsurface_p.h"
#include "qwaylandabstractdecoration_p.h"
-#include "qwaylandwindowmanagerintegration_p.h"
+#include "qwaylandplatformservices_p.h"
#include "qwaylandnativeinterface_p.h"
#include "qwaylanddecorationfactory_p.h"
#include "qwaylandshmbackingstore_p.h"
diff --git a/src/client/qwaylandwindowmanagerintegration.cpp b/src/client/qwaylandwindowmanagerintegration.cpp
index 149190420..9668491d2 100644
--- a/src/client/qwaylandwindowmanagerintegration.cpp
+++ b/src/client/qwaylandwindowmanagerintegration.cpp
@@ -22,49 +22,25 @@ QT_BEGIN_NAMESPACE
namespace QtWaylandClient {
-class QWaylandWindowManagerIntegrationPrivate {
-public:
- QWaylandWindowManagerIntegrationPrivate(QWaylandDisplay *waylandDisplay);
- bool m_blockPropertyUpdates = false;
- QWaylandDisplay *m_waylandDisplay = nullptr;
- QHash<QWindow*, QVariantMap> m_queuedProperties;
- bool m_showIsFullScreen = false;
-};
-
-QWaylandWindowManagerIntegrationPrivate::QWaylandWindowManagerIntegrationPrivate(QWaylandDisplay *waylandDisplay)
- : m_waylandDisplay(waylandDisplay)
-{
-}
-
-QWaylandWindowManagerIntegration::QWaylandWindowManagerIntegration(QWaylandDisplay *waylandDisplay)
- : d_ptr(new QWaylandWindowManagerIntegrationPrivate(waylandDisplay))
+QWaylandWindowManagerIntegration::QWaylandWindowManagerIntegration(QWaylandDisplay *waylandDisplay,
+ uint id, uint version)
+ : QtWayland::qt_windowmanager(waylandDisplay->object(), id, version)
{
- waylandDisplay->addRegistryListener(&wlHandleListenerGlobal, this);
}
QWaylandWindowManagerIntegration::~QWaylandWindowManagerIntegration()
{
- if (object())
- qt_windowmanager_destroy(object());
+ qt_windowmanager_destroy(object());
}
bool QWaylandWindowManagerIntegration::showIsFullScreen() const
{
- Q_D(const QWaylandWindowManagerIntegration);
- return d->m_showIsFullScreen;
-}
-
-void QWaylandWindowManagerIntegration::wlHandleListenerGlobal(void *data, wl_registry *registry, uint32_t id, const QString &interface, uint32_t version)
-{
- Q_UNUSED(version);
- if (interface == QStringLiteral("qt_windowmanager"))
- static_cast<QWaylandWindowManagerIntegration *>(data)->init(registry, id, 1);
+ return m_showIsFullScreen;
}
void QWaylandWindowManagerIntegration::windowmanager_hints(int32_t showIsFullScreen)
{
- Q_D(QWaylandWindowManagerIntegration);
- d->m_showIsFullScreen = showIsFullScreen;
+ m_showIsFullScreen = showIsFullScreen;
}
void QWaylandWindowManagerIntegration::windowmanager_quit()
@@ -72,11 +48,9 @@ void QWaylandWindowManagerIntegration::windowmanager_quit()
QGuiApplication::quit();
}
-void QWaylandWindowManagerIntegration::openUrl_helper(const QUrl &url)
+void QWaylandWindowManagerIntegration::openUrl(const QUrl &url)
{
- Q_ASSERT(isInitialized());
QString data = url.toString();
-
static const int chunkSize = 128;
while (!data.isEmpty()) {
QString chunk = data.left(chunkSize);
@@ -88,36 +62,6 @@ void QWaylandWindowManagerIntegration::openUrl_helper(const QUrl &url)
open_url(!data.isEmpty(), chunk);
}
}
-
-bool QWaylandWindowManagerIntegration::openUrl(const QUrl &url)
-{
- if (isInitialized()) {
- openUrl_helper(url);
- return true;
- }
- return QGenericUnixServices::openUrl(url);
-}
-
-bool QWaylandWindowManagerIntegration::openDocument(const QUrl &url)
-{
- if (isInitialized()) {
- openUrl_helper(url);
- return true;
- }
- return QGenericUnixServices::openDocument(url);
-}
-
-QString QWaylandWindowManagerIntegration::portalWindowIdentifier(QWindow *window)
-{
- if (window && window->handle()) {
- auto shellSurface = static_cast<QWaylandWindow *>(window->handle())->shellSurface();
- if (shellSurface) {
- const QString handle = shellSurface->externWindowHandle();
- return QLatin1String("wayland:") + handle;
- }
- }
- return QString();
-}
}
QT_END_NAMESPACE
diff --git a/src/client/qwaylandwindowmanagerintegration_p.h b/src/client/qwaylandwindowmanagerintegration_p.h
index 18eb171b6..be06d68ee 100644
--- a/src/client/qwaylandwindowmanagerintegration_p.h
+++ b/src/client/qwaylandwindowmanagerintegration_p.h
@@ -16,9 +16,6 @@
//
#include <QtCore/QObject>
-#include <QtCore/QScopedPointer>
-
-#include <QtGui/private/qgenericunixservices_p.h>
#include <QtWaylandClient/private/qwayland-qt-windowmanager.h>
#include <QtWaylandClient/qtwaylandclientglobal.h>
@@ -27,35 +24,27 @@ QT_BEGIN_NAMESPACE
namespace QtWaylandClient {
-class QWaylandWindow;
class QWaylandDisplay;
class QWaylandWindowManagerIntegrationPrivate;
-class Q_WAYLANDCLIENT_EXPORT QWaylandWindowManagerIntegration : public QObject, public QGenericUnixServices, public QtWayland::qt_windowmanager
+class Q_WAYLANDCLIENT_EXPORT QWaylandWindowManagerIntegration : public QtWayland::qt_windowmanager
{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QWaylandWindowManagerIntegration)
+
public:
- explicit QWaylandWindowManagerIntegration(QWaylandDisplay *waylandDisplay);
- ~QWaylandWindowManagerIntegration() override;
+ explicit QWaylandWindowManagerIntegration(QWaylandDisplay *waylandDisplay, uint id,
+ uint version);
+ ~QWaylandWindowManagerIntegration();
- bool openUrl(const QUrl &url) override;
- bool openDocument(const QUrl &url) override;
- QString portalWindowIdentifier(QWindow *window) override;
+ void openUrl(const QUrl &url);
bool showIsFullScreen() const;
private:
- static void wlHandleListenerGlobal(void *data, wl_registry *registry, uint32_t id,
- const QString &interface, uint32_t version);
-
- QScopedPointer<QWaylandWindowManagerIntegrationPrivate> d_ptr;
-
void windowmanager_hints(int32_t showIsFullScreen) override;
void windowmanager_quit() override;
- void openUrl_helper(const QUrl &url);
+ bool m_showIsFullScreen = false;
};
QT_END_NAMESPACE
diff --git a/src/compositor/extensions/qwaylandtextinputmanagerv3.cpp b/src/compositor/extensions/qwaylandtextinputmanagerv3.cpp
index 5dbc78459..e9ad25bff 100644
--- a/src/compositor/extensions/qwaylandtextinputmanagerv3.cpp
+++ b/src/compositor/extensions/qwaylandtextinputmanagerv3.cpp
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qwaylandtextinputmanagerv3.h"
#include "qwaylandtextinputmanagerv3_p.h"
diff --git a/src/compositor/extensions/qwaylandtextinputmanagerv3.h b/src/compositor/extensions/qwaylandtextinputmanagerv3.h
index 1f3051446..a71fdcbaa 100644
--- a/src/compositor/extensions/qwaylandtextinputmanagerv3.h
+++ b/src/compositor/extensions/qwaylandtextinputmanagerv3.h
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QWAYLANDTEXTINPUTMANAGERV3_H
#define QWAYLANDTEXTINPUTMANAGERV3_H
diff --git a/src/compositor/extensions/qwaylandtextinputmanagerv3_p.h b/src/compositor/extensions/qwaylandtextinputmanagerv3_p.h
index c35b19b90..5559a4418 100644
--- a/src/compositor/extensions/qwaylandtextinputmanagerv3_p.h
+++ b/src/compositor/extensions/qwaylandtextinputmanagerv3_p.h
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QWAYLANDTEXTINPUTMANAGERV3_P_H
#define QWAYLANDTEXTINPUTMANAGERV3_P_H
diff --git a/src/compositor/extensions/qwaylandtextinputv3.cpp b/src/compositor/extensions/qwaylandtextinputv3.cpp
index 3da89e630..cd1896068 100644
--- a/src/compositor/extensions/qwaylandtextinputv3.cpp
+++ b/src/compositor/extensions/qwaylandtextinputv3.cpp
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qwaylandtextinputv3.h"
#include "qwaylandtextinputv3_p.h"
diff --git a/src/compositor/extensions/qwaylandtextinputv3.h b/src/compositor/extensions/qwaylandtextinputv3.h
index 1305bddfb..869238631 100644
--- a/src/compositor/extensions/qwaylandtextinputv3.h
+++ b/src/compositor/extensions/qwaylandtextinputv3.h
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QWAYLANDTEXTINPUTV3_H
#define QWAYLANDTEXTINPUTV3_H
diff --git a/src/compositor/extensions/qwaylandtextinputv3_p.h b/src/compositor/extensions/qwaylandtextinputv3_p.h
index ed43b88c6..267d14125 100644
--- a/src/compositor/extensions/qwaylandtextinputv3_p.h
+++ b/src/compositor/extensions/qwaylandtextinputv3_p.h
@@ -1,5 +1,5 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QWAYLANDTEXTINPUTV3_P_H
#define QWAYLANDTEXTINPUTV3_P_H
diff --git a/src/qtwaylandscanner/qtwaylandscanner.cpp b/src/qtwaylandscanner/qtwaylandscanner.cpp
index 6bdcb8da5..7f2769fa9 100644
--- a/src/qtwaylandscanner/qtwaylandscanner.cpp
+++ b/src/qtwaylandscanner/qtwaylandscanner.cpp
@@ -1,5 +1,5 @@
// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <QCoreApplication>
#include <QFile>
@@ -438,7 +438,7 @@ bool Scanner::process()
return false;
printf("// This file was generated by qtwaylandscanner\n");
- printf("// source file is %s\n\n", qPrintable(m_protocolFilePath));
+ printf("// source file is %s\n\n", qPrintable(QFileInfo(file).fileName()));
for (auto b : std::as_const(m_includes))
printf("#include %s\n", b.constData());
diff --git a/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp b/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp
index 54b15b3bf..5ee856944 100644
--- a/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp
+++ b/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp
@@ -111,7 +111,7 @@ public:
explicit XdgDecorationCompositor()
{
exec([this] {
- m_config.autoConfigure = true;
+ m_config.autoConfigure = false;
add<XdgDecorationManagerV1>(xdgDecorationVersion);
});
}