diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-10-03 14:03:57 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-10-03 12:54:36 +0000 |
commit | 0a5db49d0d57822adc630ac9c2158096bede6d00 (patch) | |
tree | 6784b5c2713539b1d9de84022cdfba2ff898b128 /src/quick | |
parent | 4653217c3f36e7914f2cc0573347a078dd11768f (diff) |
QQuickTextEdit/Input: revise implicit resizing
Rename explicitImplicitSize to better descriptive implicitResize,
and add a method to disable the default behavior. QQuickTextField
was unable to access the flag directly, because ExtraData is not
exported (and we prefer to keep it that way).
Change-Id: Ia8b8281267adfc376e03a14882708e9cf80f0451
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit_p_p.h | 9 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput_p_p.h | 9 |
4 files changed, 22 insertions, 8 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 5523beb72a..9c77f11d74 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -2115,7 +2115,7 @@ QQuickTextEditPrivate::ExtraData::ExtraData() , explicitLeftPadding(false) , explicitRightPadding(false) , explicitBottomPadding(false) - , explicitImplicitSize(false) + , implicitResize(true) { } @@ -2346,7 +2346,7 @@ void QQuickTextEdit::updateSize() const bool wasInLayout = d->inLayout; d->inLayout = true; - if (!d->extra.isAllocated() || !d->extra->explicitImplicitSize) + if (!d->extra.isAllocated() || d->extra->implicitResize) setImplicitWidth(naturalWidth + leftPadding() + rightPadding()); d->inLayout = wasInLayout; if (d->inLayout) // probably the result of a binding loop, but by letting it @@ -2366,7 +2366,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->explicitImplicitSize) { + if (!d->extra.isAllocated() || d->extra->implicitResize) { // ### 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()); diff --git a/src/quick/items/qquicktextedit_p_p.h b/src/quick/items/qquicktextedit_p_p.h index 90ed7f071e..1ff141f3d5 100644 --- a/src/quick/items/qquicktextedit_p_p.h +++ b/src/quick/items/qquicktextedit_p_p.h @@ -94,7 +94,7 @@ public: bool explicitLeftPadding : 1; bool explicitRightPadding : 1; bool explicitBottomPadding : 1; - bool explicitImplicitSize : 1; + bool implicitResize : 1; }; QLazilyAllocated<ExtraData> extra; @@ -155,6 +155,13 @@ public: void setRightPadding(qreal value, bool reset = false); void setBottomPadding(qreal value, bool reset = false); + void setImplicitResizeEnabled(bool enabled) { + if (!enabled) + extra.value().implicitResize = false; + else if (extra.isAllocated()) + extra->implicitResize = true; + } + QColor color; QColor selectionColor; QColor selectedTextColor; diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index d69c489b2d..2303322347 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -2518,7 +2518,7 @@ QQuickTextInputPrivate::ExtraData::ExtraData() , explicitLeftPadding(false) , explicitRightPadding(false) , explicitBottomPadding(false) - , explicitImplicitSize(false) + , implicitResize(true) { } @@ -2821,7 +2821,7 @@ void QQuickTextInputPrivate::updateLayout() line.setLineWidth(INT_MAX); const bool wasInLayout = inLayout; inLayout = true; - if (!extra.isAllocated() || !extra->explicitImplicitSize) + if (!extra.isAllocated() || extra->implicitResize) 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 +2853,7 @@ void QQuickTextInputPrivate::updateLayout() q->polish(); q->update(); - if (!extra.isAllocated() || !extra->explicitImplicitSize) { + if (!extra.isAllocated() || extra->implicitResize) { if (!requireImplicitWidth && !q->widthValid()) q->setImplicitSize(width + q->leftPadding() + q->rightPadding(), height + q->topPadding() + q->bottomPadding()); else diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h index 4946adc7e7..7e1f18130e 100644 --- a/src/quick/items/qquicktextinput_p_p.h +++ b/src/quick/items/qquicktextinput_p_p.h @@ -84,7 +84,7 @@ public: bool explicitLeftPadding : 1; bool explicitRightPadding : 1; bool explicitBottomPadding : 1; - bool explicitImplicitSize : 1; + bool implicitResize : 1; }; QLazilyAllocated<ExtraData> extra; @@ -443,6 +443,13 @@ public: void setRightPadding(qreal value, bool reset = false); void setBottomPadding(qreal value, bool reset = false); + void setImplicitResizeEnabled(bool enabled) { + if (!enabled) + extra.value().implicitResize = false; + else if (extra.isAllocated()) + extra->implicitResize = true; + } + private: void removeSelectedText(); void internalSetText(const QString &txt, int pos = -1, bool edited = true); |