diff options
Diffstat (limited to 'src/quicktemplates2/qquicktextfield.cpp')
-rw-r--r-- | src/quicktemplates2/qquicktextfield.cpp | 163 |
1 files changed, 84 insertions, 79 deletions
diff --git a/src/quicktemplates2/qquicktextfield.cpp b/src/quicktemplates2/qquicktextfield.cpp index 2718b13e..e6ca2496 100644 --- a/src/quicktemplates2/qquicktextfield.cpp +++ b/src/quicktemplates2/qquicktextfield.cpp @@ -39,13 +39,11 @@ #include "qquickcontrol_p.h" #include "qquickcontrol_p_p.h" -#include <QtCore/qbasictimer.h> #include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquicktext_p.h> #include <QtQuick/private/qquicktextinput_p.h> #include <QtQuick/private/qquickclipnode_p.h> -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) #include <QtQuick/private/qquickaccessibleattached_p.h> #endif @@ -114,20 +112,23 @@ QT_BEGIN_NAMESPACE */ QQuickTextFieldPrivate::QQuickTextFieldPrivate() - : hovered(false) - , explicitHoverEnabled(false) - , background(nullptr) - , focusReason(Qt::OtherFocusReason) - , accessibleAttached(nullptr) + : QQuickTextInputPrivate(), +#if QT_CONFIG(quicktemplates2_hover) + hovered(false), + explicitHoverEnabled(false), +#endif + background(nullptr), + focusReason(Qt::OtherFocusReason), + accessibleAttached(nullptr) { -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) QAccessible::installActivationObserver(this); #endif } QQuickTextFieldPrivate::~QQuickTextFieldPrivate() { -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) QAccessible::removeActivationObserver(this); #endif } @@ -148,51 +149,6 @@ void QQuickTextFieldPrivate::resizeBackground() } } -qreal QQuickTextFieldPrivate::getImplicitWidth() const -{ - return QQuickItemPrivate::getImplicitWidth(); -} - -qreal QQuickTextFieldPrivate::getImplicitHeight() const -{ - return QQuickItemPrivate::getImplicitHeight(); -} - -void QQuickTextFieldPrivate::implicitWidthChanged() -{ - Q_Q(QQuickTextField); - QQuickItemPrivate::implicitWidthChanged(); - emit q->implicitWidthChanged3(); -} - -void QQuickTextFieldPrivate::implicitHeightChanged() -{ - Q_Q(QQuickTextField); - QQuickItemPrivate::implicitHeightChanged(); - emit q->implicitHeightChanged3(); -} - -QQuickTextField::QQuickTextField(QQuickItem *parent) : - QQuickTextInput(*(new QQuickTextFieldPrivate), parent) -{ - Q_D(QQuickTextField); - d->pressHandler.control = this; - d->setImplicitResizeEnabled(false); - setAcceptedMouseButtons(Qt::AllButtons); - setActiveFocusOnTab(true); -#ifndef QT_NO_CURSOR - setCursor(Qt::IBeamCursor); -#endif - QObjectPrivate::connect(this, &QQuickTextInput::readOnlyChanged, - d, &QQuickTextFieldPrivate::_q_readOnlyChanged); - QObjectPrivate::connect(this, &QQuickTextInput::echoModeChanged, - d, &QQuickTextFieldPrivate::_q_echoModeChanged); -} - -QQuickTextField::~QQuickTextField() -{ -} - /*! \internal @@ -222,6 +178,7 @@ void QQuickTextFieldPrivate::inheritFont(const QFont &f) emit q->fontChanged(); } +#if QT_CONFIG(quicktemplates2_hover) void QQuickTextFieldPrivate::updateHoverEnabled(bool enabled, bool xplicit) { Q_Q(QQuickTextField); @@ -236,22 +193,47 @@ void QQuickTextFieldPrivate::updateHoverEnabled(bool enabled, bool xplicit) emit q->hoverEnabledChanged(); } } +#endif + +qreal QQuickTextFieldPrivate::getImplicitWidth() const +{ + return QQuickItemPrivate::getImplicitWidth(); +} + +qreal QQuickTextFieldPrivate::getImplicitHeight() const +{ + return QQuickItemPrivate::getImplicitHeight(); +} + +void QQuickTextFieldPrivate::implicitWidthChanged() +{ + Q_Q(QQuickTextField); + QQuickItemPrivate::implicitWidthChanged(); + emit q->implicitWidthChanged3(); +} -void QQuickTextFieldPrivate::_q_readOnlyChanged(bool isReadOnly) +void QQuickTextFieldPrivate::implicitHeightChanged() +{ + Q_Q(QQuickTextField); + QQuickItemPrivate::implicitHeightChanged(); + emit q->implicitHeightChanged3(); +} + +void QQuickTextFieldPrivate::readOnlyChanged(bool isReadOnly) { Q_UNUSED(isReadOnly); -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) if (accessibleAttached) accessibleAttached->set_readOnly(isReadOnly); #endif -#ifndef QT_NO_CURSOR +#if QT_CONFIG(cursor) q_func()->setCursor(isReadOnly ? Qt::ArrowCursor : Qt::IBeamCursor); #endif } -void QQuickTextFieldPrivate::_q_echoModeChanged(QQuickTextField::EchoMode echoMode) +void QQuickTextFieldPrivate::echoModeChanged(QQuickTextField::EchoMode echoMode) { -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) if (accessibleAttached) accessibleAttached->set_passwordEdit((echoMode == QQuickTextField::Password || echoMode == QQuickTextField::PasswordEchoOnEdit) ? true : false); #else @@ -259,7 +241,7 @@ void QQuickTextFieldPrivate::_q_echoModeChanged(QQuickTextField::EchoMode echoMo #endif } -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) void QQuickTextFieldPrivate::accessibilityActiveChanged(bool active) { if (accessibleAttached || !active) @@ -283,16 +265,19 @@ QAccessible::Role QQuickTextFieldPrivate::accessibleRole() const } #endif -/* - Deletes "delegate" if Component.completed() has been emitted, - otherwise stores it in pendingDeletions. -*/ -void QQuickTextFieldPrivate::deleteDelegate(QObject *delegate) +QQuickTextField::QQuickTextField(QQuickItem *parent) + : QQuickTextInput(*(new QQuickTextFieldPrivate), parent) { - if (componentComplete) - delete delegate; - else if (delegate) - pendingDeletions.append(delegate); + Q_D(QQuickTextField); + d->pressHandler.control = this; + d->setImplicitResizeEnabled(false); + setAcceptedMouseButtons(Qt::AllButtons); + setActiveFocusOnTab(true); +#if QT_CONFIG(cursor) + setCursor(Qt::IBeamCursor); +#endif + QObjectPrivate::connect(this, &QQuickTextInput::readOnlyChanged, d, &QQuickTextFieldPrivate::readOnlyChanged); + QObjectPrivate::connect(this, &QQuickTextInput::echoModeChanged, d, &QQuickTextFieldPrivate::echoModeChanged); } QFont QQuickTextField::font() const @@ -331,7 +316,7 @@ void QQuickTextField::setBackground(QQuickItem *background) if (d->background == background) return; - d->deleteDelegate(d->background); + QQuickControlPrivate::destroyDelegate(d->background, this); d->background = background; if (background) { background->setParentItem(this); @@ -362,7 +347,7 @@ void QQuickTextField::setPlaceholderText(const QString &text) return; d->placeholder = text; -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) if (d->accessibleAttached) d->accessibleAttached->setDescription(text); #endif @@ -401,18 +386,26 @@ void QQuickTextField::setFocusReason(Qt::FocusReason reason) */ bool QQuickTextField::isHovered() const { +#if QT_CONFIG(quicktemplates2_hover) Q_D(const QQuickTextField); return d->hovered; +#else + return false; +#endif } void QQuickTextField::setHovered(bool hovered) { +#if QT_CONFIG(quicktemplates2_hover) Q_D(QQuickTextField); if (hovered == d->hovered) return; d->hovered = hovered; emit hoveredChanged(); +#else + Q_UNUSED(hovered); +#endif } /*! @@ -425,27 +418,37 @@ void QQuickTextField::setHovered(bool hovered) */ bool QQuickTextField::isHoverEnabled() const { +#if QT_CONFIG(quicktemplates2_hover) Q_D(const QQuickTextField); return d->hoverEnabled; +#else + return false; +#endif } void QQuickTextField::setHoverEnabled(bool enabled) { +#if QT_CONFIG(quicktemplates2_hover) Q_D(QQuickTextField); if (d->explicitHoverEnabled && enabled == d->hoverEnabled) return; d->updateHoverEnabled(enabled, true); // explicit=true +#else + Q_UNUSED(enabled); +#endif } void QQuickTextField::resetHoverEnabled() { +#if QT_CONFIG(quicktemplates2_hover) Q_D(QQuickTextField); if (!d->explicitHoverEnabled) return; d->explicitHoverEnabled = false; d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false +#endif } void QQuickTextField::classBegin() @@ -459,15 +462,14 @@ void QQuickTextField::componentComplete() { Q_D(QQuickTextField); QQuickTextInput::componentComplete(); +#if QT_CONFIG(quicktemplates2_hover) if (!d->explicitHoverEnabled) setAcceptHoverEvents(QQuickControlPrivate::calcHoverEnabled(d->parentItem)); -#ifndef QT_NO_ACCESSIBILITY +#endif +#if QT_CONFIG(accessibility) if (!d->accessibleAttached && QAccessible::isActive()) d->accessibilityActiveChanged(true); #endif - - qDeleteAll(d->pendingDeletions); - d->pendingDeletions.clear(); } void QQuickTextField::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) @@ -476,8 +478,10 @@ void QQuickTextField::itemChange(QQuickItem::ItemChange change, const QQuickItem QQuickTextInput::itemChange(change, value); if (change == ItemParentHasChanged && value.item) { d->resolveFont(); +#if QT_CONFIG(quicktemplates2_hover) if (!d->explicitHoverEnabled) d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false +#endif } } @@ -516,6 +520,7 @@ void QQuickTextField::focusOutEvent(QFocusEvent *event) setFocusReason(event->reason()); } +#if QT_CONFIG(quicktemplates2_hover) void QQuickTextField::hoverEnterEvent(QHoverEvent *event) { Q_D(QQuickTextField); @@ -531,6 +536,7 @@ void QQuickTextField::hoverLeaveEvent(QHoverEvent *event) setHovered(false); event->setAccepted(d->hoverEnabled); } +#endif void QQuickTextField::mousePressEvent(QMouseEvent *event) { @@ -584,11 +590,10 @@ void QQuickTextField::mouseDoubleClickEvent(QMouseEvent *event) void QQuickTextField::timerEvent(QTimerEvent *event) { Q_D(QQuickTextField); - if (event->timerId() == d->pressHandler.timer.timerId()) { + if (event->timerId() == d->pressHandler.timer.timerId()) d->pressHandler.timerEvent(event); - } else { + else QQuickTextInput::timerEvent(event); - } } QT_END_NAMESPACE |