diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-09-13 12:19:51 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-09-14 07:53:02 +0000 |
commit | 79278993120533dbc72c5dfeff8a45e9289c4639 (patch) | |
tree | 9f311bc493369e267301023a43bb8a0c095ff4b7 /src/Authoring/Studio/Palettes/Action/ActionView.cpp | |
parent | c876a6832fa6bf6d05b8e2ec0f0d51b96e85fbba (diff) |
Disconnect action browser dialogs before initial selection
If the browser dialog had been shown to another instance previously,
the selection change connection would still point to wrong instance at
the time the initial selection was set to the shown dialog.
This would either trigger property change on wrong instance or crash
if the instance was no longer valid.
Task-number: QT3DS-2318
Change-Id: Ia7afac2b25c4e389e1ced698486240ffdc65b7de
Reviewed-by: Janne Kangas <janne.kangas@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Action/ActionView.cpp')
-rw-r--r-- | src/Authoring/Studio/Palettes/Action/ActionView.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/Authoring/Studio/Palettes/Action/ActionView.cpp b/src/Authoring/Studio/Palettes/Action/ActionView.cpp index 1cb5ab2d..7cfdc2d1 100644 --- a/src/Authoring/Studio/Palettes/Action/ActionView.cpp +++ b/src/Authoring/Studio/Palettes/Action/ActionView.cpp @@ -422,9 +422,8 @@ QObject *ActionView::showTriggerObjectBrowser(const QPoint &point) const auto actionInfo = m_actionsModel->actionInfoAt(m_currentActionIndex); const auto instanceHandle = GetBridge()->GetInstance(actionInfo.m_Owner, actionInfo.m_TriggerObject); - m_triggerObjectBrowser->selectAndExpand(instanceHandle, actionInfo.m_Owner); - m_triggerObjectBrowser->disconnect(); + m_triggerObjectBrowser->selectAndExpand(instanceHandle, actionInfo.m_Owner); CDialogs::showWidgetBrowser(this, m_triggerObjectBrowser, point); connect(m_triggerObjectBrowser, &ObjectBrowserView::selectionChanged, @@ -454,9 +453,8 @@ QObject *ActionView::showTargetObjectBrowser(const QPoint &point) const auto actionInfo = m_actionsModel->actionInfoAt(m_currentActionIndex); const auto instanceHandle = GetBridge()->GetInstance(actionInfo.m_Owner, actionInfo.m_TargetObject); - m_targetObjectBrowser->selectAndExpand(instanceHandle, actionInfo.m_Owner); - m_targetObjectBrowser->disconnect(); + m_targetObjectBrowser->selectAndExpand(instanceHandle, actionInfo.m_Owner); CDialogs::showWidgetBrowser(this, m_targetObjectBrowser, point); connect(m_targetObjectBrowser, &ObjectBrowserView::selectionChanged, @@ -517,8 +515,8 @@ QObject *ActionView::showEventBrowser(const QPoint &point) m_eventsBrowser->setModel(m_eventsModel); - m_eventsBrowser->selectAndExpand(QString::fromStdWString(actionInfo.m_Event)); m_eventsBrowser->disconnect(); + m_eventsBrowser->selectAndExpand(QString::fromStdWString(actionInfo.m_Event)); CDialogs::showWidgetBrowser(this, m_eventsBrowser, point); connect(m_eventsBrowser, &EventsBrowserView::selectionChanged, @@ -553,8 +551,8 @@ QObject *ActionView::showHandlerBrowser(const QPoint &point) m_handlerBrowser->setModel(m_handlersModel); - m_handlerBrowser->selectAndExpand(QString::fromStdWString(actionInfo.m_Handler)); m_handlerBrowser->disconnect(); + m_handlerBrowser->selectAndExpand(QString::fromStdWString(actionInfo.m_Handler)); CDialogs::showWidgetBrowser(this, m_handlerBrowser, point); connect(m_handlerBrowser, &EventsBrowserView::selectionChanged, @@ -601,8 +599,8 @@ QObject *ActionView::showEventBrowserForArgument(int handle, const QPoint &point eventName = QString::fromWCharArray(eventInfo.m_Name.wide_str()); } } - m_fireEventsBrowser->selectAndExpand(eventName); m_fireEventsBrowser->disconnect(); + m_fireEventsBrowser->selectAndExpand(eventName); CDialogs::showWidgetBrowser(this, m_fireEventsBrowser, point); connect(m_fireEventsBrowser, &EventsBrowserView::selectionChanged, |