diff options
Diffstat (limited to 'src/imports/controls/qquickdefaultbusyindicator.cpp')
-rw-r--r-- | src/imports/controls/qquickdefaultbusyindicator.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/imports/controls/qquickdefaultbusyindicator.cpp b/src/imports/controls/qquickdefaultbusyindicator.cpp index 138e94e8..c02d8128 100644 --- a/src/imports/controls/qquickdefaultbusyindicator.cpp +++ b/src/imports/controls/qquickdefaultbusyindicator.cpp @@ -171,6 +171,17 @@ void QQuickDefaultBusyIndicator::setFill(const QColor &fill) update(); } +bool QQuickDefaultBusyIndicator::isRunning() const +{ + return isVisible(); +} + +void QQuickDefaultBusyIndicator::setRunning(bool running) +{ + if (running) + setVisible(true); +} + int QQuickDefaultBusyIndicator::elapsed() const { return m_elapsed; @@ -179,14 +190,23 @@ int QQuickDefaultBusyIndicator::elapsed() const void QQuickDefaultBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) { QQuickItem::itemChange(change, data); - if (change == ItemVisibleHasChanged) + switch (change) { + case ItemOpacityHasChanged: + if (qFuzzyIsNull(data.realValue)) + setVisible(false); + break; + case ItemVisibleHasChanged: update(); + break; + default: + break; + } } QSGNode *QQuickDefaultBusyIndicator::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) { QQuickDefaultBusyIndicatorNode *node = static_cast<QQuickDefaultBusyIndicatorNode *>(oldNode); - if (isVisible() && width() > 0 && height() > 0) { + if (isRunning() && width() > 0 && height() > 0) { if (!node) { node = new QQuickDefaultBusyIndicatorNode(this); node->start(); |