diff options
Diffstat (limited to 'src/quick/util')
-rw-r--r-- | src/quick/util/qquickbehavior.cpp | 24 | ||||
-rw-r--r-- | src/quick/util/qquickbehavior_p.h | 4 | ||||
-rw-r--r-- | src/quick/util/qquickfontmetrics.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qquickpixmapcache.cpp | 15 | ||||
-rw-r--r-- | src/quick/util/qquickpropertychanges.cpp | 3 | ||||
-rw-r--r-- | src/quick/util/qquickstyledtext.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qquicktextmetrics.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qquickutilmodule.cpp | 2 |
8 files changed, 44 insertions, 10 deletions
diff --git a/src/quick/util/qquickbehavior.cpp b/src/quick/util/qquickbehavior.cpp index d024c0099b..76d464e7f8 100644 --- a/src/quick/util/qquickbehavior.cpp +++ b/src/quick/util/qquickbehavior.cpp @@ -171,9 +171,28 @@ void QQuickBehavior::setEnabled(bool enabled) emit enabledChanged(); } +/*! + \qmlproperty Variant QtQuick::Behavior::targetValue + + This property holds the target value of the property being controlled by the Behavior. + This value is set by the Behavior before the animation is started. + + \since QtQuick 2.13 +*/ +QVariant QQuickBehavior::targetValue() const +{ + Q_D(const QQuickBehavior); + return d->targetValue; +} + void QQuickBehavior::write(const QVariant &value) { Q_D(QQuickBehavior); + const bool targetValueHasChanged = d->targetValue != value; + if (targetValueHasChanged) { + d->targetValue = value; + emit targetValueChanged(); // emitting the signal here should allow + } // d->enabled to change if scripted by the user. bool bypass = !d->enabled || !d->finalized || QQmlEnginePrivate::designerMode(); if (!bypass) qmlExecuteDeferred(this); @@ -181,16 +200,13 @@ void QQuickBehavior::write(const QVariant &value) if (d->animationInstance) d->animationInstance->stop(); QQmlPropertyPrivate::write(d->property, value, QQmlPropertyData::BypassInterceptor | QQmlPropertyData::DontRemoveBinding); - d->targetValue = value; return; } bool behaviorActive = d->animation->isRunning(); - if (behaviorActive && value == d->targetValue) + if (behaviorActive && !targetValueHasChanged) return; - d->targetValue = value; - if (d->animationInstance && (d->animationInstance->duration() != -1 || d->animationInstance->isRenderThreadProxy()) diff --git a/src/quick/util/qquickbehavior_p.h b/src/quick/util/qquickbehavior_p.h index f939597d15..80a51d77af 100644 --- a/src/quick/util/qquickbehavior_p.h +++ b/src/quick/util/qquickbehavior_p.h @@ -69,6 +69,7 @@ class Q_QUICK_PRIVATE_EXPORT QQuickBehavior : public QObject, public QQmlPropert Q_CLASSINFO("DefaultProperty", "animation") Q_PROPERTY(QQuickAbstractAnimation *animation READ animation WRITE setAnimation) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) + Q_PROPERTY(QVariant targetValue READ targetValue NOTIFY targetValueChanged REVISION 13) Q_CLASSINFO("DeferredPropertyNames", "animation") public: @@ -84,8 +85,11 @@ public: bool enabled() const; void setEnabled(bool enabled); + QVariant targetValue() const; + Q_SIGNALS: void enabledChanged(); + void targetValueChanged(); private Q_SLOTS: void componentFinalized(); diff --git a/src/quick/util/qquickfontmetrics.cpp b/src/quick/util/qquickfontmetrics.cpp index f1278c366f..42b3038c48 100644 --- a/src/quick/util/qquickfontmetrics.cpp +++ b/src/quick/util/qquickfontmetrics.cpp @@ -287,7 +287,7 @@ qreal QQuickFontMetrics::lineWidth() const */ qreal QQuickFontMetrics::advanceWidth(const QString &text) const { - return m_metrics.width(text); + return m_metrics.horizontalAdvance(text); } /*! diff --git a/src/quick/util/qquickpixmapcache.cpp b/src/quick/util/qquickpixmapcache.cpp index dc8bed8125..ced0acd9ab 100644 --- a/src/quick/util/qquickpixmapcache.cpp +++ b/src/quick/util/qquickpixmapcache.cpp @@ -61,9 +61,7 @@ #include <QThread> #include <QMutex> #include <QMutexLocker> -#include <QWaitCondition> #include <QBuffer> -#include <QWaitCondition> #include <QtCore/qdebug.h> #include <private/qobject_p.h> #include <QQmlFile> @@ -222,7 +220,6 @@ private: QMutex mutex; QQuickPixmapReaderThreadObject *threadObject; - QWaitCondition waitCondition; #if QT_CONFIG(qml_network) QNetworkAccessManager *networkAccessManager(); @@ -372,15 +369,27 @@ static void maybeRemoveAlpha(QImage *image) switch (image->format()) { case QImage::Format_RGBA8888: case QImage::Format_RGBA8888_Premultiplied: + if (image->data_ptr()->convertInPlace(QImage::Format_RGBX8888, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_RGBX8888); break; case QImage::Format_A2BGR30_Premultiplied: + if (image->data_ptr()->convertInPlace(QImage::Format_BGR30, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_BGR30); break; case QImage::Format_A2RGB30_Premultiplied: + if (image->data_ptr()->convertInPlace(QImage::Format_RGB30, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_RGB30); break; default: + if (image->data_ptr()->convertInPlace(QImage::Format_RGB32, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_RGB32); break; } diff --git a/src/quick/util/qquickpropertychanges.cpp b/src/quick/util/qquickpropertychanges.cpp index 8e2ac32ace..d739c8a017 100644 --- a/src/quick/util/qquickpropertychanges.cpp +++ b/src/quick/util/qquickpropertychanges.cpp @@ -336,6 +336,9 @@ void QQuickPropertyChangesPrivate::decodeBinding(const QString &propertyPrefix, case QV4::CompiledData::Binding::Type_Boolean: var = binding->valueAsBoolean(); break; + case QV4::CompiledData::Binding::Type_Null: + var = QVariant::fromValue(nullptr); + break; default: break; } diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp index 5e1aaf121e..7d545cdb2f 100644 --- a/src/quick/util/qquickstyledtext.cpp +++ b/src/quick/util/qquickstyledtext.cpp @@ -675,7 +675,7 @@ void QQuickStyledTextPrivate::parseImageAttributes(const QChar *&ch, const QStri { qreal imgWidth = 0.0; QFontMetricsF fm(layout.font()); - const qreal spaceWidth = fm.width(QChar::Nbsp); + const qreal spaceWidth = fm.horizontalAdvance(QChar::Nbsp); const bool trailingSpace = textOut.endsWith(space); if (!updateImagePositions) { diff --git a/src/quick/util/qquicktextmetrics.cpp b/src/quick/util/qquicktextmetrics.cpp index 81088b5cd6..959980b267 100644 --- a/src/quick/util/qquicktextmetrics.cpp +++ b/src/quick/util/qquicktextmetrics.cpp @@ -186,7 +186,7 @@ void QQuickTextMetrics::setElideWidth(qreal elideWidth) */ qreal QQuickTextMetrics::advanceWidth() const { - return m_metrics.width(m_text); + return m_metrics.horizontalAdvance(m_text); } /*! diff --git a/src/quick/util/qquickutilmodule.cpp b/src/quick/util/qquickutilmodule.cpp index 31d4d4c437..5147ebc6f6 100644 --- a/src/quick/util/qquickutilmodule.cpp +++ b/src/quick/util/qquickutilmodule.cpp @@ -135,4 +135,6 @@ void QQuickUtilModule::defineModule() qmlRegisterUncreatableType<QQuickAbstractAnimation, 12>("QtQuick", 2, 12, "Animation", QQuickAbstractAnimation::tr("Animation is an abstract class")); + // 5.13 + qmlRegisterType<QQuickBehavior, 13>("QtQuick", 2, 13, "Behavior"); } |