diff options
author | Kai Uwe Broulik <kde@privat.broulik.de> | 2023-11-20 18:40:28 +0100 |
---|---|---|
committer | Kai Uwe Broulik <kde@privat.broulik.de> | 2023-12-22 17:41:22 +0100 |
commit | ef5df245db42ed16a849937d281e0170ebdb411d (patch) | |
tree | 9c072367b7e07af6e330c6f5a1c6aab50d645d53 /src/quick/items/qquicktextedit.cpp | |
parent | c45eb82365ab8c8693f607c001f89fde5adb786d (diff) |
qquicktext{edit,input}: Re-render when device pixel ratio changes
Native rendering needs to be perfectly aligned to the pixel grid.
When device pixel ratio changes, this can lead to blurry rendering.
This was addressed for qquicktext in d870ea28 but not
textedit/textinput.
Pick-to: 6.7 6.6 6.5
Change-Id: I75d3172a047e73ba3e8e6cbcf4f5a9651d42c6b0
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Diffstat (limited to 'src/quick/items/qquicktextedit.cpp')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index b71db53596..fce8a4eb32 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -1565,6 +1565,27 @@ void QQuickTextEdit::geometryChange(const QRectF &newGeometry, const QRectF &old QQuickImplicitSizeItem::geometryChange(newGeometry, oldGeometry); } +void QQuickTextEdit::itemChange(ItemChange change, const ItemChangeData &value) +{ + Q_D(QQuickTextEdit); + Q_UNUSED(value); + switch (change) { + case ItemDevicePixelRatioHasChanged: + if (d->renderType == NativeRendering) { + // Native rendering optimizes for a given pixel grid, so its results must not be scaled. + // Text layout code respects the current device pixel ratio automatically, we only need + // to rerun layout after the ratio changed. + updateSize(); + updateWholeDocument(); + } + break; + + default: + break; + } + QQuickImplicitSizeItem::itemChange(change, value); +} + /*! Ensures any delayed caching or data loading the class needs to performed is complete. |