aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/doc/src/dynamicview-tutorial.qdoc4
-rw-r--r--src/quick/items/context2d/qquickcontext2d.cpp2
-rw-r--r--src/quick/items/qquickitemview.cpp3
-rw-r--r--src/quick/items/qquicktextedit.cpp16
-rw-r--r--src/quick/items/qquicktextedit_p_p.h1
-rw-r--r--src/quick/items/qquicktextinput.cpp14
-rw-r--r--src/quick/items/qquicktextinput_p_p.h1
-rw-r--r--src/quick/items/qquickview.cpp2
-rw-r--r--src/quick/util/qquickglobal.cpp2
-rw-r--r--src/quick/util/qquickpixmapcache.cpp7
-rw-r--r--src/quick/util/qquickshortcut.cpp14
-rw-r--r--src/quick/util/qquickshortcut_p.h3
-rw-r--r--src/quick/util/qquickutilmodule.cpp2
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");
}