aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2011-07-25 16:43:55 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-26 09:37:52 +0200
commit3870e1478b64627f247fe1aa482d50a4367c0523 (patch)
treeb6f8e5724afef1fa39a8005342f906f67ce3d483 /src
parent96801c909a0d63a584e45c08277372c2b999fcce (diff)
Fix crash when assigning a list property to transitions.
This fixes the crash, but doesn't actually assign any Transitions (the transitions list will now be empty, rather than contain a null Transition object). Correct assignment is a general language issue, and will be fixed separately. Task-number: QTBUG-20227 Change-Id: Ie224d06b1d8bb82d03c5eba378affb7167f08724 Reviewed-by: Alan Alpert Reviewed-on: http://codereview.qt.nokia.com/2152 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/declarative/util/qdeclarativestategroup.cpp35
-rw-r--r--src/qtquick1/util/qdeclarativestategroup.cpp35
2 files changed, 68 insertions, 2 deletions
diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp
index a3f57d4a55..c098a38f9c 100644
--- a/src/declarative/util/qdeclarativestategroup.cpp
+++ b/src/declarative/util/qdeclarativestategroup.cpp
@@ -73,6 +73,11 @@ public:
static QDeclarativeState *at_state(QDeclarativeListProperty<QDeclarativeState> *list, int index);
static void clear_states(QDeclarativeListProperty<QDeclarativeState> *list);
+ static void append_transition(QDeclarativeListProperty<QDeclarativeTransition> *list, QDeclarativeTransition *state);
+ static int count_transitions(QDeclarativeListProperty<QDeclarativeTransition> *list);
+ static QDeclarativeTransition *at_transition(QDeclarativeListProperty<QDeclarativeTransition> *list, int index);
+ static void clear_transitions(QDeclarativeListProperty<QDeclarativeTransition> *list);
+
QList<QDeclarativeState *> states;
QList<QDeclarativeTransition *> transitions;
@@ -218,7 +223,35 @@ void QDeclarativeStateGroupPrivate::clear_states(QDeclarativeListProperty<QDecla
QDeclarativeListProperty<QDeclarativeTransition> QDeclarativeStateGroup::transitionsProperty()
{
Q_D(QDeclarativeStateGroup);
- return QDeclarativeListProperty<QDeclarativeTransition>(this, d->transitions);
+ return QDeclarativeListProperty<QDeclarativeTransition>(this, &d->transitions, &QDeclarativeStateGroupPrivate::append_transition,
+ &QDeclarativeStateGroupPrivate::count_transitions,
+ &QDeclarativeStateGroupPrivate::at_transition,
+ &QDeclarativeStateGroupPrivate::clear_transitions);
+}
+
+void QDeclarativeStateGroupPrivate::append_transition(QDeclarativeListProperty<QDeclarativeTransition> *list, QDeclarativeTransition *trans)
+{
+ QDeclarativeStateGroup *_this = static_cast<QDeclarativeStateGroup *>(list->object);
+ if (trans)
+ _this->d_func()->transitions.append(trans);
+}
+
+int QDeclarativeStateGroupPrivate::count_transitions(QDeclarativeListProperty<QDeclarativeTransition> *list)
+{
+ QDeclarativeStateGroup *_this = static_cast<QDeclarativeStateGroup *>(list->object);
+ return _this->d_func()->transitions.count();
+}
+
+QDeclarativeTransition *QDeclarativeStateGroupPrivate::at_transition(QDeclarativeListProperty<QDeclarativeTransition> *list, int index)
+{
+ QDeclarativeStateGroup *_this = static_cast<QDeclarativeStateGroup *>(list->object);
+ return _this->d_func()->transitions.at(index);
+}
+
+void QDeclarativeStateGroupPrivate::clear_transitions(QDeclarativeListProperty<QDeclarativeTransition> *list)
+{
+ QDeclarativeStateGroup *_this = static_cast<QDeclarativeStateGroup *>(list->object);
+ _this->d_func()->transitions.clear();
}
/*!
diff --git a/src/qtquick1/util/qdeclarativestategroup.cpp b/src/qtquick1/util/qdeclarativestategroup.cpp
index 6bf1a2f23a..60ca08ca17 100644
--- a/src/qtquick1/util/qdeclarativestategroup.cpp
+++ b/src/qtquick1/util/qdeclarativestategroup.cpp
@@ -75,6 +75,11 @@ public:
static QDeclarative1State *at_state(QDeclarativeListProperty<QDeclarative1State> *list, int index);
static void clear_states(QDeclarativeListProperty<QDeclarative1State> *list);
+ static void append_transition(QDeclarativeListProperty<QDeclarative1Transition> *list, QDeclarative1Transition *state);
+ static int count_transitions(QDeclarativeListProperty<QDeclarative1Transition> *list);
+ static QDeclarative1Transition *at_transition(QDeclarativeListProperty<QDeclarative1Transition> *list, int index);
+ static void clear_transitions(QDeclarativeListProperty<QDeclarative1Transition> *list);
+
QList<QDeclarative1State *> states;
QList<QDeclarative1Transition *> transitions;
@@ -221,7 +226,35 @@ void QDeclarative1StateGroupPrivate::clear_states(QDeclarativeListProperty<QDecl
QDeclarativeListProperty<QDeclarative1Transition> QDeclarative1StateGroup::transitionsProperty()
{
Q_D(QDeclarative1StateGroup);
- return QDeclarativeListProperty<QDeclarative1Transition>(this, d->transitions);
+ return QDeclarativeListProperty<QDeclarative1Transition>(this, &d->transitions, &QDeclarative1StateGroupPrivate::append_transition,
+ &QDeclarative1StateGroupPrivate::count_transitions,
+ &QDeclarative1StateGroupPrivate::at_transition,
+ &QDeclarative1StateGroupPrivate::clear_transitions);
+}
+
+void QDeclarative1StateGroupPrivate::append_transition(QDeclarativeListProperty<QDeclarative1Transition> *list, QDeclarative1Transition *trans)
+{
+ QDeclarative1StateGroup *_this = static_cast<QDeclarative1StateGroup *>(list->object);
+ if (trans)
+ _this->d_func()->transitions.append(trans);
+}
+
+int QDeclarative1StateGroupPrivate::count_transitions(QDeclarativeListProperty<QDeclarative1Transition> *list)
+{
+ QDeclarative1StateGroup *_this = static_cast<QDeclarative1StateGroup *>(list->object);
+ return _this->d_func()->transitions.count();
+}
+
+QDeclarative1Transition *QDeclarative1StateGroupPrivate::at_transition(QDeclarativeListProperty<QDeclarative1Transition> *list, int index)
+{
+ QDeclarative1StateGroup *_this = static_cast<QDeclarative1StateGroup *>(list->object);
+ return _this->d_func()->transitions.at(index);
+}
+
+void QDeclarative1StateGroupPrivate::clear_transitions(QDeclarativeListProperty<QDeclarative1Transition> *list)
+{
+ QDeclarative1StateGroup *_this = static_cast<QDeclarative1StateGroup *>(list->object);
+ _this->d_func()->transitions.clear();
}
/*!