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) |
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 734782346..c13223aa6 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 f44d6b49b..6a802217c 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 1f690b7c1..372667f1f 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 4b3684fde..92d734c86 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 efced875d..eb5d15895 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 ed1501998..6d3606d04 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 b5f671f61..d44d3e2df 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 097ee9b13..eb4ccfc11 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 d93d7689c..7974f3c7d 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 b3788dbc0..a13ab4652 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 6e1348140..5958ceb51 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 ba89afd62..b3a32e05c 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 a58601cd4..420ff533c 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 817cb2e4a..4a59928a3 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 895d00c87..f3d347757 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 96fd56168..bb767b60a 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 000000000..cc822ffe5 --- /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 000000000..cc3eaa41e --- /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 000000000..6928b8374 --- /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 000000000..b5bf435a0 --- /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 000000000..9880a20ab --- /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 000000000..9ea8a115b --- /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 000000000..0afcb76cc --- /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 90f5457a0..be201d517 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 2977af8c2..7451ea199 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 7452a9283..4fd2fe77f 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 += \ |