summaryrefslogtreecommitdiffstats
path: root/examples/wayland/minimal-cpp/compositor.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/wayland/minimal-cpp/compositor.h')
-rw-r--r--examples/wayland/minimal-cpp/compositor.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/examples/wayland/minimal-cpp/compositor.h b/examples/wayland/minimal-cpp/compositor.h
index e804ac02f..f06421320 100644
--- a/examples/wayland/minimal-cpp/compositor.h
+++ b/examples/wayland/minimal-cpp/compositor.h
@@ -54,6 +54,7 @@
#include <QtWaylandCompositor/QWaylandCompositor>
#include <QtWaylandCompositor/QWaylandSurface>
#include <QtWaylandCompositor/QWaylandView>
+#include <QtCore/QPointer>
QT_BEGIN_NAMESPACE
@@ -66,12 +67,23 @@ class View : public QWaylandView
{
Q_OBJECT
public:
- View(int iviId) : m_iviId(iviId) {}
+ explicit View(int iviId) : m_iviId(iviId) {}
QOpenGLTexture *getTexture();
int iviId() const { return m_iviId; }
+
+ QRect globalGeometry() const { return QRect(globalPosition(), surface()->size()); }
+ void setGlobalPosition(const QPoint &globalPos) { m_pos = globalPos; m_positionSet = true; }
+ QPoint globalPosition() const { return m_pos; }
+ QPoint mapToLocal(const QPoint &globalPos) const;
+ QSize size() const { return surface() ? surface()->size() : QSize(); }
+
+ void initPosition(const QSize &screenSize, const QSize &surfaceSize);
+
private:
friend class Compositor;
QOpenGLTexture *m_texture = nullptr;
+ bool m_positionSet = false;
+ QPoint m_pos;
int m_iviId;
};
@@ -84,6 +96,16 @@ public:
void create() override;
QList<View*> views() const { return m_views; }
+ View *viewAt(const QPoint &position);
+ void raise(View *view);
+
+ void handleMousePress(const QPoint &position, Qt::MouseButton button);
+ void handleMouseRelease(const QPoint &position, Qt::MouseButton button, Qt::MouseButtons buttons);
+ void handleMouseMove(const QPoint &position);
+ void handleMouseWheel(Qt::Orientation orientation, int delta);
+
+ void handleKeyPress(quint32 nativeScanCode);
+ void handleKeyRelease(quint32 nativeScanCode);
void startRender();
void endRender();
@@ -98,6 +120,7 @@ private:
Window *m_window = nullptr;
QWaylandIviApplication *m_iviApplication = nullptr;
QList<View*> m_views;
+ QPointer<View> m_mouseView;
};
QT_END_NAMESPACE