diff options
author | J-P Nurmi <[email protected]> | 2015-10-03 18:23:28 +0200 |
---|---|---|
committer | J-P Nurmi <[email protected]> | 2015-10-04 08:14:49 +0000 |
commit | 1a335f6ae320dfedef617564a161b73ff276ca5b (patch) | |
tree | 5a2f2142055543e15f21c22acc300414a45431cd /src/quick/items/qquicktextedit.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 <[email protected]>
Diffstat (limited to 'src/quick/items/qquicktextedit.cpp')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 9c77f11d74..7cf3b449a0 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -773,6 +773,19 @@ void QQuickTextEditPrivate::setBottomPadding(qreal value, bool reset) } } +bool QQuickTextEditPrivate::isImplicitResizeEnabled() const +{ + return !extra.isAllocated() || extra->implicitResize; +} + +void QQuickTextEditPrivate::setImplicitResizeEnabled(bool enabled) +{ + if (!enabled) + extra.value().implicitResize = false; + else if (extra.isAllocated()) + extra->implicitResize = true; +} + QQuickTextEdit::VAlignment QQuickTextEdit::vAlign() const { Q_D(const QQuickTextEdit); @@ -2346,7 +2359,7 @@ void QQuickTextEdit::updateSize() const bool wasInLayout = d->inLayout; d->inLayout = true; - if (!d->extra.isAllocated() || d->extra->implicitResize) + if (d->isImplicitResizeEnabled()) setImplicitWidth(naturalWidth + leftPadding() + rightPadding()); d->inLayout = wasInLayout; if (d->inLayout) // probably the result of a binding loop, but by letting it @@ -2366,7 +2379,7 @@ void QQuickTextEdit::updateSize() QFontMetricsF fm(d->font); qreal newHeight = d->document->isEmpty() ? qCeil(fm.height()) : d->document->size().height(); - if (!d->extra.isAllocated() || d->extra->implicitResize) { + if (d->isImplicitResizeEnabled()) { // ### Setting the implicitWidth triggers another updateSize(), and unless there are bindings nothing has changed. if (!widthValid() && !d->requireImplicitWidth) setImplicitSize(newWidth + leftPadding() + rightPadding(), newHeight + topPadding() + bottomPadding()); |