summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandabstractdecoration_p.h
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@viroteck.net>2014-08-20 16:31:05 +0200
committerRobin Burchell <robin.burchell@viroteck.net>2014-09-23 12:35:31 +0200
commit8655435f86b45a343d7a36c35968fa2c7c83f9c3 (patch)
tree9ead216ddc460db68615f140afaea03b29716bb4 /src/client/qwaylandabstractdecoration_p.h
parent59d691d6c54932a92933ee69876b8f0bc8cf954e (diff)
QtWaylandClient: Pluginize window decorations.
Convert to a D-pointer, split between abstract base class and an implementation. Also move implementation of the current built-in decoration to the "bradient" plugin, named in glorious memory of the programmer-designed blue gradient that will forever sear our eyeballs. The decoration plugin may be specified using the environment variable QT_WAYLAND_DECORATION. Change-Id: Idc99ab06ae138ad299bad2b62b9595379bd007ab Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Diffstat (limited to 'src/client/qwaylandabstractdecoration_p.h')
-rw-r--r--src/client/qwaylandabstractdecoration_p.h71
1 files changed, 18 insertions, 53 deletions
diff --git a/src/client/qwaylandabstractdecoration_p.h b/src/client/qwaylandabstractdecoration_p.h
index c94c9951a..6171cab14 100644
--- a/src/client/qwaylandabstractdecoration_p.h
+++ b/src/client/qwaylandabstractdecoration_p.h
@@ -1,5 +1,6 @@
/****************************************************************************
**
+** Copyright (C) 2014 Robin Burchell <robin.burchell@viroteck.net>
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
@@ -64,77 +65,41 @@ class QEvent;
class QWaylandScreen;
class QWaylandWindow;
class QWaylandInputDevice;
+class QWaylandAbstractDecorationPrivate;
-class Q_WAYLAND_CLIENT_EXPORT QWaylandAbstractDecoration
+class Q_WAYLAND_CLIENT_EXPORT QWaylandAbstractDecoration : public QObject
{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QWaylandAbstractDecoration)
public:
- QWaylandAbstractDecoration(QWaylandWindow *window);
+ QWaylandAbstractDecoration();
virtual ~QWaylandAbstractDecoration();
+ void setWaylandWindow(QWaylandWindow *window);
+ QWaylandWindow *waylandWindow() const;
+
void update();
bool isDirty() const;
- bool handleMouse(QWaylandInputDevice *inputDevice, const QPointF &local, const QPointF &global,Qt::MouseButtons b,Qt::KeyboardModifiers mods);
- bool handleTouch(QWaylandInputDevice *inputDevice, const QPointF &local, const QPointF &global, Qt::TouchPointState state, Qt::KeyboardModifiers mods);
- bool inMouseButtonPressedState() const;
-
- void startResize(QWaylandInputDevice *inputDevice,enum wl_shell_surface_resize resize, Qt::MouseButtons buttons);
- void startMove(QWaylandInputDevice *inputDevice, Qt::MouseButtons buttons);
- QMargins margins() const;
+ virtual QMargins margins() const = 0;
QWindow *window() const;
- QWaylandWindow *waylandWindow() const;
const QImage &contentImage();
+ virtual bool handleMouse(QWaylandInputDevice *inputDevice, const QPointF &local, const QPointF &global,Qt::MouseButtons b,Qt::KeyboardModifiers mods) = 0;
+ virtual bool handleTouch(QWaylandInputDevice *inputDevice, const QPointF &local, const QPointF &global, Qt::TouchPointState state, Qt::KeyboardModifiers mods) = 0;
+
protected:
- void paint(QPaintDevice *device);
+ virtual void paint(QPaintDevice *device) = 0;
+
+ void setMouseButtons(Qt::MouseButtons mb);
-private:
- void processMouseTop(QWaylandInputDevice *inputDevice, const QPointF &local, Qt::MouseButtons b,Qt::KeyboardModifiers mods);
- void processMouseBottom(QWaylandInputDevice *inputDevice, const QPointF &local, Qt::MouseButtons b,Qt::KeyboardModifiers mods);
- void processMouseLeft(QWaylandInputDevice *inputDevice, const QPointF &local, Qt::MouseButtons b,Qt::KeyboardModifiers mods);
- void processMouseRight(QWaylandInputDevice *inputDevice, const QPointF &local, Qt::MouseButtons b,Qt::KeyboardModifiers mods);
+ void startResize(QWaylandInputDevice *inputDevice,enum wl_shell_surface_resize resize, Qt::MouseButtons buttons);
+ void startMove(QWaylandInputDevice *inputDevice, Qt::MouseButtons buttons);
bool isLeftClicked(Qt::MouseButtons newMouseButtonState);
bool isLeftReleased(Qt::MouseButtons newMouseButtonState);
-
- QRectF closeButtonRect() const;
- QRectF maximizeButtonRect() const;
- QRectF minimizeButtonRect() const;
-
- QWindow *m_window;
- QWaylandWindow *m_wayland_window;
-
- bool m_isDirty;
- QImage m_decorationContentImage;
-
- QMargins m_margins;
- Qt::MouseButtons m_mouseButtons;
-
- QColor m_foregroundColor;
- QColor m_backgroundColor;
- QStaticText m_windowTitle;
};
-inline bool QWaylandAbstractDecoration::isDirty() const
-{
- return m_isDirty;
-}
-
-inline QMargins QWaylandAbstractDecoration::margins() const
-{
- return m_margins;
-}
-
-inline QWindow *QWaylandAbstractDecoration::window() const
-{
- return m_window;
-}
-
-inline QWaylandWindow *QWaylandAbstractDecoration::waylandWindow() const
-{
- return m_wayland_window;
-}
-
QT_END_NAMESPACE
#endif // QWAYLANDABSTRACTDECORATION_H