aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktextinput.cpp
diff options
context:
space:
mode:
authorKai Uwe Broulik <kde@privat.broulik.de>2023-11-20 18:40:28 +0100
committerKai Uwe Broulik <kde@privat.broulik.de>2023-12-22 17:41:22 +0100
commitef5df245db42ed16a849937d281e0170ebdb411d (patch)
tree9c072367b7e07af6e330c6f5a1c6aab50d645d53 /src/quick/items/qquicktextinput.cpp
parentc45eb82365ab8c8693f607c001f89fde5adb786d (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.cpp20
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);