summaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/compositor/WaylandCursorItem.qml2
-rw-r--r--src/imports/compositor/qwaylandquickcompositorplugin.cpp44
2 files changed, 40 insertions, 6 deletions
diff --git a/src/imports/compositor/WaylandCursorItem.qml b/src/imports/compositor/WaylandCursorItem.qml
index 4938ff94b..2b480c066 100644
--- a/src/imports/compositor/WaylandCursorItem.qml
+++ b/src/imports/compositor/WaylandCursorItem.qml
@@ -34,7 +34,7 @@
import QtQuick 2.0
import QtWayland.Compositor 1.0
-WaylandView {
+WaylandQuickItem {
id: cursorItem
property QtObject compositor
property int hotspotX: 0
diff --git a/src/imports/compositor/qwaylandquickcompositorplugin.cpp b/src/imports/compositor/qwaylandquickcompositorplugin.cpp
index d04e4940e..597aa0734 100644
--- a/src/imports/compositor/qwaylandquickcompositorplugin.cpp
+++ b/src/imports/compositor/qwaylandquickcompositorplugin.cpp
@@ -45,8 +45,9 @@
#include <QtCompositor/QWaylandClient>
#include <QtCompositor/QWaylandOutput>
#include <QtCompositor/QWaylandOutputSpace>
+#include <QtCompositor/QWaylandExtension>
-#include <QtCompositor/QWaylandCompositor>
+#include <QtCompositor/QWaylandShell>
#include <QtCompositor/qwaylandexport.h>
#include "qwaylandmousetracker_p.h"
@@ -57,6 +58,7 @@ class Q_COMPOSITOR_EXPORT QWaylandQuickCompositorImpl : public QWaylandQuickComp
{
Q_OBJECT
Q_PROPERTY(QQmlListProperty<QObject> data READ data DESIGNABLE false)
+ Q_PROPERTY(QQmlListProperty<QWaylandExtension> extensions READ extensions)
Q_CLASSINFO("DefaultProperty", "data")
public:
QWaylandQuickCompositorImpl(QObject *parent = 0)
@@ -70,17 +72,42 @@ public:
return QQmlListProperty<QObject>(this, m_objects);
}
-protected:
- void classBegin() Q_DECL_OVERRIDE
+ QQmlListProperty<QWaylandExtension> extensions()
+ {
+ return QQmlListProperty<QWaylandExtension>(this, this,
+ &QWaylandQuickCompositorImpl::append_extension,
+ &QWaylandQuickCompositorImpl::countFunction,
+ &QWaylandQuickCompositorImpl::atFunction,
+ &QWaylandQuickCompositorImpl::clearFunction);
+ }
+
+ static int countFunction(QQmlListProperty<QWaylandExtension> *list)
+ {
+ return static_cast<QWaylandQuickCompositorImpl *>(list->data)->extension_vector.size();
+ }
+
+ static QWaylandExtension *atFunction(QQmlListProperty<QWaylandExtension> *list, int index)
+ {
+ return static_cast<QWaylandQuickCompositorImpl *>(list->data)->extension_vector.at(index);
+ }
+
+ static void append_extension(QQmlListProperty<QWaylandExtension> *list, QWaylandExtension *extension)
{
- QWaylandQuickCompositor::classBegin();
+ QWaylandQuickCompositorImpl *compositor = static_cast<QWaylandQuickCompositorImpl *>(list->data);
+ extension->setExtensionContainer(compositor);
}
+ static void clearFunction(QQmlListProperty<QWaylandExtension> *list)
+ {
+ static_cast<QWaylandQuickCompositorImpl *>(list->data)->extension_vector.clear();
+ }
+protected:
void componentComplete() Q_DECL_OVERRIDE
{
create();
QWaylandQuickCompositor::componentComplete();
}
+
private:
QList<QObject *> m_objects;
};
@@ -148,12 +175,19 @@ public:
static void defineModule(const char *uri)
{
qmlRegisterType<QWaylandQuickCompositorImpl>(uri, 1, 0, "WaylandCompositor");
- qmlRegisterType<QWaylandQuickItem>(uri, 1, 0, "WaylandView");
+ qmlRegisterType<QWaylandQuickItem>(uri, 1, 0, "WaylandQuickItem");
qmlRegisterType<QWaylandMouseTracker>(uri, 1, 0, "WaylandMouseTracker");
+
+ qmlRegisterUncreatableType<QWaylandExtension>(uri, 1, 0, "WaylandExtension", QObject::tr("Cannot create instance of WaylandExtension"));
qmlRegisterUncreatableType<QWaylandQuickSurface>(uri, 1, 0, "WaylandSurface", QObject::tr("Cannot create instance of WaylandQuickSurface"));
qmlRegisterUncreatableType<QWaylandClient>(uri, 1, 0, "WaylandClient", QObject::tr("Cannot create instance of WaylandClient"));
qmlRegisterUncreatableType<QWaylandOutput>(uri, 1, 0, "WaylandOutput", QObject::tr("Cannot create instance of WaylandOutput"));
qmlRegisterUncreatableType<QWaylandOutputSpace>(uri, 1, 0, "WaylandOutputSpace", QObject::tr("Cannot create instance of WaylandOutputSpace"));
+ qmlRegisterUncreatableType<QWaylandView>(uri, 1, 0, "WaylandView", QObject::tr("Cannot create instance of WaylandView, it can be retrieved by accessor on WaylandQuickItem"));
+
+ //This should probably be somewhere else
+ qmlRegisterType<QWaylandShell>(uri, 1, 0, "DefaultShell");
+ qmlRegisterUncreatableType<QWaylandShellSurface>(uri, 1, 0, "DefaultShellSurface", QObject::tr("Cannot create instance of DefaultShellSurface"));
}
};
//![class decl]