summaryrefslogtreecommitdiffstats
path: root/examples/wayland/custom-extension/compositor/customextension.h
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2017-08-29 14:32:23 +0200
committerPaul Olav Tvete <paul.tvete@qt.io>2017-10-05 13:53:03 +0000
commit37a8e57d7b8ff9f4360d8a32a09618fbd16534be (patch)
treee34c196de61202067c5030e7b14e05f0542af834 /examples/wayland/custom-extension/compositor/customextension.h
parent00a99e631459eb7e52fde822c24d7b9d603008c4 (diff)
Add non-global object to custom extension example
Show how to create non-global objects on the client side. Also fix error in the XML file: move the enum outside the event. Change-Id: I85b4cae115a57d60eda4a54d652ea98a8cd39548 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Diffstat (limited to 'examples/wayland/custom-extension/compositor/customextension.h')
-rw-r--r--examples/wayland/custom-extension/compositor/customextension.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/wayland/custom-extension/compositor/customextension.h b/examples/wayland/custom-extension/compositor/customextension.h
index b8f05b17c..de7df6acb 100644
--- a/examples/wayland/custom-extension/compositor/customextension.h
+++ b/examples/wayland/custom-extension/compositor/customextension.h
@@ -58,6 +58,8 @@
#include <QtWaylandCompositor/QWaylandCompositor>
#include "qwayland-server-custom.h"
+class CustomExtensionObject;
+
class CustomExtension : public QWaylandCompositorExtensionTemplate<CustomExtension>
, public QtWaylandServer::qt_example_extension
{
@@ -71,6 +73,8 @@ signals:
void bounce(QWaylandSurface *surface, uint ms);
void spin(QWaylandSurface *surface, uint ms);
+ void customObjectCreated(CustomExtensionObject *obj);
+
public slots:
void setFontSize(QWaylandSurface *surface, uint pixelSize);
void showDecorations(QWaylandClient *client, bool);
@@ -80,6 +84,63 @@ protected:
void example_extension_bounce(Resource *resource, wl_resource *surface, uint32_t duration) override;
void example_extension_spin(Resource *resource, wl_resource *surface, uint32_t duration) override;
void example_extension_register_surface(Resource *resource, wl_resource *surface) override;
+
+ void example_extension_create_local_object(Resource *resource, uint32_t id, const QString &color, const QString &text) override;
+};
+
+
+class CustomExtensionObject : public QWaylandCompositorExtensionTemplate<CustomExtensionObject>
+ , public QtWaylandServer::qt_example_local_object
+{
+ Q_OBJECT
+ Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)
+ Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
+public:
+ CustomExtensionObject(const QString &color, const QString &text, struct ::wl_client *client, int id, int version);
+
+ QString color() const
+ {
+ return m_color;
+ }
+
+ QString text() const
+ {
+ return m_text;
+ }
+
+public slots:
+ void setColor(const QString &color)
+ {
+ if (m_color == color)
+ return;
+
+ m_color = color;
+ emit colorChanged(m_color);
+ }
+
+ void setText(QString text)
+ {
+ if (m_text == text)
+ return;
+
+ m_text = text;
+ emit textChanged(m_text);
+ }
+ void sendClicked();
+
+signals:
+ void colorChanged(const QString &color);
+ void resourceDestroyed();
+
+ void textChanged(QString text);
+
+protected:
+ void example_local_object_destroy_resource(Resource *resource) override;
+ void example_local_object_set_text(Resource *resource, const QString &text) override;
+
+private:
+ QString m_color;
+ QString m_text;
};
Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(CustomExtension)