diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-09-27 17:41:40 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-09-28 11:38:11 +0000 |
commit | 3f1229bb7bfd45fdc09ce8c2a16cc59e322d5d1c (patch) | |
tree | c0aef897714fd46de1023d94ec08f0bd8d7fa622 /src/quicktemplates2/qquickbuttongroup.cpp | |
parent | 576a97774e04858adee9f2080e485a715e985820 (diff) |
QQuickButtonGroup: track the checked button with a QPointer
A destroyed button removes itself from a group, but because of the
workaround added for QTBUG-52358, there's a moment after clear() when
a button is removed from a group and before it is added back to the
group. If the button gets destroyed during that period, the group
ends up with a dangling pointer.
Task-number: QTBUG-62946
Task-number: QTBUG-63470
Change-Id: If994f87b221a7e77f56458866c4d132365c45d6f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickbuttongroup.cpp')
-rw-r--r-- | src/quicktemplates2/qquickbuttongroup.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickbuttongroup.cpp b/src/quicktemplates2/qquickbuttongroup.cpp index f0813a17eb..355fcf6ab2 100644 --- a/src/quicktemplates2/qquickbuttongroup.cpp +++ b/src/quicktemplates2/qquickbuttongroup.cpp @@ -154,8 +154,6 @@ class QQuickButtonGroupPrivate : public QObjectPrivate Q_DECLARE_PUBLIC(QQuickButtonGroup) public: - QQuickButtonGroupPrivate() : checkedButton(nullptr) { } - void clear(); void buttonClicked(); void _q_updateCurrent(); @@ -165,7 +163,7 @@ public: static QQuickAbstractButton *buttons_at(QQmlListProperty<QQuickAbstractButton> *prop, int index); static void buttons_clear(QQmlListProperty<QQuickAbstractButton> *prop); - QQuickAbstractButton *checkedButton; + QPointer<QQuickAbstractButton> checkedButton; QVector<QQuickAbstractButton*> buttons; }; |