aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickspinbox.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-04-18 15:35:32 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-04-18 15:40:44 +0000
commit1a7be215415eacc9c1210b8e686d6ae517893806 (patch)
tree44fb0cf36acbaa1a4ea16371f715fcc6947ac9f3 /src/quicktemplates2/qquickspinbox.cpp
parentd3333971f66daf36996cfd4afa6767d308e43e21 (diff)
SpinBox: add up|down.implicitIndicatorWidth|Height
[ChangeLog][Controls][SpinBox] Added up.implicitIndicatorWidth, up.implicitIndicatorHeight, down.implicitIndicatorWidth, and down.implicitIndicatorHeight properties. Change-Id: I2cdc4e95f8cc3f0e47ce3b24346781f44809eecd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickspinbox.cpp')
-rw-r--r--src/quicktemplates2/qquickspinbox.cpp69
1 files changed, 66 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp
index 3dc10f34..c5bde74e 100644
--- a/src/quicktemplates2/qquickspinbox.cpp
+++ b/src/quicktemplates2/qquickspinbox.cpp
@@ -151,6 +151,9 @@ public:
void handleRelease(const QPointF &point) override;
void handleUngrab() override;
+ void itemImplicitWidthChanged(QQuickItem *item) override;
+ void itemImplicitHeightChanged(QQuickItem *item) override;
+
bool editable;
bool wrap;
int from;
@@ -426,6 +429,24 @@ void QQuickSpinBoxPrivate::handleUngrab()
stopPressRepeat();
}
+void QQuickSpinBoxPrivate::itemImplicitWidthChanged(QQuickItem *item)
+{
+ QQuickControlPrivate::itemImplicitWidthChanged(item);
+ if (item == up->indicator())
+ emit up->implicitIndicatorWidthChanged();
+ else if (item == down->indicator())
+ emit down->implicitIndicatorWidthChanged();
+}
+
+void QQuickSpinBoxPrivate::itemImplicitHeightChanged(QQuickItem *item)
+{
+ QQuickControlPrivate::itemImplicitHeightChanged(item);
+ if (item == up->indicator())
+ emit up->implicitIndicatorHeightChanged();
+ else if (item == down->indicator())
+ emit down->implicitIndicatorHeightChanged();
+}
+
QQuickSpinBox::QQuickSpinBox(QQuickItem *parent)
: QQuickControl(*(new QQuickSpinBoxPrivate), parent)
{
@@ -441,6 +462,13 @@ QQuickSpinBox::QQuickSpinBox(QQuickItem *parent)
#endif
}
+QQuickSpinBox::~QQuickSpinBox()
+{
+ Q_D(QQuickSpinBox);
+ d->removeImplicitSizeListener(d->up->indicator());
+ d->removeImplicitSizeListener(d->down->indicator());
+}
+
/*!
\qmlproperty int QtQuick.Controls::SpinBox::from
@@ -711,9 +739,13 @@ void QQuickSpinBox::setValueFromText(const QJSValue &callback)
\qmlproperty bool QtQuick.Controls::SpinBox::up.pressed
\qmlproperty Item QtQuick.Controls::SpinBox::up.indicator
\qmlproperty bool QtQuick.Controls::SpinBox::up.hovered
+ \qmlproperty real QtQuick.Controls::SpinBox::up.implicitIndicatorWidth
+ \qmlproperty real QtQuick.Controls::SpinBox::up.implicitIndicatorHeight
These properties hold the up indicator item and whether it is pressed or
- hovered. The \c up.hovered property was introduced in QtQuick.Controls 2.1.
+ hovered. The \c up.hovered property was introduced in QtQuick.Controls 2.1,
+ and the \c up.implicitIndicatorWidth and \c up.implicitIndicatorHeight
+ properties were introduced in QtQuick.Controls 2.5.
\sa increase()
*/
@@ -728,9 +760,13 @@ QQuickSpinButton *QQuickSpinBox::up() const
\qmlproperty bool QtQuick.Controls::SpinBox::down.pressed
\qmlproperty Item QtQuick.Controls::SpinBox::down.indicator
\qmlproperty bool QtQuick.Controls::SpinBox::down.hovered
+ \qmlproperty real QtQuick.Controls::SpinBox::down.implicitIndicatorWidth
+ \qmlproperty real QtQuick.Controls::SpinBox::down.implicitIndicatorHeight
These properties hold the down indicator item and whether it is pressed or
- hovered. The \c down.hovered property was introduced in QtQuick.Controls 2.1.
+ hovered. The \c down.hovered property was introduced in QtQuick.Controls 2.1,
+ and the \c down.implicitIndicatorWidth and \c down.implicitIndicatorHeight
+ properties were introduced in QtQuick.Controls 2.5.
\sa decrease()
*/
@@ -1105,13 +1141,24 @@ void QQuickSpinButton::setIndicator(QQuickItem *indicator)
if (!d->indicator.isExecuting())
d->cancelIndicator();
+ const qreal oldImplicitIndicatorWidth = implicitIndicatorWidth();
+ const qreal oldImplicitIndicatorHeight = implicitIndicatorHeight();
+
+ QQuickSpinBox *spinBox = static_cast<QQuickSpinBox *>(parent());
+ QQuickSpinBoxPrivate::get(spinBox)->removeImplicitSizeListener(d->indicator);
delete d->indicator;
d->indicator = indicator;
if (indicator) {
if (!indicator->parentItem())
- indicator->setParentItem(static_cast<QQuickItem *>(parent()));
+ indicator->setParentItem(spinBox);
+ QQuickSpinBoxPrivate::get(spinBox)->addImplicitSizeListener(indicator);
}
+
+ if (!qFuzzyCompare(oldImplicitIndicatorWidth, implicitIndicatorWidth()))
+ emit implicitIndicatorWidthChanged();
+ if (!qFuzzyCompare(oldImplicitIndicatorHeight, implicitIndicatorHeight()))
+ emit implicitIndicatorHeightChanged();
if (!d->indicator.isExecuting())
emit indicatorChanged();
}
@@ -1132,4 +1179,20 @@ void QQuickSpinButton::setHovered(bool hovered)
emit hoveredChanged();
}
+qreal QQuickSpinButton::implicitIndicatorWidth() const
+{
+ Q_D(const QQuickSpinButton);
+ if (!d->indicator)
+ return 0;
+ return d->indicator->implicitWidth();
+}
+
+qreal QQuickSpinButton::implicitIndicatorHeight() const
+{
+ Q_D(const QQuickSpinButton);
+ if (!d->indicator)
+ return 0;
+ return d->indicator->implicitHeight();
+}
+
QT_END_NAMESPACE