mirror of
https://github.com/overte-org/overte.git
synced 2025-06-19 19:40:20 +02:00
Don't leave user data pointers around in objects after deletion
This commit is contained in:
parent
31f9da2dcb
commit
28f3e8ba9c
1 changed files with 10 additions and 0 deletions
|
@ -28,6 +28,11 @@ public:
|
||||||
init(menu, qmlObject);
|
init(menu, qmlObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~MenuUserData() {
|
||||||
|
_widget->setUserData(USER_DATA_ID, nullptr);
|
||||||
|
_qml->setUserData(USER_DATA_ID, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
const QUuid uuid{ QUuid::createUuid() };
|
const QUuid uuid{ QUuid::createUuid() };
|
||||||
|
|
||||||
static MenuUserData* forObject(QObject* object) {
|
static MenuUserData* forObject(QObject* object) {
|
||||||
|
@ -37,12 +42,17 @@ public:
|
||||||
private:
|
private:
|
||||||
MenuUserData(const MenuUserData&);
|
MenuUserData(const MenuUserData&);
|
||||||
void init(QObject* widgetObject, QObject* qmlObject) {
|
void init(QObject* widgetObject, QObject* qmlObject) {
|
||||||
|
_widget = widgetObject;
|
||||||
|
_qml = qmlObject;
|
||||||
widgetObject->setUserData(USER_DATA_ID, this);
|
widgetObject->setUserData(USER_DATA_ID, this);
|
||||||
qmlObject->setUserData(USER_DATA_ID, this);
|
qmlObject->setUserData(USER_DATA_ID, this);
|
||||||
qmlObject->setObjectName(uuid.toString());
|
qmlObject->setObjectName(uuid.toString());
|
||||||
// Make sure we can find it again in the future
|
// Make sure we can find it again in the future
|
||||||
Q_ASSERT(VrMenu::_instance->findMenuObject(uuid.toString()));
|
Q_ASSERT(VrMenu::_instance->findMenuObject(uuid.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QObject* _widget { nullptr };
|
||||||
|
QObject* _qml { nullptr };
|
||||||
};
|
};
|
||||||
|
|
||||||
const int MenuUserData::USER_DATA_ID = QObject::registerUserData();
|
const int MenuUserData::USER_DATA_ID = QObject::registerUserData();
|
||||||
|
|
Loading…
Reference in a new issue