diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2020-07-06 09:01:50 +0200 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2020-07-09 13:00:15 +0200 |
commit | 6af7bcc1deae525871fb116003112edf3d8f0006 (patch) | |
tree | e3b4271afb7529ea067733c4b2ce165eddd31e65 | |
parent | 4f422bcb445123562c8b07e69b07b474cba58254 (diff) | |
download | qtwayland-6af7bcc1deae525871fb116003112edf3d8f0006.tar.gz |
Move XdgShell types into their own import
We want extensions to be accessible from submodules to
QtWayland.Compositor, since this makes it easier to
deprecate and remove things as they become outdated.
[ChangeLog][XdgShell] Moved XdgShell types from QML
import QtWayland.Compositor to QtWayland.Compositor.XdgShell.
Task-number: QTBUG-68840
Change-Id: I74bf6e31dad1a05151f547ea5e5ff043128512cd
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
26 files changed, 397 insertions, 255 deletions
diff --git a/examples/wayland/hwlayer-compositor/main.qml b/examples/wayland/hwlayer-compositor/main.qml index 73478234..c13223aa 100644 --- a/examples/wayland/hwlayer-compositor/main.qml +++ b/examples/wayland/hwlayer-compositor/main.qml @@ -52,6 +52,7 @@ import QtQuick import QtQuick.Window import QtQuick.Controls 2.2 import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandCompositor { WaylandOutput { diff --git a/examples/wayland/minimal-qml/main.qml b/examples/wayland/minimal-qml/main.qml index f44d6b49..6a802217 100644 --- a/examples/wayland/minimal-qml/main.qml +++ b/examples/wayland/minimal-qml/main.qml @@ -51,6 +51,7 @@ import QtQuick import QtQuick.Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandCompositor { // The output defines the screen. diff --git a/examples/wayland/multi-output/qml/GridScreen.qml b/examples/wayland/multi-output/qml/GridScreen.qml index 1f690b7c..372667f1 100644 --- a/examples/wayland/multi-output/qml/GridScreen.qml +++ b/examples/wayland/multi-output/qml/GridScreen.qml @@ -51,6 +51,7 @@ import QtQuick import QtQuick.Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandOutput { id: output diff --git a/examples/wayland/multi-output/qml/ShellScreen.qml b/examples/wayland/multi-output/qml/ShellScreen.qml index 4b3684fd..92d734c8 100644 --- a/examples/wayland/multi-output/qml/ShellScreen.qml +++ b/examples/wayland/multi-output/qml/ShellScreen.qml @@ -51,6 +51,7 @@ import QtQuick import QtQuick.Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandOutput { id: output diff --git a/examples/wayland/multi-output/qml/main.qml b/examples/wayland/multi-output/qml/main.qml index efced875..eb5d1589 100644 --- a/examples/wayland/multi-output/qml/main.qml +++ b/examples/wayland/multi-output/qml/main.qml @@ -50,6 +50,7 @@ import QtQuick import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandCompositor { id: comp diff --git a/examples/wayland/multi-screen/qml/main.qml b/examples/wayland/multi-screen/qml/main.qml index ed150199..6d3606d0 100644 --- a/examples/wayland/multi-screen/qml/main.qml +++ b/examples/wayland/multi-screen/qml/main.qml @@ -53,6 +53,7 @@ import QtQml import QtQuick import QtQuick.Window as Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell import QtQml.Models WaylandCompositor { diff --git a/examples/wayland/overview-compositor/main.qml b/examples/wayland/overview-compositor/main.qml index b5f671f6..d44d3e2d 100644 --- a/examples/wayland/overview-compositor/main.qml +++ b/examples/wayland/overview-compositor/main.qml @@ -50,6 +50,7 @@ import QtQuick import QtWayland.Compositor +import QtWayland.Compositor.XdgShell import QtQuick.Window import QtQuick.Controls 2.0 diff --git a/examples/wayland/pure-qml/qml/main.qml b/examples/wayland/pure-qml/qml/main.qml index 097ee9b1..eb4ccfc1 100644 --- a/examples/wayland/pure-qml/qml/main.qml +++ b/examples/wayland/pure-qml/qml/main.qml @@ -50,6 +50,7 @@ import QtQuick import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandCompositor { id: waylandCompositor diff --git a/examples/wayland/server-side-decoration/main.qml b/examples/wayland/server-side-decoration/main.qml index d93d7689..7974f3c7 100644 --- a/examples/wayland/server-side-decoration/main.qml +++ b/examples/wayland/server-side-decoration/main.qml @@ -52,6 +52,7 @@ import QtQuick import QtQuick.Window import QtQuick.Layouts import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandCompositor { // The output defines the screen. diff --git a/examples/wayland/spanning-screens/main.qml b/examples/wayland/spanning-screens/main.qml index b3788dbc..a13ab465 100644 --- a/examples/wayland/spanning-screens/main.qml +++ b/examples/wayland/spanning-screens/main.qml @@ -51,6 +51,7 @@ import QtQuick import QtQuick.Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell WaylandCompositor { WaylandOutput { diff --git a/examples/wayland/texture-sharing/custom-compositor/qml/main.qml b/examples/wayland/texture-sharing/custom-compositor/qml/main.qml index 6e134814..5958ceb5 100644 --- a/examples/wayland/texture-sharing/custom-compositor/qml/main.qml +++ b/examples/wayland/texture-sharing/custom-compositor/qml/main.qml @@ -51,6 +51,7 @@ import QtQuick import QtQuick.Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell import com.theqtcompany.customsharingextension diff --git a/examples/wayland/texture-sharing/minimal-compositor.qml b/examples/wayland/texture-sharing/minimal-compositor.qml index ba89afd6..b3a32e05 100644 --- a/examples/wayland/texture-sharing/minimal-compositor.qml +++ b/examples/wayland/texture-sharing/minimal-compositor.qml @@ -51,6 +51,7 @@ import QtQuick import QtQuick.Window import QtWayland.Compositor +import QtWayland.Compositor.XdgShell // importing the texture sharing extension: import QtWayland.Compositor.TextureSharingExtension diff --git a/src/compositor/extensions/qwaylandxdgdecorationv1.cpp b/src/compositor/extensions/qwaylandxdgdecorationv1.cpp index a58601cd..420ff533 100644 --- a/src/compositor/extensions/qwaylandxdgdecorationv1.cpp +++ b/src/compositor/extensions/qwaylandxdgdecorationv1.cpp @@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE /*! \qmltype XdgDecorationManagerV1 - \inqmlmodule QtWayland.Compositor + \inqmlmodule QtWayland.Compositor.XdgShell \since 5.12 \brief Provides an extension for negotiation of server-side and client-side window decorations. diff --git a/src/compositor/extensions/qwaylandxdgoutputv1.cpp b/src/compositor/extensions/qwaylandxdgoutputv1.cpp index 817cb2e4..4a59928a 100644 --- a/src/compositor/extensions/qwaylandxdgoutputv1.cpp +++ b/src/compositor/extensions/qwaylandxdgoutputv1.cpp @@ -45,7 +45,7 @@ QT_BEGIN_NAMESPACE /*! * \qmltype XdgOutputManagerV1 - * \inqmlmodule QtWayland.Compositor + * \inqmlmodule QtWayland.Compositor.XdgShell * \since 5.14 * \brief Provides an extension for describing outputs in a desktop oriented fashion. * diff --git a/src/compositor/extensions/qwaylandxdgshell.cpp b/src/compositor/extensions/qwaylandxdgshell.cpp index 895d00c8..f3d34775 100644 --- a/src/compositor/extensions/qwaylandxdgshell.cpp +++ b/src/compositor/extensions/qwaylandxdgshell.cpp @@ -141,7 +141,7 @@ void QWaylandXdgShellPrivate::xdg_wm_base_pong(Resource *resource, uint32_t seri /*! * \qmltype XdgShell - * \inqmlmodule QtWayland.Compositor + * \inqmlmodule QtWayland.Compositor.XdgShell * \since 5.12 * \brief Provides an extension for desktop-style user interfaces. * @@ -156,7 +156,7 @@ void QWaylandXdgShellPrivate::xdg_wm_base_pong(Resource *resource, uint32_t seri * supported by the compositor: * * \qml \QtMinorVersion - * import QtWayland.Compositor 1.\1 + * import QtWayland.Compositor.XdgShell * * WaylandCompositor { * XdgShell { @@ -461,7 +461,7 @@ void QWaylandXdgSurfacePrivate::xdg_surface_set_window_geometry(QtWaylandServer: /*! * \qmltype XdgSurface - * \inqmlmodule QtWayland.Compositor + * \inqmlmodule QtWayland.Compositor.XdgShell * \since 5.12 * \brief XdgSurface provides desktop-style compositor-specific features to an xdg surface. * @@ -710,7 +710,7 @@ QWaylandQuickShellIntegration *QWaylandXdgSurface::createIntegration(QWaylandQui /*! * \qmltype XdgToplevel - * \inqmlmodule QtWayland.Compositor + * \inqmlmodule QtWayland.Compositor.XdgShell * \since 5.12 * \brief XdgToplevel represents the toplevel window specific parts of an xdg surface. * @@ -1547,7 +1547,7 @@ void QWaylandXdgToplevelPrivate::xdg_toplevel_set_minimized(QtWaylandServer::xdg /*! * \qmltype XdgPopup - * \inqmlmodule QtWayland.Compositor + * \inqmlmodule QtWayland.Compositor.XdgShell * \since 5.12 * \brief XdgPopup represents the popup specific parts of and xdg surface. * diff --git a/src/imports/CMakeLists.txt b/src/imports/CMakeLists.txt index 96fd5616..bb767b60 100644 --- a/src/imports/CMakeLists.txt +++ b/src/imports/CMakeLists.txt @@ -2,6 +2,7 @@ if(TARGET Qt::Quick AND TARGET Qt::WaylandCompositor) add_subdirectory(compositor) + add_subdirectory(compositor-extensions) endif() if(QT_FEATURE_opengl AND TARGET Qt::Quick AND TARGET Qt::WaylandClient AND TARGET Qt::WaylandCompositor) add_subdirectory(texture-sharing) diff --git a/src/imports/compositor-extensions/CMakeLists.txt b/src/imports/compositor-extensions/CMakeLists.txt new file mode 100644 index 00000000..cc822ffe --- /dev/null +++ b/src/imports/compositor-extensions/CMakeLists.txt @@ -0,0 +1,3 @@ +# Generated from compositor-extensions.pro. + +add_subdirectory(xdgshell) diff --git a/src/imports/compositor-extensions/compositor-extensions.pro b/src/imports/compositor-extensions/compositor-extensions.pro new file mode 100644 index 00000000..cc3eaa41 --- /dev/null +++ b/src/imports/compositor-extensions/compositor-extensions.pro @@ -0,0 +1,2 @@ +TEMPLATE = subdirs +SUBDIRS = xdgshell diff --git a/src/imports/compositor-extensions/xdgshell/CMakeLists.txt b/src/imports/compositor-extensions/xdgshell/CMakeLists.txt new file mode 100644 index 00000000..6928b837 --- /dev/null +++ b/src/imports/compositor-extensions/xdgshell/CMakeLists.txt @@ -0,0 +1,23 @@ +# Generated from xdgshell.pro. + +##################################################################### +## qwaylandcompositorxdgshellplugin Plugin: +##################################################################### + +qt_add_qml_module(qwaylandcompositorxdgshellplugin + URI "QtWayland.Compositor.XdgShell" + VERSION "${CMAKE_PROJECT_VERSION}" + CLASSNAME QWaylandCompositorXdgShellPlugin + SKIP_TYPE_REGISTRATION + SOURCES + qwaylandcompositorxdgshellplugin.cpp + PUBLIC_LIBRARIES + Qt::Core + Qt::Gui + Qt::WaylandCompositor +) + +#### Keys ignored in scope 1:.:.:xdgshell.pro:<TRUE>: +# CXX_MODULE = "qml" +# QML_IMPORT_VERSION = "$$QT_VERSION" +# TARGETPATH = "QtWayland/Compositor/XdgShell" diff --git a/src/imports/compositor-extensions/xdgshell/plugins.qmltypes b/src/imports/compositor-extensions/xdgshell/plugins.qmltypes new file mode 100644 index 00000000..b5bf435a --- /dev/null +++ b/src/imports/compositor-extensions/xdgshell/plugins.qmltypes @@ -0,0 +1,260 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtWayland.Compositor.XdgShell 6.0' + +Module { + dependencies: ["QtQuick 2.0"] + Component { name: "QWaylandCompositorExtension"; prototype: "QWaylandObject" } + Component { name: "QWaylandObject"; prototype: "QObject" } + Component { + name: "QWaylandQuickXdgOutputV1" + defaultProperty: "data" + prototype: "QWaylandXdgOutputV1" + exports: ["QtWayland.Compositor.XdgShell/XdgOutputV1 1.14"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QWaylandShell" + prototype: "QWaylandCompositorExtension" + Enum { + name: "FocusPolicy" + values: { + "AutomaticFocus": 0, + "ManualFocus": 1 + } + } + Property { name: "focusPolicy"; type: "FocusPolicy" } + } + Component { + name: "QWaylandShellSurface" + prototype: "QWaylandCompositorExtension" + Property { name: "windowType"; type: "Qt::WindowType"; isReadonly: true } + } + Component { + name: "QWaylandXdgDecorationManagerV1" + prototype: "QWaylandCompositorExtension" + Property { name: "preferredMode"; type: "QWaylandXdgToplevel::DecorationMode" } + } + Component { + name: "QWaylandXdgDecorationManagerV1QuickExtension" + defaultProperty: "data" + prototype: "QWaylandXdgDecorationManagerV1" + exports: ["QtWayland.Compositor.XdgShell/XdgDecorationManagerV1 1.3"] + exportMetaObjectRevisions: [0] + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { name: "QWaylandXdgOutputManagerV1"; prototype: "QWaylandCompositorExtension" } + Component { + name: "QWaylandXdgOutputManagerV1QuickExtension" + defaultProperty: "data" + prototype: "QWaylandXdgOutputManagerV1" + exports: ["QtWayland.Compositor.XdgShell/XdgOutputManagerV1 1.14"] + exportMetaObjectRevisions: [0] + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + name: "QWaylandXdgOutputV1" + defaultProperty: "data" + prototype: "QObject" + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { + name: "manager" + type: "QWaylandXdgOutputManagerV1" + isReadonly: true + isPointer: true + } + Property { name: "output"; type: "QWaylandOutput"; isReadonly: true; isPointer: true } + Property { name: "name"; type: "string" } + Property { name: "description"; type: "string" } + Property { name: "logicalPosition"; type: "QPoint" } + Property { name: "logicalSize"; type: "QSize" } + Property { name: "logicalGeometry"; type: "QRect"; isReadonly: true } + } + Component { + name: "QWaylandXdgPopup" + prototype: "QObject" + exports: ["QtWayland.Compositor.XdgShell/XdgPopup 1.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "xdgSurface"; type: "QWaylandXdgSurface"; isReadonly: true; isPointer: true } + Property { + name: "parentXdgSurface" + type: "QWaylandXdgSurface" + isReadonly: true + isPointer: true + } + Property { name: "configuredGeometry"; type: "QRect"; isReadonly: true } + Property { name: "anchorRect"; type: "QRect"; isReadonly: true } + Property { name: "anchorEdges"; type: "Qt::Edges"; isReadonly: true } + Property { name: "gravityEdges"; type: "Qt::Edges"; isReadonly: true } + Property { name: "slideConstraints"; type: "Qt::Orientations"; isReadonly: true } + Property { name: "flipConstraints"; type: "Qt::Orientations"; isReadonly: true } + Property { name: "resizeConstraints"; type: "Qt::Orientations"; isReadonly: true } + Property { name: "offset"; type: "QPoint"; isReadonly: true } + Property { name: "positionerSize"; type: "QSize"; isReadonly: true } + Property { name: "unconstrainedPosition"; type: "QPoint"; isReadonly: true } + Method { + name: "sendConfigure" + type: "uint" + Parameter { name: "geometry"; type: "QRect" } + } + Method { name: "sendPopupDone"; revision: 270 } + } + Component { + name: "QWaylandXdgShell" + prototype: "QWaylandShell" + Signal { + name: "xdgSurfaceCreated" + Parameter { name: "xdgSurface"; type: "QWaylandXdgSurface"; isPointer: true } + } + Signal { + name: "toplevelCreated" + Parameter { name: "toplevel"; type: "QWaylandXdgToplevel"; isPointer: true } + Parameter { name: "xdgSurface"; type: "QWaylandXdgSurface"; isPointer: true } + } + Signal { + name: "popupCreated" + Parameter { name: "popup"; type: "QWaylandXdgPopup"; isPointer: true } + Parameter { name: "xdgSurface"; type: "QWaylandXdgSurface"; isPointer: true } + } + Signal { + name: "pong" + Parameter { name: "serial"; type: "uint" } + } + Method { + name: "ping" + type: "uint" + Parameter { name: "client"; type: "QWaylandClient"; isPointer: true } + } + } + Component { + name: "QWaylandXdgShellQuickExtension" + defaultProperty: "data" + prototype: "QWaylandXdgShell" + exports: ["QtWayland.Compositor.XdgShell/XdgShell 1.3"] + exportMetaObjectRevisions: [0] + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + name: "QWaylandXdgSurface" + defaultProperty: "data" + prototype: "QWaylandShellSurface" + exports: ["QtWayland.Compositor.XdgShell/XdgSurface 1.3"] + exportMetaObjectRevisions: [0] + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "shell"; type: "QWaylandXdgShell"; isReadonly: true; isPointer: true } + Property { name: "surface"; type: "QWaylandSurface"; isReadonly: true; isPointer: true } + Property { name: "toplevel"; type: "QWaylandXdgToplevel"; isReadonly: true; isPointer: true } + Property { name: "popup"; type: "QWaylandXdgPopup"; isReadonly: true; isPointer: true } + Property { name: "windowGeometry"; type: "QRect"; isReadonly: true } + Signal { name: "toplevelCreated" } + Signal { name: "popupCreated" } + Method { + name: "initialize" + Parameter { name: "xdgShell"; type: "QWaylandXdgShell"; isPointer: true } + Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true } + Parameter { name: "resource"; type: "QWaylandResource" } + } + } + Component { + name: "QWaylandXdgToplevel" + prototype: "QObject" + exports: ["QtWayland.Compositor.XdgShell/XdgToplevel 1.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "State" + values: { + "MaximizedState": 1, + "FullscreenState": 2, + "ResizingState": 3, + "ActivatedState": 4 + } + } + Enum { + name: "DecorationMode" + values: { + "ClientSideDecoration": 1, + "ServerSideDecoration": 2 + } + } + Property { name: "xdgSurface"; type: "QWaylandXdgSurface"; isReadonly: true; isPointer: true } + Property { + name: "parentToplevel" + type: "QWaylandXdgToplevel" + isReadonly: true + isPointer: true + } + Property { name: "title"; type: "string"; isReadonly: true } + Property { name: "appId"; type: "string"; isReadonly: true } + Property { name: "maxSize"; type: "QSize"; isReadonly: true } + Property { name: "minSize"; type: "QSize"; isReadonly: true } + Property { name: "states"; type: "QList<int>"; isReadonly: true } + Property { name: "maximized"; type: "bool"; isReadonly: true } + Property { name: "fullscreen"; type: "bool"; isReadonly: true } + Property { name: "resizing"; type: "bool"; isReadonly: true } + Property { name: "activated"; type: "bool"; isReadonly: true } + Property { name: "decorationMode"; type: "DecorationMode"; isReadonly: true } + Signal { + name: "startMove" + Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true } + } + Signal { + name: "startResize" + Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true } + Parameter { name: "edges"; type: "Qt::Edges" } + } + Signal { + name: "showWindowMenu" + Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true } + Parameter { name: "localSurfacePosition"; type: "QPoint" } + } + Signal { name: "setMaximized" } + Signal { name: "unsetMaximized" } + Signal { + name: "setFullscreen" + Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true } + } + Signal { name: "unsetFullscreen" } + Signal { name: "setMinimized" } + Method { + name: "sizeForResize" + type: "QSize" + Parameter { name: "size"; type: "QSizeF" } + Parameter { name: "delta"; type: "QPointF" } + Parameter { name: "edges"; type: "Qt::Edges" } + } + Method { + name: "sendConfigure" + type: "uint" + Parameter { name: "size"; type: "QSize" } + Parameter { name: "states"; type: "QList<int>" } + } + Method { name: "sendClose" } + Method { + name: "sendMaximized" + type: "uint" + Parameter { name: "size"; type: "QSize" } + } + Method { + name: "sendUnmaximized" + type: "uint" + Parameter { name: "size"; type: "QSize" } + } + Method { name: "sendUnmaximized"; type: "uint" } + Method { + name: "sendFullscreen" + type: "uint" + Parameter { name: "size"; type: "QSize" } + } + Method { + name: "sendResizing" + type: "uint" + Parameter { name: "maxSize"; type: "QSize" } + } + } +} diff --git a/src/imports/compositor-extensions/xdgshell/qmldir b/src/imports/compositor-extensions/xdgshell/qmldir new file mode 100644 index 00000000..9880a20a --- /dev/null +++ b/src/imports/compositor-extensions/xdgshell/qmldir @@ -0,0 +1,3 @@ +module QtWayland.Compositor.XdgShell +plugin qwaylandcompositorxdgshellplugin +classname QWaylandCompositorXdgShellPlugin diff --git a/src/imports/compositor-extensions/xdgshell/qwaylandcompositorxdgshellplugin.cpp b/src/imports/compositor-extensions/xdgshell/qwaylandcompositorxdgshellplugin.cpp new file mode 100644 index 00000000..9ea8a115 --- /dev/null +++ b/src/imports/compositor-extensions/xdgshell/qwaylandcompositorxdgshellplugin.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWaylandCompositor module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQml/qqmlextensionplugin.h> +#include <QtQml/qqml.h> + +#include <QtWaylandCompositor/QWaylandQuickExtension> +#include <QtWaylandCompositor/QWaylandXdgShell> +#include <QtWaylandCompositor/QWaylandXdgDecorationManagerV1> +#include <QtWaylandCompositor/QWaylandQuickXdgOutputV1> + +QT_BEGIN_NAMESPACE + +Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandXdgShell) +Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandXdgDecorationManagerV1) +Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandXdgOutputManagerV1) + +class QWaylandCompositorXdgShellPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) +public: + void registerTypes(const char *uri) override + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("QtWayland.Compositor.XdgShell")); + defineModule(uri); + } + + static void defineModule(const char *uri) + { + qmlRegisterModule(uri, QT_VERSION_MAJOR, QT_VERSION_MINOR); + + qmlRegisterType<QWaylandXdgShellQuickExtension>(uri, 1, 3, "XdgShell"); + qmlRegisterType<QWaylandXdgSurface>(uri, 1, 3, "XdgSurface"); + qmlRegisterUncreatableType<QWaylandXdgToplevel>(uri, 1, 3, "XdgToplevel", QObject::tr("Cannot create instance of XdgShellToplevel")); + qmlRegisterUncreatableType<QWaylandXdgPopup>(uri, 1, 3, "XdgPopup", QObject::tr("Cannot create instance of XdgShellPopup")); + + qmlRegisterType<QWaylandXdgDecorationManagerV1QuickExtension>(uri, 1, 3, "XdgDecorationManagerV1"); + qmlRegisterType<QWaylandXdgOutputManagerV1QuickExtension>(uri, 1, 14, "XdgOutputManagerV1"); + qmlRegisterType<QWaylandQuickXdgOutputV1>(uri, 1, 14, "XdgOutputV1"); + } +}; + +QT_END_NAMESPACE + +#include "qwaylandcompositorxdgshellplugin.moc" diff --git a/src/imports/compositor-extensions/xdgshell/xdgshell.pro b/src/imports/compositor-extensions/xdgshell/xdgshell.pro new file mode 100644 index 00000000..0afcb76c --- /dev/null +++ b/src/imports/compositor-extensions/xdgshell/xdgshell.pro @@ -0,0 +1,11 @@ +CXX_MODULE = qml +TARGET = qwaylandcompositorxdgshellplugin +TARGETPATH = QtWayland/Compositor/XdgShell +QML_IMPORT_VERSION = $$QT_VERSION + +SOURCES += \ + qwaylandcompositorxdgshellplugin.cpp + +QT += waylandcompositor + +load(qml_plugin) diff --git a/src/imports/compositor/plugins.qmltypes b/src/imports/compositor/plugins.qmltypes index 90f5457a..be201d51 100644 --- a/src/imports/compositor/plugins.qmltypes +++ b/src/imports/compositor/plugins.qmltypes @@ -4,7 +4,7 @@ import QtQuick.tooling 1.2 // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -nonrelocatable QtWayland.Compositor 1.14' +// 'qmlplugindump -nonrelocatable QtWayland.Compositor 6.0' Module { dependencies: [ @@ -386,13 +386,6 @@ Module { Property { name: "useTextureAlpha"; type: "bool" } } Component { - name: "QWaylandQuickXdgOutputV1" - defaultProperty: "data" - prototype: "QWaylandXdgOutputV1" - exports: ["QtWayland.Compositor/XdgOutputV1 1.14"] - exportMetaObjectRevisions: [0] - } - Component { name: "QWaylandResource" exports: ["QtWayland.Compositor/WaylandResource 1.0"] isCreatable: false @@ -688,229 +681,6 @@ Module { Method { name: "sendPopupDone" } } Component { - name: "QWaylandXdgDecorationManagerV1" - prototype: "QWaylandCompositorExtension" - Property { name: "preferredMode"; type: "QWaylandXdgToplevel::DecorationMode" } - } - Component { - name: "QWaylandXdgDecorationManagerV1QuickExtension" - defaultProperty: "data" - prototype: "QWaylandXdgDecorationManagerV1" - exports: ["QtWayland.Compositor/XdgDecorationManagerV1 1.3"] - exportMetaObjectRevisions: [0] - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - } - Component { name: "QWaylandXdgOutputManagerV1"; prototype: "QWaylandCompositorExtension" } - Component { - name: "QWaylandXdgOutputManagerV1QuickExtension" - defaultProperty: "data" - prototype: "QWaylandXdgOutputManagerV1" - exports: ["QtWayland.Compositor/XdgOutputManagerV1 1.14"] - exportMetaObjectRevisions: [0] - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - } - Component { - name: "QWaylandXdgOutputV1" - defaultProperty: "data" - prototype: "QObject" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { - name: "manager" - type: "QWaylandXdgOutputManagerV1" - isReadonly: true - isPointer: true - } - Property { name: "output"; type: "QWaylandOutput"; isReadonly: true; isPointer: true } - Property { name: "name"; type: "string" } - Property { name: "description"; type: "string" } - Property { name: "logicalPosition"; type: "QPoint" } - Property { name: "logicalSize"; type: "QSize" } - Property { name: "logicalGeometry"; type: "QRect"; isReadonly: true } - } - Component { - name: "QWaylandXdgPopup" - prototype: "QObject" - exports: ["QtWayland.Compositor/XdgPopup 1.3"] - isCreatable: false - exportMetaObjectRevisions: [0] - Property { name: "xdgSurface"; type: "QWaylandXdgSurface"; isReadonly: true; isPointer: true } - Property { - name: "parentXdgSurface" - type: "QWaylandXdgSurface" - isReadonly: true - isPointer: true - } - Property { name: "configuredGeometry"; type: "QRect"; isReadonly: true } - Property { name: "anchorRect"; type: "QRect"; isReadonly: true } - Property { name: "anchorEdges"; type: "Qt::Edges"; isReadonly: true } - Property { name: "gravityEdges"; type: "Qt::Edges"; isReadonly: true } - Property { name: "slideConstraints"; type: "Qt::Orientations"; isReadonly: true } - Property { name: "flipConstraints"; type: "Qt::Orientations"; isReadonly: true } - Property { name: "resizeConstraints"; type: "Qt::Orientations"; isReadonly: true } - Property { name: "offset"; type: "QPoint"; isReadonly: true } - Property { name: "positionerSize"; type: "QSize"; isReadonly: true } - Property { name: "unconstrainedPosition"; type: "QPoint"; isReadonly: true } - Method { - name: "sendConfigure" - type: "uint" - Parameter { name: "geometry"; type: "QRect" } - } - Method { name: "sendPopupDone"; revision: 270 } - } - Component { - name: "QWaylandXdgShell" - prototype: "QWaylandShell" - Signal { - name: "xdgSurfaceCreated" - Parameter { name: "xdgSurface"; type: "QWaylandXdgSurface"; isPointer: true } - } - Signal { - name: "toplevelCreated" - Parameter { name: "toplevel"; type: "QWaylandXdgToplevel"; isPointer: true } - Parameter { name: "xdgSurface"; type: "QWaylandXdgSurface"; isPointer: true } - } - Signal { - name: "popupCreated" - Parameter { name: "popup"; type: "QWaylandXdgPopup"; isPointer: true } - Parameter { name: "xdgSurface"; type: "QWaylandXdgSurface"; isPointer: true } - } - Signal { - name: "pong" - Parameter { name: "serial"; type: "uint" } - } - Method { - name: "ping" - type: "uint" - Parameter { name: "client"; type: "QWaylandClient"; isPointer: true } - } - } - Component { - name: "QWaylandXdgShellQuickExtension" - defaultProperty: "data" - prototype: "QWaylandXdgShell" - exports: ["QtWayland.Compositor/XdgShell 1.3"] - exportMetaObjectRevisions: [0] - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - } - Component { - name: "QWaylandXdgSurface" - defaultProperty: "data" - prototype: "QWaylandShellSurface" - exports: ["QtWayland.Compositor/XdgSurface 1.3"] - exportMetaObjectRevisions: [0] - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "shell"; type: "QWaylandXdgShell"; isReadonly: true; isPointer: true } - Property { name: "surface"; type: "QWaylandSurface"; isReadonly: true; isPointer: true } - Property { name: "toplevel"; type: "QWaylandXdgToplevel"; isReadonly: true; isPointer: true } - Property { name: "popup"; type: "QWaylandXdgPopup"; isReadonly: true; isPointer: true } - Property { name: "windowGeometry"; type: "QRect"; isReadonly: true } - Signal { name: "toplevelCreated" } - Signal { name: "popupCreated" } - Method { - name: "initialize" - Parameter { name: "xdgShell"; type: "QWaylandXdgShell"; isPointer: true } - Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true } - Parameter { name: "resource"; type: "QWaylandResource" } - } - } - Component { - name: "QWaylandXdgToplevel" - prototype: "QObject" - exports: ["QtWayland.Compositor/XdgToplevel 1.3"] - isCreatable: false - exportMetaObjectRevisions: [0] - Enum { - name: "State" - values: { - "MaximizedState": 1, - "FullscreenState": 2, - "ResizingState": 3, - "ActivatedState": 4 - } - } - Enum { - name: "DecorationMode" - values: { - "ClientSideDecoration": 1, - "ServerSideDecoration": 2 - } - } - Property { name: "xdgSurface"; type: "QWaylandXdgSurface"; isReadonly: true; isPointer: true } - Property { - name: "parentToplevel" - type: "QWaylandXdgToplevel" - isReadonly: true - isPointer: true - } - Property { name: "title"; type: "string"; isReadonly: true } - Property { name: "appId"; type: "string"; isReadonly: true } - Property { name: "maxSize"; type: "QSize"; isReadonly: true } - Property { name: "minSize"; type: "QSize"; isReadonly: true } - Property { name: "states"; type: "QList<int>"; isReadonly: true } - Property { name: "maximized"; type: "bool"; isReadonly: true } - Property { name: "fullscreen"; type: "bool"; isReadonly: true } - Property { name: "resizing"; type: "bool"; isReadonly: true } - Property { name: "activated"; type: "bool"; isReadonly: true } - Property { name: "decorationMode"; type: "DecorationMode"; isReadonly: true } - Signal { - name: "startMove" - Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true } - } - Signal { - name: "startResize" - Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true } - Parameter { name: "edges"; type: "Qt::Edges" } - } - Signal { - name: "showWindowMenu" - Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true } - Parameter { name: "localSurfacePosition"; type: "QPoint" } - } - Signal { name: "setMaximized" } - Signal { name: "unsetMaximized" } - Signal { - name: "setFullscreen" - Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true } - } - Signal { name: "unsetFullscreen" } - Signal { name: "setMinimized" } - Method { - name: "sizeForResize" - type: "QSize" - Parameter { name: "size"; type: "QSizeF" } - Parameter { name: "delta"; type: "QPointF" } - Parameter { name: "edges"; type: "Qt::Edges" } - } - Method { - name: "sendConfigure" - type: "uint" - Parameter { name: "size"; type: "QSize" } - Parameter { name: "states"; type: "QList<int>" } - } - Method { name: "sendClose" } - Method { - name: "sendMaximized" - type: "uint" - Parameter { name: "size"; type: "QSize" } - } - Method { - name: "sendUnmaximized" - type: "uint" - Parameter { name: "size"; type: "QSize" } - } - Method { name: "sendUnmaximized"; type: "uint" } - Method { - name: "sendFullscreen" - type: "uint" - Parameter { name: "size"; type: "QSize" } - } - Method { - name: "sendResizing" - type: "uint" - Parameter { name: "maxSize"; type: "QSize" } - } - } - Component { prototype: "QWaylandQuickItem" name: "QtWayland.Compositor/WaylandCursorItem 1.0" exports: ["QtWayland.Compositor/WaylandCursorItem 1.0"] diff --git a/src/imports/compositor/qwaylandquickcompositorplugin.cpp b/src/imports/compositor/qwaylandquickcompositorplugin.cpp index 2977af8c..7451ea19 100644 --- a/src/imports/compositor/qwaylandquickcompositorplugin.cpp +++ b/src/imports/compositor/qwaylandquickcompositorplugin.cpp @@ -51,10 +51,7 @@ #include <QtWaylandCompositor/QWaylandQtWindowManager> #include <QtWaylandCompositor/QWaylandWlShell> #include <QtWaylandCompositor/QWaylandTextInputManager> -#include <QtWaylandCompositor/QWaylandXdgShell> -#include <QtWaylandCompositor/QWaylandXdgDecorationManagerV1> #include <QtWaylandCompositor/QWaylandIdleInhibitManagerV1> -#include <QtWaylandCompositor/QWaylandQuickXdgOutputV1> #include <QtWaylandCompositor/QWaylandIviApplication> #include <QtWaylandCompositor/QWaylandIviSurface> @@ -68,9 +65,6 @@ Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandQtWindowManager) Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandIdleInhibitManagerV1) Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandIviApplication) Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandWlShell) -Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandXdgShell) -Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandXdgDecorationManagerV1) -Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandXdgOutputManagerV1) Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(QWaylandTextInputManager) class QmlUrlResolver @@ -155,17 +149,7 @@ public: qmlRegisterType<QWaylandQuickShellSurfaceItem>(uri, 1, 0, "ShellSurfaceItem"); qmlRegisterType<QWaylandTextInputManagerQuickExtension>(uri, 1, 0, "TextInputManager"); - qmlRegisterType<QWaylandXdgShellQuickExtension>(uri, 1, 3, "XdgShell"); - qmlRegisterType<QWaylandXdgSurface>(uri, 1, 3, "XdgSurface"); - qmlRegisterUncreatableType<QWaylandXdgToplevel>(uri, 1, 3, "XdgToplevel", QObject::tr("Cannot create instance of XdgShellToplevel")); - qmlRegisterUncreatableType<QWaylandXdgPopup>(uri, 1, 3, "XdgPopup", QObject::tr("Cannot create instance of XdgShellPopup")); - - qmlRegisterType<QWaylandXdgDecorationManagerV1QuickExtension>(uri, 1, 3, "XdgDecorationManagerV1"); - qmlRegisterType<QWaylandIdleInhibitManagerV1QuickExtension>(uri, 1, 14, "IdleInhibitManagerV1"); - - qmlRegisterType<QWaylandXdgOutputManagerV1QuickExtension>(uri, 1, 14, "XdgOutputManagerV1"); - qmlRegisterType<QWaylandQuickXdgOutputV1>(uri, 1, 14, "XdgOutputV1"); } }; //![class decl] diff --git a/src/imports/imports.pro b/src/imports/imports.pro index 7452a928..4fd2fe77 100644 --- a/src/imports/imports.pro +++ b/src/imports/imports.pro @@ -2,7 +2,8 @@ TEMPLATE = subdirs qtHaveModule(quick):qtHaveModule(waylandcompositor) { SUBDIRS += \ - compositor + compositor \ + compositor-extensions qtConfig(opengl):qtHaveModule(waylandclient) { SUBDIRS += \ |