summaryrefslogtreecommitdiffstats
path: root/examples/wayland/qwindow-compositor/compositorwindow.h
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@theqtcompany.com>2015-12-02 14:00:44 +0100
committerPaul Olav Tvete <paul.tvete@theqtcompany.com>2015-12-02 14:01:08 +0100
commit05bf419b206f3cd078364cf67af2df4e4d1477c0 (patch)
treec942e884e8f75a29bd9f281c993fbc85a0b832ed /examples/wayland/qwindow-compositor/compositorwindow.h
parentdd5e1ffd3e9e379574325193c8546d453c11303e (diff)
parent3698b116a1973146b76319673cdb6787f13f2de6 (diff)
Merge branch 'wip-compositor-api' into dev
This introduces the new compositor API, removing the old API (which was never officially supported). Change-Id: I1dc01f0fb4edc749e34ed8356e56ad87d7d64913
Diffstat (limited to 'examples/wayland/qwindow-compositor/compositorwindow.h')
-rw-r--r--examples/wayland/qwindow-compositor/compositorwindow.h59
1 files changed, 48 insertions, 11 deletions
diff --git a/examples/wayland/qwindow-compositor/compositorwindow.h b/examples/wayland/qwindow-compositor/compositorwindow.h
index 24c50c535..720db5bc7 100644
--- a/examples/wayland/qwindow-compositor/compositorwindow.h
+++ b/examples/wayland/qwindow-compositor/compositorwindow.h
@@ -41,24 +41,61 @@
#ifndef COMPOSITORWINDOW_H
#define COMPOSITORWINDOW_H
-#include <QWindow>
-#include <QOpenGLContext>
-#include <QSurfaceFormat>
+#include <QOpenGLWindow>
+#include <QPointer>
+#include <QtGui/private/qopengltextureblitter_p.h>
-class CompositorWindow : public QWindow
+QT_BEGIN_NAMESPACE
+
+class WindowCompositor;
+class WindowCompositorView;
+class QOpenGLTexture;
+
+class CompositorWindow : public QOpenGLWindow
{
public:
- CompositorWindow(const QSurfaceFormat &format, const QRect &geometry);
- QOpenGLContext* context() { return m_context; }
- bool makeCurrent() { return m_context->makeCurrent(this); }
- void swapBuffers() { m_context->swapBuffers(this); }
+ CompositorWindow();
+
+ void setCompositor(WindowCompositor *comp);
protected:
- void touchEvent(QTouchEvent *event);
+ void initializeGL() Q_DECL_OVERRIDE;
+ void paintGL() Q_DECL_OVERRIDE;
+
+ void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
+ void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
+ void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
+
+ void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE;
+ void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE;
+
+private slots:
+ void startMove();
+ void startResize(int edge);
+ void startDrag(WindowCompositorView *dragIcon);
+ void setFrameOffset(const QPoint &offset);
private:
- QOpenGLContext *m_context;
- QSurfaceFormat m_format;
+ enum GrabState { NoGrab, MoveGrab, ResizeGrab, DragGrab };
+
+ WindowCompositorView *viewAt(const QPointF &point);
+ bool mouseGrab() const { return m_grabState != NoGrab ;}
+ void drawBackground();
+ void sendMouseEvent(QMouseEvent *e, WindowCompositorView *target);
+
+ QOpenGLTextureBlitter m_textureBlitter;
+ QSize m_backgroundImageSize;
+ QOpenGLTexture *m_backgroundTexture;
+ WindowCompositor *m_compositor;
+ QPointer<WindowCompositorView> m_mouseView;
+ GrabState m_grabState;
+ QSize m_initialSize;
+ int m_resizeEdge;
+ QPointF m_mouseOffset;
+ QPointF m_initialMousePos;
+ WindowCompositorView *m_dragIconView;
};
+QT_END_NAMESPACE
+
#endif // COMPOSITORWINDOW_H