aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickswipeview.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-07-15 16:49:53 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-07-18 20:02:29 +0000
commit65b323fdba1d6567c73229997f6ce0784dfc8427 (patch)
tree6994bdc77bac9c0ba01c6cbc72e3cbe832265bbe /src/quicktemplates2/qquickswipeview.cpp
parent670f58cc9885af03dfdc5d775ce2169e394d0083 (diff)
SwipeView: don't crash if attached to a non-Item
Change-Id: I381d84c45cf6cd9b1209fd0d5c7441a9f7707664 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickswipeview.cpp')
-rw-r--r--src/quicktemplates2/qquickswipeview.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/quicktemplates2/qquickswipeview.cpp b/src/quicktemplates2/qquickswipeview.cpp
index 06c9b5eb..a3f52edd 100644
--- a/src/quicktemplates2/qquickswipeview.cpp
+++ b/src/quicktemplates2/qquickswipeview.cpp
@@ -174,13 +174,7 @@ void QQuickSwipeView::setInteractive(bool interactive)
QQuickSwipeViewAttached *QQuickSwipeView::qmlAttachedProperties(QObject *object)
{
- QQuickItem *item = qobject_cast<QQuickItem *>(object);
- if (!item) {
- qWarning() << "SwipeView: attached properties must be accessed from within a child item";
- return nullptr;
- }
-
- return new QQuickSwipeViewAttached(item);
+ return new QQuickSwipeViewAttached(object);
}
void QQuickSwipeView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
@@ -249,8 +243,8 @@ class QQuickSwipeViewAttachedPrivate : public QObjectPrivate, public QQuickItemC
{
Q_DECLARE_PUBLIC(QQuickSwipeViewAttached)
public:
- QQuickSwipeViewAttachedPrivate(QQuickItem *item) :
- item(item),
+ QQuickSwipeViewAttachedPrivate() :
+ item(nullptr),
swipeView(nullptr),
index(-1),
currentIndex(-1)
@@ -394,15 +388,20 @@ void QQuickSwipeViewAttachedPrivate::itemDestroyed(QQuickItem *item)
QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Parent | QQuickItemPrivate::Destroyed);
}
-QQuickSwipeViewAttached::QQuickSwipeViewAttached(QQuickItem *item) :
- QObject(*(new QQuickSwipeViewAttachedPrivate(item)), item)
+QQuickSwipeViewAttached::QQuickSwipeViewAttached(QObject *parent) :
+ QObject(*(new QQuickSwipeViewAttachedPrivate), parent)
{
Q_D(QQuickSwipeViewAttached);
- if (item->parentItem())
- d->updateView(item->parentItem());
-
- QQuickItemPrivate *p = QQuickItemPrivate::get(item);
- p->addItemChangeListener(d, QQuickItemPrivate::Parent | QQuickItemPrivate::Destroyed);
+ d->item = qobject_cast<QQuickItem *>(parent);
+ if (d->item) {
+ if (d->item->parentItem())
+ d->updateView(d->item->parentItem());
+
+ QQuickItemPrivate *p = QQuickItemPrivate::get(d->item);
+ p->addItemChangeListener(d, QQuickItemPrivate::Parent | QQuickItemPrivate::Destroyed);
+ } else if (parent) {
+ qmlInfo(parent) << "SwipeView: attached properties must be accessed from within a child item";
+ }
}
QQuickSwipeViewAttached::~QQuickSwipeViewAttached()