diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-12-22 13:32:04 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-12-22 14:29:51 +0000 |
commit | 31a655402ff194e556853e6877f1a464a8e51243 (patch) | |
tree | 31158fdbb1e0ff17bba67f398859c2e9a92e3672 /src/imports/controls/material/qquickmaterialbusyindicator.cpp | |
parent | 368e8046184f71b31618e49de4f5e49ee20db5f4 (diff) |
Material: cleanup the internal ID from BusyIndicator
Same as da27cace for the Default style.
An internal ID in the OpacityAnimator element prevented deferred
execution for the whole content item. Apply the same visibility trick
in C++ to avoid having to use an ID in QML.
Change-Id: I4b54bbe3044aff9603b1135ac25d7325e01fdff2
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/controls/material/qquickmaterialbusyindicator.cpp')
-rw-r--r-- | src/imports/controls/material/qquickmaterialbusyindicator.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/imports/controls/material/qquickmaterialbusyindicator.cpp b/src/imports/controls/material/qquickmaterialbusyindicator.cpp index 9df8f5d2..bd15390b 100644 --- a/src/imports/controls/material/qquickmaterialbusyindicator.cpp +++ b/src/imports/controls/material/qquickmaterialbusyindicator.cpp @@ -197,6 +197,17 @@ void QQuickMaterialBusyIndicator::setColor(QColor color) update(); } +bool QQuickMaterialBusyIndicator::isRunning() const +{ + return isVisible(); +} + +void QQuickMaterialBusyIndicator::setRunning(bool running) +{ + if (running) + setVisible(true); +} + int QQuickMaterialBusyIndicator::elapsed() const { return m_elapsed; @@ -205,14 +216,23 @@ int QQuickMaterialBusyIndicator::elapsed() const void QQuickMaterialBusyIndicator::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 *QQuickMaterialBusyIndicator::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { QQuickMaterialBusyIndicatorNode *node = static_cast<QQuickMaterialBusyIndicatorNode *>(oldNode); - if (isVisible() && width() > 0 && height() > 0) { + if (isRunning() && width() > 0 && height() > 0) { if (!node) { node = new QQuickMaterialBusyIndicatorNode(this); node->start(); |