diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/doc/src/dynamicview-tutorial.qdoc | 4 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 3 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 16 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit_p_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 14 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput_p_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquickview.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qquickglobal.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qquickpixmapcache.cpp | 7 | ||||
-rw-r--r-- | src/quick/util/qquickshortcut.cpp | 14 | ||||
-rw-r--r-- | src/quick/util/qquickshortcut_p.h | 3 | ||||
-rw-r--r-- | src/quick/util/qquickutilmodule.cpp | 2 |
13 files changed, 54 insertions, 17 deletions
diff --git a/src/quick/doc/src/dynamicview-tutorial.qdoc b/src/quick/doc/src/dynamicview-tutorial.qdoc index f87f94f264..2b5bb6e0c1 100644 --- a/src/quick/doc/src/dynamicview-tutorial.qdoc +++ b/src/quick/doc/src/dynamicview-tutorial.qdoc @@ -208,8 +208,8 @@ item and then transfer the item to the items group before moving it to the pre-d repeat until the unsorted group is empty. To find the insert position for an item we request a handle for the item from the unsorted group -with the \l {DelegateModel::}{get} function. Through the model property on this -handle we can access the same model data that is available in a delegate instance of that item and +with the \l {DelegateModelGroup::}{get()} function. Through the model property on this handle we can +access the same model data that is available in a delegate instance of that item and compare against other items to determine relative position. \snippet tutorials/dynamicview/dynamicview4/dynamicview.qml 3 diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 0a09ee42de..e44ba2116e 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -189,7 +189,7 @@ QColor qt_color_from_string(const QV4::Value &name) if (isRgb) return QColor::fromRgba(qRgba(qClamp(rh, 0, 255), qClamp(gs, 0, 255), qClamp(bl, 0, 255), qClamp(alpha, 0, 255))); else if (isHsl) - return QColor::fromHsl(qClamp(rh, 0, 255), qClamp(gs, 0, 255), qClamp(bl, 0, 255), qClamp(alpha, 0, 255)); + return QColor::fromHsl(qClamp(rh, 0, 359), qClamp(gs, 0, 255), qClamp(bl, 0, 255), qClamp(alpha, 0, 255)); } return QColor(); } diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index d4c8c3f8ee..b618daf64b 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -1699,7 +1699,8 @@ void QQuickItemViewPrivate::updateCurrent(int modelIndex) updateHighlight(); if (oldCurrentIndex != currentIndex) emit q->currentIndexChanged(); - if (oldCurrentItem != currentItem) + if (oldCurrentItem != currentItem + && (!oldCurrentItem || !currentItem || oldCurrentItem->item != currentItem->item)) emit q->currentItemChanged(); releaseItem(oldCurrentItem); } diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index dc4e301a36..0a26f0119f 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -2115,6 +2115,7 @@ QQuickTextEditPrivate::ExtraData::ExtraData() , explicitLeftPadding(false) , explicitRightPadding(false) , explicitBottomPadding(false) + , explicitImplicitSize(false) { } @@ -2345,7 +2346,8 @@ void QQuickTextEdit::updateSize() const bool wasInLayout = d->inLayout; d->inLayout = true; - setImplicitWidth(naturalWidth + leftPadding() + rightPadding()); + if (!d->extra.isAllocated() || !d->extra->explicitImplicitSize) + setImplicitWidth(naturalWidth + leftPadding() + rightPadding()); d->inLayout = wasInLayout; if (d->inLayout) // probably the result of a binding loop, but by letting it return; // get this far we'll get a warning to that effect. @@ -2364,11 +2366,13 @@ void QQuickTextEdit::updateSize() QFontMetricsF fm(d->font); qreal newHeight = d->document->isEmpty() ? qCeil(fm.height()) : d->document->size().height(); - // ### Setting the implicitWidth triggers another updateSize(), and unless there are bindings nothing has changed. - if (!widthValid() && !d->requireImplicitWidth) - setImplicitSize(newWidth + leftPadding() + rightPadding(), newHeight + topPadding() + bottomPadding()); - else - setImplicitHeight(newHeight + topPadding() + bottomPadding()); + if (!d->extra.isAllocated() || !d->extra->explicitImplicitSize) { + // ### Setting the implicitWidth triggers another updateSize(), and unless there are bindings nothing has changed. + if (!widthValid() && !d->requireImplicitWidth) + setImplicitSize(newWidth + leftPadding() + rightPadding(), newHeight + topPadding() + bottomPadding()); + else + setImplicitHeight(newHeight + topPadding() + bottomPadding()); + } d->xoff = leftPadding() + qMax(qreal(0), QQuickTextUtil::alignedX(d->document->size().width(), width() - leftPadding() - rightPadding(), effectiveHAlign())); d->yoff = topPadding() + QQuickTextUtil::alignedY(d->document->size().height(), height() - topPadding() - bottomPadding(), d->vAlign); diff --git a/src/quick/items/qquicktextedit_p_p.h b/src/quick/items/qquicktextedit_p_p.h index a763f9e56e..90ed7f071e 100644 --- a/src/quick/items/qquicktextedit_p_p.h +++ b/src/quick/items/qquicktextedit_p_p.h @@ -94,6 +94,7 @@ public: bool explicitLeftPadding : 1; bool explicitRightPadding : 1; bool explicitBottomPadding : 1; + bool explicitImplicitSize : 1; }; QLazilyAllocated<ExtraData> extra; diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index c29acf3c83..041baa4199 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -2518,6 +2518,7 @@ QQuickTextInputPrivate::ExtraData::ExtraData() , explicitLeftPadding(false) , explicitRightPadding(false) , explicitBottomPadding(false) + , explicitImplicitSize(false) { } @@ -2820,7 +2821,8 @@ void QQuickTextInputPrivate::updateLayout() line.setLineWidth(INT_MAX); const bool wasInLayout = inLayout; inLayout = true; - q->setImplicitWidth(qCeil(line.naturalTextWidth()) + q->leftPadding() + q->rightPadding()); + if (!extra.isAllocated() || !extra->explicitImplicitSize) + q->setImplicitWidth(qCeil(line.naturalTextWidth()) + q->leftPadding() + q->rightPadding()); inLayout = wasInLayout; if (inLayout) // probably the result of a binding loop, but by letting it return; // get this far we'll get a warning to that effect. @@ -2851,10 +2853,12 @@ void QQuickTextInputPrivate::updateLayout() q->polish(); q->update(); - if (!requireImplicitWidth && !q->widthValid()) - q->setImplicitSize(width + q->leftPadding() + q->rightPadding(), height + q->topPadding() + q->bottomPadding()); - else - q->setImplicitHeight(height + q->topPadding() + q->bottomPadding()); + if (!extra.isAllocated() || !extra->explicitImplicitSize) { + if (!requireImplicitWidth && !q->widthValid()) + q->setImplicitSize(width + q->leftPadding() + q->rightPadding(), height + q->topPadding() + q->bottomPadding()); + else + q->setImplicitHeight(height + q->topPadding() + q->bottomPadding()); + } updateBaselineOffset(); diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h index cf0a6f5273..4946adc7e7 100644 --- a/src/quick/items/qquicktextinput_p_p.h +++ b/src/quick/items/qquicktextinput_p_p.h @@ -84,6 +84,7 @@ public: bool explicitLeftPadding : 1; bool explicitRightPadding : 1; bool explicitBottomPadding : 1; + bool explicitImplicitSize : 1; }; QLazilyAllocated<ExtraData> extra; diff --git a/src/quick/items/qquickview.cpp b/src/quick/items/qquickview.cpp index 0b3cfa17b5..b0b24ca69a 100644 --- a/src/quick/items/qquickview.cpp +++ b/src/quick/items/qquickview.cpp @@ -370,7 +370,7 @@ QList<QQmlError> QQuickView::errors() const QQmlError error; error.setDescription(QLatin1String("QQuickView: invalid qml engine.")); errs << error; - } else if (d->component->status() == QQmlComponent::Ready && !d->root) { + } else if (d->component && d->component->status() == QQmlComponent::Ready && !d->root) { QQmlError error; error.setDescription(QLatin1String("QQuickView: invalid root object.")); errs << error; diff --git a/src/quick/util/qquickglobal.cpp b/src/quick/util/qquickglobal.cpp index 391e0b7347..25dd09c01f 100644 --- a/src/quick/util/qquickglobal.cpp +++ b/src/quick/util/qquickglobal.cpp @@ -374,7 +374,7 @@ public: return QMatrix4x4(matVals); } - const QMetaObject *getMetaObjectForMetaType(int type) + const QMetaObject *getMetaObjectForMetaType(int type) Q_DECL_OVERRIDE { switch (type) { case QMetaType::QColor: diff --git a/src/quick/util/qquickpixmapcache.cpp b/src/quick/util/qquickpixmapcache.cpp index a77bfd17d3..0b7b5ce9a8 100644 --- a/src/quick/util/qquickpixmapcache.cpp +++ b/src/quick/util/qquickpixmapcache.cpp @@ -137,6 +137,7 @@ public: class Event : public QEvent { public: Event(ReadError, const QString &, const QSize &, AutoTransform, QQuickTextureFactory *factory); + ~Event(); ReadError error; QString errorString; @@ -331,6 +332,11 @@ QQuickPixmapReply::Event::Event(ReadError e, const QString &s, const QSize &iSiz { } +QQuickPixmapReply::Event::~Event() +{ + delete textureFactory; +} + QNetworkAccessManager *QQuickPixmapReader::networkAccessManager() { if (!accessManager) { @@ -1021,6 +1027,7 @@ bool QQuickPixmapReply::event(QEvent *event) data->pixmapStatus = (de->error == NoError) ? QQuickPixmap::Ready : QQuickPixmap::Error; if (data->pixmapStatus == QQuickPixmap::Ready) { data->textureFactory = de->textureFactory; + de->textureFactory = 0; data->implicitSize = de->implicitSize; data->appliedTransform = de->autoTransform; PIXMAP_PROFILE(pixmapLoadingFinished(data->url, diff --git a/src/quick/util/qquickshortcut.cpp b/src/quick/util/qquickshortcut.cpp index 36c6933af4..9f32b6c180 100644 --- a/src/quick/util/qquickshortcut.cpp +++ b/src/quick/util/qquickshortcut.cpp @@ -134,6 +134,20 @@ void QQuickShortcut::setSequence(const QVariant &sequence) } /*! + \qmlproperty string QtQuick::Shortcut::sequenceString + \since 5.6 + + This property provides the shortcut's key sequence as a string, + for display purposes (tooltips, for example). + + \sa sequence +*/ +QString QQuickShortcut::sequenceString() const +{ + return m_shortcut.toString(QKeySequence::NativeText); +} + +/*! \qmlproperty bool QtQuick::Shortcut::enabled This property holds whether the shortcut is enabled. diff --git a/src/quick/util/qquickshortcut_p.h b/src/quick/util/qquickshortcut_p.h index e16ac9df20..db02f8afae 100644 --- a/src/quick/util/qquickshortcut_p.h +++ b/src/quick/util/qquickshortcut_p.h @@ -57,6 +57,7 @@ class QQuickShortcut : public QObject, public QQmlParserStatus Q_OBJECT Q_INTERFACES(QQmlParserStatus) Q_PROPERTY(QVariant sequence READ sequence WRITE setSequence NOTIFY sequenceChanged FINAL) + Q_PROPERTY(QString sequenceString READ sequenceString NOTIFY sequenceChanged FINAL REVISION 1) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat NOTIFY autoRepeatChanged FINAL) Q_PROPERTY(Qt::ShortcutContext context READ context WRITE setContext NOTIFY contextChanged FINAL) @@ -68,6 +69,8 @@ public: QVariant sequence() const; void setSequence(const QVariant &sequence); + Q_REVISION(1) QString sequenceString() const; + bool isEnabled() const; void setEnabled(bool enabled); diff --git a/src/quick/util/qquickutilmodule.cpp b/src/quick/util/qquickutilmodule.cpp index 4f6e49fa7a..0af2343504 100644 --- a/src/quick/util/qquickutilmodule.cpp +++ b/src/quick/util/qquickutilmodule.cpp @@ -114,4 +114,6 @@ void QQuickUtilModule::defineModule() qmlRegisterType<QQuickTextMetrics>("QtQuick", 2, 4, "TextMetrics"); qmlRegisterType<QQuickShortcut>("QtQuick", 2, 5, "Shortcut"); + + qmlRegisterType<QQuickShortcut,1>("QtQuick", 2, 6, "Shortcut"); } |