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/qquicktextinput.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/qquicktextinput.cpp')
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 8d4db6b68a..b5bb20d720 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1775,6 +1775,26 @@ void QQuickTextInput::geometryChange(const QRectF &newGeometry, QQuickImplicitSizeItem::geometryChange(newGeometry, oldGeometry); } +void QQuickTextInput::itemChange(ItemChange change, const ItemChangeData &value) +{ + Q_D(QQuickTextInput); + 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. + d->updateLayout(); + } + break; + + default: + break; + } + QQuickImplicitSizeItem::itemChange(change, value); +} + void QQuickTextInputPrivate::ensureVisible(int position, int preeditCursor, int preeditLength) { Q_Q(QQuickTextInput); |