13#include <QtQml/qqmlinfo.h>
14#include <QtQuick/private/qquickitem_p.h>
15#include <QtQuick/private/qquickclipnode_p.h>
16#include <QtQuick/private/qquickflickable_p.h>
18#if QT_CONFIG(accessibility)
19#include <QtQuick/private/qquickaccessibleattached_p.h>
24using namespace Qt::StringLiterals;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
94
95
96
97
98
99
100
101
104
105
106
107
108
109
110
111
112
115
116
117
118
119
120
121
122
123
124
128#if QT_CONFIG(accessibility)
140 const QMarginsF oldInset = getInset();
141 extra.value().topInset = value;
142 extra.value().hasTopInset = !reset;
143 if (!qFuzzyCompare(oldInset.top(), value)) {
144 emit q->topInsetChanged();
145 q->insetChange(getInset(), oldInset);
152 const QMarginsF oldInset = getInset();
153 extra.value().leftInset = value;
154 extra.value().hasLeftInset = !reset;
155 if (!qFuzzyCompare(oldInset.left(), value)) {
156 emit q->leftInsetChanged();
157 q->insetChange(getInset(), oldInset);
164 const QMarginsF oldInset = getInset();
165 extra.value().rightInset = value;
166 extra.value().hasRightInset = !reset;
167 if (!qFuzzyCompare(oldInset.right(), value)) {
168 emit q->rightInsetChanged();
169 q->insetChange(getInset(), oldInset);
176 const QMarginsF oldInset = getInset();
177 extra.value().bottomInset = value;
178 extra.value().hasBottomInset = !reset;
179 if (!qFuzzyCompare(oldInset.bottom(), value)) {
180 emit q->bottomInsetChanged();
181 q->insetChange(getInset(), oldInset);
196 const auto flickable = qobject_cast<QQuickFlickable *>(background->parentItem());
198 QQuickItemPrivate *p = QQuickItemPrivate::get(background);
199 if (((!p->widthValid() || !extra.isAllocated() || !extra->hasBackgroundWidth) && qFuzzyIsNull(background->x()))
200 || (extra.isAllocated() && (extra->hasLeftInset || extra->hasRightInset))) {
201 const qreal bgWidth = flickable ? flickable->width() : width;
202 background->setX(getLeftInset());
203 background->setWidth(bgWidth - getLeftInset() - getRightInset());
206 if (((!p->heightValid() || !extra.isAllocated() || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y()))
207 || (extra.isAllocated() && (extra->hasTopInset || extra->hasBottomInset))) {
208 const qreal bgHeight = flickable ? flickable->height() : height;
209 background->setY(getTopInset());
210 background->setHeight(bgHeight - getTopInset() - getBottomInset());
217
218
219
220
221
222
223
227 inheritFont(QQuickControlPrivate::parentFont(q));
232 QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font;
233 parentFont.setResolveMask(extra.isAllocated() ? extra->requestedFont.resolveMask() | font.resolveMask() : font.resolveMask());
235 const QFont defaultFont = QQuickTheme::font(QQuickTheme::TextArea);
236 QFont resolvedFont = parentFont.resolve(defaultFont);
238 setFont_helper(resolvedFont);
242
243
244
245
249 QFont oldFont = sourceFont;
250 q->QQuickTextEdit::setFont(font);
252 QQuickControlPrivate::updateFontRecur(q, font);
255 emit q->fontChanged();
258#if QT_CONFIG(quicktemplates2_hover)
259void QQuickTextAreaPrivate::updateHoverEnabled(
bool enabled,
bool xplicit)
262 if (!xplicit && explicitHoverEnabled)
265 bool wasEnabled = q->isHoverEnabled();
266 explicitHoverEnabled = xplicit;
267 if (wasEnabled != enabled) {
268 q->setAcceptHoverEvents(enabled);
269 QQuickControlPrivate::updateHoverEnabledRecur(q, enabled);
270 emit q->hoverEnabledChanged();
279 q->setParentItem(flickable->contentItem());
282 background->setParentItem(flickable);
284 QObjectPrivate::connect(q, &QQuickTextArea::contentSizeChanged,
this, &QQuickTextAreaPrivate::resizeFlickableContent);
285 QObjectPrivate::connect(q, &QQuickTextEdit::cursorRectangleChanged,
this, &QQuickTextAreaPrivate::ensureCursorVisible);
287 QObject::connect(flickable, &QQuickFlickable::contentXChanged, q, &QQuickItem::update);
288 QObject::connect(flickable, &QQuickFlickable::contentYChanged, q, &QQuickItem::update);
290 QQuickItemPrivate::get(flickable)->updateOrAddGeometryChangeListener(
this, QQuickGeometryChange::Size);
291 QQuickItemPrivate::get(flickable)->addItemChangeListener(
this, QQuickItemPrivate::Destroyed);
292 QObjectPrivate::connect(flickable, &QQuickFlickable::contentWidthChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
293 QObjectPrivate::connect(flickable, &QQuickFlickable::contentHeightChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
301 q->setParentItem(
nullptr);
302 if (background && background->parentItem() == flickable)
303 background->setParentItem(q);
305 QObjectPrivate::disconnect(q, &QQuickTextArea::contentSizeChanged,
this, &QQuickTextAreaPrivate::resizeFlickableContent);
306 QObjectPrivate::disconnect(q, &QQuickTextEdit::cursorRectangleChanged,
this, &QQuickTextAreaPrivate::ensureCursorVisible);
308 QObject::disconnect(flickable, &QQuickFlickable::contentXChanged, q, &QQuickItem::update);
309 QObject::disconnect(flickable, &QQuickFlickable::contentYChanged, q, &QQuickItem::update);
311 QQuickItemPrivate::get(flickable)->updateOrRemoveGeometryChangeListener(
this, QQuickGeometryChange::Nothing);
312 QQuickItemPrivate::get(flickable)->removeItemChangeListener(
this, QQuickItemPrivate::Destroyed);
313 QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentWidthChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
314 QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentHeightChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
332 const qreal tp = q->topPadding();
333 const qreal lp = q->leftPadding();
334 const QRectF cr = q->cursorRectangle();
336 if (cr.left() <= cx + lp) {
341 const qreal rp = q->rightPadding();
342 const QRectF nr = q->cursorPosition() < q->length() ? q->positionToRectangle(q->cursorPosition() + 1) : QRectF();
343 if (qFuzzyCompare(nr.y(), cr.y()) && nr.right() >= cx + lp + w - rp)
344 flickable->setContentX(nr.right() - w + rp);
345 else if (cr.right() >= cx + lp + w - rp)
346 flickable->setContentX(cr.right() - w + rp);
349 if (cr.top() <= cy + tp) {
352 const qreal bp = q->bottomPadding();
353 if (cr.bottom() >= cy + tp + h - bp && cr.bottom() <=
flickable->contentHeight())
354 flickable->setContentY(cr.bottom() - h + bp);
364 const qreal w = wrapMode == QQuickTextArea::NoWrap ? qMax(flickable->width(), flickable->contentWidth()) : flickable->width();
366 q->setSize(QSizeF(w, h));
377 flickable->setContentWidth(q->implicitWidth());
378 flickable->setContentHeight(q->implicitHeight());
384 if (!resizingBackground && item == background) {
385 QQuickItemPrivate *p = QQuickItemPrivate::get(item);
388 if (change.widthChange())
389 extra.value().hasBackgroundWidth = p->widthValid();
390 if (change.heightChange())
391 extra.value().hasBackgroundHeight = p->heightValid();
402 return QQuickItemPrivate::getImplicitWidth();
407 return QQuickItemPrivate::getImplicitHeight();
413 QQuickTextEditPrivate::implicitWidthChanged();
417 QQuickItemPrivate::implicitWidthChanged();
418 emit q->implicitWidthChanged3();
424 QQuickTextEditPrivate::implicitHeightChanged();
428 QQuickItemPrivate::implicitHeightChanged();
429 emit q->implicitHeightChanged3();
432#if QT_CONFIG(accessibility)
433void QQuickTextAreaPrivate::accessibilityActiveChanged(
bool active)
435 QQuickTextEditPrivate::accessibilityActiveChanged(active);
436 if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q_func()))
437 accessibleAttached->setDescriptionImplicitly(placeholder);
444 quickCancelDeferred(q, backgroundName());
450 if (background.wasExecuted())
453 if (!background || complete)
454 quickBeginDeferred(q, backgroundName(), background);
456 quickCompleteDeferred(q, backgroundName(), background);
462 if (item == background)
463 emit q->implicitBackgroundWidthChanged();
469 if (item == background)
470 emit q->implicitBackgroundHeightChanged();
476 if (item == background) {
477 background =
nullptr;
478 emit q->implicitBackgroundWidthChanged();
479 emit q->implicitBackgroundHeightChanged();
487 return QQuickTheme::palette(QQuickTheme::TextArea);
493 const auto focusReasonChanged = QQuickItemPrivate::setLastFocusChangeReason(reason);
494 if (focusReasonChanged)
495 emit q->focusReasonChanged();
497 return focusReasonChanged;
500QQuickTextArea::QQuickTextArea(QQuickItem *parent)
501 : QQuickTextEdit(*(
new QQuickTextAreaPrivate), parent)
504 d->initialized =
true;
505 setActiveFocusOnTab(
true);
506 setAcceptedMouseButtons(Qt::AllButtons);
507 d->setImplicitResizeEnabled(
false);
508 d->pressHandler.control =
this;
510#if QT_VERSION < QT_VERSION_CHECK(7
, 0
, 0
)
511 if (qEnvironmentVariable(
"QT_QUICK_CONTROLS_TEXT_SELECTION_BEHAVIOR") == u"old"_s)
512 QQuickTextEdit::setOldSelectionDefault();
516QQuickTextArea::~QQuickTextArea()
520 d->detachFlickable();
521 QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry);
524QQuickTextAreaAttached *QQuickTextArea::qmlAttachedProperties(QObject *object)
526 return new QQuickTextAreaAttached(object);
529QFont QQuickTextArea::font()
const
531 Q_D(
const QQuickTextArea);
532 QFont font = QQuickTextEdit::font();
534 font.setResolveMask(d->extra.isAllocated() ? d->extra->requestedFont.resolveMask() : 0);
538void QQuickTextArea::setFont(
const QFont &font)
541 if (d->extra.isAllocated()
542 && d->extra.value().requestedFont.resolveMask() == font.resolveMask()
543 && d->extra.value().requestedFont == font)
546 d->extra.value().requestedFont = font;
551
552
553
554
555
556
557
558
559QQuickItem *QQuickTextArea::background()
const
561 QQuickTextAreaPrivate *d =
const_cast<QQuickTextAreaPrivate *>(d_func());
563 d->executeBackground();
564 return d->background;
567void QQuickTextArea::setBackground(QQuickItem *background)
570 if (d->background == background)
573 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, background, QStringLiteral(
"background"));
575 if (!d->background.isExecuting())
576 d->cancelBackground();
578 const qreal oldImplicitBackgroundWidth = implicitBackgroundWidth();
579 const qreal oldImplicitBackgroundHeight = implicitBackgroundHeight();
581 if (d->extra.isAllocated()) {
582 d->extra.value().hasBackgroundWidth =
false;
583 d->extra.value().hasBackgroundHeight =
false;
586 QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry);
587 QQuickControlPrivate::hideOldItem(d->background);
588 d->background = background;
591 QQuickItemPrivate *p = QQuickItemPrivate::get(background);
592 if (p->widthValid() || p->heightValid()) {
593 d->extra.value().hasBackgroundWidth = p->widthValid();
594 d->extra.value().hasBackgroundHeight = p->heightValid();
597 background->setParentItem(d->flickable);
599 background->setParentItem(
this);
600 if (qFuzzyIsNull(background->z()))
601 background->setZ(-1);
602 if (isComponentComplete())
603 d->resizeBackground();
604 QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry);
607 if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth()))
608 emit implicitBackgroundWidthChanged();
609 if (!qFuzzyCompare(oldImplicitBackgroundHeight, implicitBackgroundHeight()))
610 emit implicitBackgroundHeightChanged();
611 if (!d->background.isExecuting())
612 emit backgroundChanged();
616
617
618
619
620
621QString QQuickTextArea::placeholderText()
const
623 Q_D(
const QQuickTextArea);
624 return d->placeholder;
627void QQuickTextArea::setPlaceholderText(
const QString &text)
630 if (d->placeholder == text)
633 d->placeholder = text;
634#if QT_CONFIG(accessibility)
635 if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(
this))
636 accessibleAttached->setDescriptionImplicitly(text);
638 emit placeholderTextChanged();
642
643
644
645
646
647
648
649QColor QQuickTextArea::placeholderTextColor()
const
651 Q_D(
const QQuickTextArea);
652 return d->placeholderColor;
655void QQuickTextArea::setPlaceholderTextColor(
const QColor &color)
658 if (d->placeholderColor == color)
661 d->placeholderColor = color;
662 emit placeholderTextColorChanged();
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684Qt::FocusReason QQuickTextArea::focusReason()
const
686 Q_D(
const QQuickTextArea);
687 return d->lastFocusChangeReason();
690void QQuickTextArea::setFocusReason(Qt::FocusReason reason)
693 d->setLastFocusChangeReason(reason);
697bool QQuickTextArea::contains(
const QPointF &point)
const
699 Q_D(
const QQuickTextArea);
700 if (d->flickable && !d->flickable->contains(d->flickable->mapFromItem(
this, point)))
702 return QQuickTextEdit::contains(point);
706
707
708
709
710
711
712
713
714bool QQuickTextArea::isHovered()
const
716#if QT_CONFIG(quicktemplates2_hover)
717 Q_D(
const QQuickTextArea);
724void QQuickTextArea::setHovered(
bool hovered)
726#if QT_CONFIG(quicktemplates2_hover)
728 if (hovered == d->hovered)
731 d->hovered = hovered;
732 emit hoveredChanged();
733 QQuickToolTipAttachedPrivate::maybeSetVisibleImplicitly(
this, hovered);
740
741
742
743
744
745
746
747bool QQuickTextArea::isHoverEnabled()
const
749#if QT_CONFIG(quicktemplates2_hover)
750 Q_D(
const QQuickTextArea);
751 return d->hoverEnabled;
757void QQuickTextArea::setHoverEnabled(
bool enabled)
759#if QT_CONFIG(quicktemplates2_hover)
761 if (d->explicitHoverEnabled && enabled == d->hoverEnabled)
764 d->updateHoverEnabled(enabled,
true);
770void QQuickTextArea::resetHoverEnabled()
772#if QT_CONFIG(quicktemplates2_hover)
774 if (!d->explicitHoverEnabled)
777 d->explicitHoverEnabled =
false;
778 d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem),
false);
783
784
785
786
787
788
789
790
791
792
793qreal QQuickTextArea::implicitBackgroundWidth()
const
795 Q_D(
const QQuickTextArea);
798 return d->background->implicitWidth();
802
803
804
805
806
807
808
809
810
811
812qreal QQuickTextArea::implicitBackgroundHeight()
const
814 Q_D(
const QQuickTextArea);
817 return d->background->implicitHeight();
821
822
823
824
825
826
827
828qreal QQuickTextArea::topInset()
const
830 Q_D(
const QQuickTextArea);
831 return d->getTopInset();
834void QQuickTextArea::setTopInset(qreal inset)
837 d->setTopInset(inset);
840void QQuickTextArea::resetTopInset()
843 d->setTopInset(0,
true);
847
848
849
850
851
852
853
854qreal QQuickTextArea::leftInset()
const
856 Q_D(
const QQuickTextArea);
857 return d->getLeftInset();
860void QQuickTextArea::setLeftInset(qreal inset)
863 d->setLeftInset(inset);
866void QQuickTextArea::resetLeftInset()
869 d->setLeftInset(0,
true);
873
874
875
876
877
878
879
880qreal QQuickTextArea::rightInset()
const
882 Q_D(
const QQuickTextArea);
883 return d->getRightInset();
886void QQuickTextArea::setRightInset(qreal inset)
889 d->setRightInset(inset);
892void QQuickTextArea::resetRightInset()
895 d->setRightInset(0,
true);
899
900
901
902
903
904
905
906qreal QQuickTextArea::bottomInset()
const
908 Q_D(
const QQuickTextArea);
909 return d->getBottomInset();
912void QQuickTextArea::setBottomInset(qreal inset)
915 d->setBottomInset(inset);
918void QQuickTextArea::resetBottomInset()
921 d->setBottomInset(0,
true);
924void QQuickTextArea::classBegin()
927 QQuickTextEdit::classBegin();
931void QQuickTextArea::componentComplete()
934 d->executeBackground(
true);
935 QQuickTextEdit::componentComplete();
936 d->resizeBackground();
937#if QT_CONFIG(quicktemplates2_hover)
938 if (!d->explicitHoverEnabled)
939 setAcceptHoverEvents(QQuickControlPrivate::calcHoverEnabled(d->parentItem));
943void QQuickTextArea::itemChange(QQuickItem::ItemChange change,
const QQuickItem::ItemChangeData &value)
946 QQuickTextEdit::itemChange(change, value);
948 case ItemEnabledHasChanged:
950 case ItemSceneChange:
951 case ItemParentHasChanged:
952 if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) {
954#if QT_CONFIG(quicktemplates2_hover)
955 if (!d->explicitHoverEnabled)
956 d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem),
false);
958 if (change == ItemParentHasChanged) {
959 QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(value.item->parentItem());
961 QQuickScrollView *scrollView = qobject_cast<QQuickScrollView *>(flickable->parentItem());
963 d->attachFlickable(flickable);
973void QQuickTextArea::geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry)
976 QQuickTextEdit::geometryChange(newGeometry, oldGeometry);
977 d->resizeBackground();
980void QQuickTextArea::insetChange(
const QMarginsF &newInset,
const QMarginsF &oldInset)
985 d->resizeBackground();
988QSGNode *QQuickTextArea::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
991 QQuickDefaultClipNode *clipNode =
static_cast<QQuickDefaultClipNode *>(oldNode);
993 clipNode =
new QQuickDefaultClipNode(QRectF());
995 QQuickItem *clipper =
this;
997 clipper = d->flickable;
999 const QRectF cr = clipper->clipRect().adjusted(
1000 leftPadding(), topPadding(),
1001 (!d->cursorItem && effectiveHAlign() == HAlignment::AlignRight ? 1 : 0) - rightPadding(),
1004 clipNode->setRect(!d->flickable ? cr : cr.translated(d->flickable->contentX(), d->flickable->contentY()));
1007 QSGNode *textNode = QQuickTextEdit::updatePaintNode(clipNode->firstChild(), data);
1008 if (!textNode->parent())
1009 clipNode->appendChildNode(textNode);
1011 if (d->cursorItem) {
1012 QQuickDefaultClipNode *cursorNode = QQuickItemPrivate::get(d->cursorItem)->clipNode();
1014 cursorNode->setClipRect(d->cursorItem->mapRectFromItem(clipper, cr));
1020void QQuickTextArea::focusInEvent(QFocusEvent *event)
1022 QQuickTextEdit::focusInEvent(event);
1025void QQuickTextArea::focusOutEvent(QFocusEvent *event)
1027 QQuickTextEdit::focusOutEvent(event);
1030#if QT_CONFIG(quicktemplates2_hover)
1031void QQuickTextArea::hoverEnterEvent(QHoverEvent *event)
1033 Q_D(QQuickTextArea);
1034 QQuickTextEdit::hoverEnterEvent(event);
1035 setHovered(d->hoverEnabled);
1039void QQuickTextArea::hoverLeaveEvent(QHoverEvent *event)
1041 QQuickTextEdit::hoverLeaveEvent(event);
1047void QQuickTextArea::mousePressEvent(QMouseEvent *event)
1049 Q_D(QQuickTextArea);
1050 d->pressHandler.mousePressEvent(event);
1051 if (d->pressHandler.isActive()) {
1052 if (d->pressHandler.delayedMousePressEvent) {
1053 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1054 d->pressHandler.clearDelayedMouseEvent();
1058 const bool wasAccepted = event->isAccepted();
1059 QQuickTextEdit::mousePressEvent(event);
1065void QQuickTextArea::mouseMoveEvent(QMouseEvent *event)
1067 Q_D(QQuickTextArea);
1068 d->pressHandler.mouseMoveEvent(event);
1069 if (d->pressHandler.isActive()) {
1070 if (d->pressHandler.delayedMousePressEvent) {
1071 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1072 d->pressHandler.clearDelayedMouseEvent();
1074 QQuickTextEdit::mouseMoveEvent(event);
1078void QQuickTextArea::mouseReleaseEvent(QMouseEvent *event)
1080 Q_D(QQuickTextArea);
1081 d->pressHandler.mouseReleaseEvent(event);
1082 if (d->pressHandler.isActive()) {
1083 if (d->pressHandler.delayedMousePressEvent) {
1084 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1085 d->pressHandler.clearDelayedMouseEvent();
1087 QQuickTextEdit::mouseReleaseEvent(event);
1091void QQuickTextArea::mouseDoubleClickEvent(QMouseEvent *event)
1093 Q_D(QQuickTextArea);
1094 if (d->pressHandler.delayedMousePressEvent) {
1095 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1096 d->pressHandler.clearDelayedMouseEvent();
1098 QQuickTextEdit::mouseDoubleClickEvent(event);
1101void QQuickTextArea::timerEvent(QTimerEvent *event)
1103 Q_D(QQuickTextArea);
1104 if (event->timerId() == d->pressHandler.timer.timerId())
1105 d->pressHandler.timerEvent(event);
1107 QQuickTextEdit::timerEvent(event);
1116QQuickTextAreaAttached::QQuickTextAreaAttached(QObject *parent)
1117 : QObject(*(
new QQuickTextAreaAttachedPrivate), parent)
1122
1123
1124
1125
1126
1127
1128QQuickTextArea *QQuickTextAreaAttached::flickable()
const
1130 Q_D(
const QQuickTextAreaAttached);
1134void QQuickTextAreaAttached::setFlickable(QQuickTextArea *control)
1136 Q_D(QQuickTextAreaAttached);
1137 QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(parent());
1139 qmlWarning(parent()) <<
"TextArea attached property must be attached to an object deriving from Flickable";
1143 if (d->control == control)
1147 QQuickTextAreaPrivate::get(d->control)->detachFlickable();
1149 d->control = control;
1152 QQuickTextAreaPrivate::get(control)->attachFlickable(flickable);
1154 emit flickableChanged();
1159#include "moc_qquicktextarea_p.cpp"
void implicitWidthChanged() override
qreal getImplicitWidth() const override
bool setLastFocusChangeReason(Qt::FocusReason reason) override
QQuickFlickable * flickable
void setTopInset(qreal value, bool reset=false)
void setLeftInset(qreal value, bool reset=false)
void setRightInset(qreal value, bool reset=false)
void executeBackground(bool complete=false)
void updateFont(const QFont &font)
void setBottomInset(qreal value, bool reset=false)
void itemDestroyed(QQuickItem *item) override
void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override
void itemImplicitWidthChanged(QQuickItem *item) override
void attachFlickable(QQuickFlickable *flickable)
void resizeFlickableControl()
void inheritFont(const QFont &font)
qreal getImplicitHeight() const override
void ensureCursorVisible()
void itemImplicitHeightChanged(QQuickItem *item) override
void resizeFlickableContent()
QPalette defaultPalette() const override
void implicitHeightChanged() override
Combined button and popup list for selecting options.