diff options
| author | Liang Qi <liang.qi@qt.io> | 2022-07-04 13:31:25 +0200 |
|---|---|---|
| committer | Liang Qi <liang.qi@qt.io> | 2022-08-06 01:24:41 +0200 |
| commit | aef55501bccd52f63a84228cb2ee201ec4f5c301 (patch) | |
| tree | 447b4434e082d944de62939af239fde0338fd412 /tests/manual/xembed/qt-client-raster/rasterwindow.cpp | |
| parent | 8e9fdfec0afc01f192b222af60c13955a63b594f (diff) | |
tests: replace gtk-embedder.py with a gtk3 app
All linux CI machines have gtk3 installed. And Python GTK things
are too complicate to setup.
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: I3c0d967f61aebea508784df79569b9d0064f66e2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'tests/manual/xembed/qt-client-raster/rasterwindow.cpp')
| -rw-r--r-- | tests/manual/xembed/qt-client-raster/rasterwindow.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/manual/xembed/qt-client-raster/rasterwindow.cpp b/tests/manual/xembed/qt-client-raster/rasterwindow.cpp new file mode 100644 index 00000000000..9cf2db737cc --- /dev/null +++ b/tests/manual/xembed/qt-client-raster/rasterwindow.cpp @@ -0,0 +1,70 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "rasterwindow.h" + +RasterWindow::RasterWindow(QWindow *parent) + : QWindow(parent) + , m_update_pending(false) +{ + m_backingStore = new QBackingStore(this); + create(); + + setGeometry(100, 100, 300, 200); +} + + +bool RasterWindow::event(QEvent *event) +{ + if (event->type() == QEvent::UpdateRequest) { + m_update_pending = false; + renderNow(); + return true; + } + return QWindow::event(event); +} + +void RasterWindow::renderLater() +{ + if (!m_update_pending) { + m_update_pending = true; + QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest)); + } +} + +void RasterWindow::resizeEvent(QResizeEvent *resizeEvent) +{ + m_backingStore->resize(resizeEvent->size()); + if (isExposed()) + renderNow(); +} + +void RasterWindow::exposeEvent(QExposeEvent *) +{ + if (isExposed()) { + renderNow(); + } +} + +void RasterWindow::renderNow() +{ + if (!isExposed()) + return; + + QRect rect(0, 0, width(), height()); + m_backingStore->beginPaint(rect); + + QPaintDevice *device = m_backingStore->paintDevice(); + QPainter painter(device); + + painter.fillRect(0, 0, width(), height(), Qt::white); + render(&painter); + + m_backingStore->endPaint(); + m_backingStore->flush(rect); +} + +void RasterWindow::render(QPainter *painter) +{ + painter->drawText(QRectF(0, 0, width(), height()), Qt::AlignCenter, QStringLiteral("QWindow")); +} |
