diff options
Diffstat (limited to 'src/plugins/platforms/wayland_common/qwaylanddecoration.cpp')
-rw-r--r-- | src/plugins/platforms/wayland_common/qwaylanddecoration.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/plugins/platforms/wayland_common/qwaylanddecoration.cpp b/src/plugins/platforms/wayland_common/qwaylanddecoration.cpp index 11baeeb6..f5f79ae6 100644 --- a/src/plugins/platforms/wayland_common/qwaylanddecoration.cpp +++ b/src/plugins/platforms/wayland_common/qwaylanddecoration.cpp @@ -46,6 +46,7 @@ #include "qwaylandinputdevice.h" #include <QtGui/QGuiApplication> +#include <QtGui/QImage> #include <QtGui/QCursor> #include <QtGui/QPainter> #include <QtGui/QPalette> @@ -124,6 +125,8 @@ static const char * const qt_normalizeup_xpm[] = { QWaylandDecoration::QWaylandDecoration(QWaylandWindow *window) : m_window(window->window()) , m_wayland_window(window) + , m_isDirty(true) + , m_decorationContentImage(0) , m_margins(3,30,3,3) , m_hasSetCursor(false) , m_mouseButtons(Qt::NoButton) @@ -144,6 +147,26 @@ QWaylandDecoration::~QWaylandDecoration() m_wayland_window->setDecoration(0); } +const QImage &QWaylandDecoration::contentImage() +{ + if (m_isDirty) { + //Update the decoration backingstore + + m_decorationContentImage = QImage(window()->frameGeometry().size(), QImage::Format_ARGB32_Premultiplied); + m_decorationContentImage.fill(Qt::transparent); + this->paint(&m_decorationContentImage); + + m_isDirty = false; + } + + return m_decorationContentImage; +} + +void QWaylandDecoration::update() +{ + m_isDirty = true; +} + void QWaylandDecoration::paint(QPaintDevice *device) { QRect surfaceRect(QPoint(), window()->frameGeometry().size()); |