diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/quick/items/qquicktextedit.cpp | 21 | ||||
| -rw-r--r-- | src/quick/items/qquicktextedit_p.h | 1 | ||||
| -rw-r--r-- | src/quick/items/qquicktextinput.cpp | 20 | ||||
| -rw-r--r-- | src/quick/items/qquicktextinput_p.h | 1 |
4 files changed, 43 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. diff --git a/src/quick/items/qquicktextedit_p.h b/src/quick/items/qquicktextedit_p.h index f771321856..b55458743e 100644 --- a/src/quick/items/qquicktextedit_p.h +++ b/src/quick/items/qquicktextedit_p.h @@ -379,6 +379,7 @@ protected: #endif void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; + void itemChange(ItemChange change, const ItemChangeData &value) override; bool event(QEvent *) override; void keyPressEvent(QKeyEvent *) override; 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); diff --git a/src/quick/items/qquicktextinput_p.h b/src/quick/items/qquicktextinput_p.h index 93e76170d3..3aaccafafc 100644 --- a/src/quick/items/qquicktextinput_p.h +++ b/src/quick/items/qquicktextinput_p.h @@ -350,6 +350,7 @@ protected: #endif void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; + void itemChange(ItemChange change, const ItemChangeData &value) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; |
