diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-10-03 18:23:28 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-10-04 08:14:49 +0000 |
commit | 1a335f6ae320dfedef617564a161b73ff276ca5b (patch) | |
tree | 5a2f2142055543e15f21c22acc300414a45431cd /src/quick/items/qquicktextinput.cpp | |
parent | 0a5db49d0d57822adc630ac9c2158096bede6d00 (diff) |
QQuickTextEdit/Input: revise implicit resizing - take two
Referencing unexported symbols (ExtraData) from an inlined method does
not work with MinGW.
Change-Id: I19935c84c4e2014f73bcd1801d182d193166bd44
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Diffstat (limited to 'src/quick/items/qquicktextinput.cpp')
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 2303322347..ab8e75bfef 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -2796,6 +2796,19 @@ void QQuickTextInputPrivate::setBottomPadding(qreal value, bool reset) } } +bool QQuickTextInputPrivate::isImplicitResizeEnabled() const +{ + return !extra.isAllocated() || extra->implicitResize; +} + +void QQuickTextInputPrivate::setImplicitResizeEnabled(bool enabled) +{ + if (!enabled) + extra.value().implicitResize = false; + else if (extra.isAllocated()) + extra->implicitResize = true; +} + void QQuickTextInputPrivate::updateLayout() { Q_Q(QQuickTextInput); @@ -2821,7 +2834,7 @@ void QQuickTextInputPrivate::updateLayout() line.setLineWidth(INT_MAX); const bool wasInLayout = inLayout; inLayout = true; - if (!extra.isAllocated() || extra->implicitResize) + if (isImplicitResizeEnabled()) q->setImplicitWidth(qCeil(line.naturalTextWidth()) + q->leftPadding() + q->rightPadding()); inLayout = wasInLayout; if (inLayout) // probably the result of a binding loop, but by letting it @@ -2853,7 +2866,7 @@ void QQuickTextInputPrivate::updateLayout() q->polish(); q->update(); - if (!extra.isAllocated() || extra->implicitResize) { + if (isImplicitResizeEnabled()) { if (!requireImplicitWidth && !q->widthValid()) q->setImplicitSize(width + q->leftPadding() + q->rightPadding(), height + q->topPadding() + q->bottomPadding()); else |