diff options
author | Friedemann Kleint <[email protected]> | 2023-03-10 17:09:40 +0100 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2023-03-17 16:35:57 +0100 |
commit | 901a5e638ba6ed397848dad3e23607e4b33ed678 (patch) | |
tree | f4fecdcc8682949e6fbb46e769b0cda7efdfa057 /sources/pyside6/tests/QtGui | |
parent | c2e2c2100aae3a40e6daffb80bcffa723a9276ef (diff) |
Expose QAbstractTextDocumentLayout::PaintContext
Extend the QRasterWindowTest to test it.
Fixes: PYSIDE-2252
Change-Id: If36253d00edab4dc9026ccd483485b2ba6d3f69e
Reviewed-by: Adrian Herrmann <[email protected]>
Reviewed-by: Shyamnath Premnadh <[email protected]>
Diffstat (limited to 'sources/pyside6/tests/QtGui')
-rw-r--r-- | sources/pyside6/tests/QtGui/qrasterwindow_test.py | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/sources/pyside6/tests/QtGui/qrasterwindow_test.py b/sources/pyside6/tests/QtGui/qrasterwindow_test.py index 0a37d0f57..4920902d5 100644 --- a/sources/pyside6/tests/QtGui/qrasterwindow_test.py +++ b/sources/pyside6/tests/QtGui/qrasterwindow_test.py @@ -13,12 +13,13 @@ from init_paths import init_test_paths init_test_paths(False) from helper.usesqapplication import UsesQApplication -from PySide6.QtCore import QEvent, QPoint, QRect, QSize, QTimer, Qt -from PySide6.QtGui import QColor, QBackingStore, QPaintDevice, QPainter, QWindow, QPaintDeviceWindow, QRasterWindow, QRegion, QStaticText +from PySide6.QtCore import QPoint, QRect, QSize, QTimer, Qt +from PySide6.QtGui import (QColor, QPainter, QRasterWindow, QStaticText, + QTextCursor, QTextDocument, QAbstractTextDocumentLayout) # Window using convenience class QRasterWindow -class TestRasterWindow(QRasterWindow): +class StaticTextRasterWindow(QRasterWindow): def __init__(self): super().__init__() self.text = QStaticText("QRasterWindow") @@ -30,12 +31,44 @@ class TestRasterWindow(QRasterWindow): painter.drawStaticText(QPoint(10, 10), self.text) +class TextDocumentWindow(QRasterWindow): + """PYSIDE-2252, drawing with QAbstractTextDocumentLayout.PaintContext""" + + def __init__(self): + super().__init__() + self.m_document = QTextDocument() + self.m_document.setPlainText("bla bla") + + def paintEvent(self, event): + with QPainter(self) as painter: + clientRect = QRect(QPoint(0, 0), self.size()) + painter.fillRect(clientRect, QColor(Qt.white)) + ctx = QAbstractTextDocumentLayout.PaintContext() + ctx.clip = clientRect + + sel = QAbstractTextDocumentLayout.Selection() + cursor = QTextCursor(self.m_document) + cursor.movePosition(QTextCursor.Start) + cursor.movePosition(QTextCursor.NextWord, QTextCursor.KeepAnchor) + sel.cursor = cursor + sel.format.setForeground(Qt.red) + ctx.selections = [sel] + + self.m_document.documentLayout().draw(painter, ctx) + + class QRasterWindowTest(UsesQApplication): def test(self): - rasterWindow = TestRasterWindow() + rasterWindow = StaticTextRasterWindow() rasterWindow.setFramePosition(QPoint(100, 100)) rasterWindow.resize(QSize(400, 400)) rasterWindow.show() + + rasterWindow2 = TextDocumentWindow() + rasterWindow2.setFramePosition(rasterWindow.frameGeometry().topRight() + QPoint(20, 0)) + rasterWindow2.resize(QSize(400, 400)) + rasterWindow2.show() + QTimer.singleShot(100, self.app.quit) self.app.exec() |