summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Render/Q3DSTranslation.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2019-02-15 13:37:31 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2019-02-18 08:51:49 +0000
commit3b0e89e9c24be6901562dd12aef8edae02f9409f (patch)
tree02cae9c8bfb10e9975852ac015c0275bfe278975 /src/Authoring/Studio/Render/Q3DSTranslation.cpp
parentf6d6d3c415a3f440eb53a8f826ea0f355b02d705 (diff)
Fix crash when rotating directional edit views
Now we don't send drag/mouse up to renderer unless mouse down was also sent. Also some minor cleanup of related code. Task-number: QT3DS-3064 Change-Id: I8c01bb05a0a8e8817b38d7bbc8d69b4b2af3af13 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Render/Q3DSTranslation.cpp')
-rw-r--r--src/Authoring/Studio/Render/Q3DSTranslation.cpp53
1 files changed, 29 insertions, 24 deletions
diff --git a/src/Authoring/Studio/Render/Q3DSTranslation.cpp b/src/Authoring/Studio/Render/Q3DSTranslation.cpp
index fe3df8d8..236920c9 100644
--- a/src/Authoring/Studio/Render/Q3DSTranslation.cpp
+++ b/src/Authoring/Studio/Render/Q3DSTranslation.cpp
@@ -1747,31 +1747,36 @@ void Q3DSTranslation::prepareWidgetDrag(const QPoint &mousePos, Q3DSGraphObject
void Q3DSTranslation::endDrag(bool dragReset, CUpdateableDocumentEditor &inEditor)
{
- m_dragTranslator->enableAutoUpdates(true);
- if (!dragReset) {
- // send drag state to document
- IDocumentEditor &editor = inEditor.EnsureEditor(QObject::tr("Set Transformation"),
- __FILE__, __LINE__);
- editor.SetInstancePropertyValue(m_doc.GetSelectedInstance(),
- objectDefinitions().m_Node.m_Position,
- qt3dsdm::SValue(QVariant::fromValue(m_currentDragState.t)));
- editor.SetInstancePropertyValue(m_doc.GetSelectedInstance(),
- objectDefinitions().m_Node.m_Rotation,
- qt3dsdm::SValue(QVariant::fromValue(m_currentDragState.r)));
- editor.SetInstancePropertyValue(m_doc.GetSelectedInstance(),
- objectDefinitions().m_Node.m_Scale,
- qt3dsdm::SValue(QVariant::fromValue(m_currentDragState.s)));
- inEditor.FireImmediateRefresh(m_doc.GetSelectedInstance());
- } else {
- // reset node to beginning
- Q3DSNode &node = static_cast<Q3DSNode &>(m_dragTranslator->graphObject());
- Q3DSPropertyChangeList list;
- list.append(node.setPosition(m_beginDragState.t));
- list.append(node.setScale(m_beginDragState.s));
- list.append(node.setRotation(m_beginDragState.r));
- node.notifyPropertyChanges(list);
+ if (m_dragTranslator) {
+ m_dragTranslator->enableAutoUpdates(true);
+ if (!dragReset) {
+ // send drag state to document
+ IDocumentEditor &editor = inEditor.EnsureEditor(QObject::tr("Set Transformation"),
+ __FILE__, __LINE__);
+ editor.SetInstancePropertyValue(
+ m_doc.GetSelectedInstance(),
+ objectDefinitions().m_Node.m_Position,
+ qt3dsdm::SValue(QVariant::fromValue(m_currentDragState.t)));
+ editor.SetInstancePropertyValue(
+ m_doc.GetSelectedInstance(),
+ objectDefinitions().m_Node.m_Rotation,
+ qt3dsdm::SValue(QVariant::fromValue(m_currentDragState.r)));
+ editor.SetInstancePropertyValue(
+ m_doc.GetSelectedInstance(),
+ objectDefinitions().m_Node.m_Scale,
+ qt3dsdm::SValue(QVariant::fromValue(m_currentDragState.s)));
+ inEditor.FireImmediateRefresh(m_doc.GetSelectedInstance());
+ } else {
+ // reset node to beginning
+ Q3DSNode &node = static_cast<Q3DSNode &>(m_dragTranslator->graphObject());
+ Q3DSPropertyChangeList list;
+ list.append(node.setPosition(m_beginDragState.t));
+ list.append(node.setScale(m_beginDragState.s));
+ list.append(node.setRotation(m_beginDragState.r));
+ node.notifyPropertyChanges(list);
+ }
+ m_dragTranslator = nullptr;
}
- m_dragTranslator = nullptr;
endPickWidget();
}