diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-02-04 18:04:29 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-02-08 08:47:52 +0000 |
commit | 7115459791965dde6e5e5085b26110e683456930 (patch) | |
tree | d1174bfa1ae872d234d86c9852c82a1b1192ef10 /src/Authoring/Studio/Render/Q3DSTranslation.h | |
parent | 4b5f7c08272a7eeb0dca411d0979a1b856b11fba (diff) |
Make dragged objects follow the cursor accurately
Fixes issues when dragging objects by directly grabbing the object
instead of using a widget:
- Objects now accurately track the cursor
- Cursor offset to object position is calculated so there is no
initial jump when drag starts
- Axis locked dragging (shift) is supported
Task-number: QT3DS-2901
Change-Id: I5b16de517d33509b9789c0ad538d9af63dba2502
Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Render/Q3DSTranslation.h')
-rw-r--r-- | src/Authoring/Studio/Render/Q3DSTranslation.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Render/Q3DSTranslation.h b/src/Authoring/Studio/Render/Q3DSTranslation.h index e682d1cb..a6ea0491 100644 --- a/src/Authoring/Studio/Render/Q3DSTranslation.h +++ b/src/Authoring/Studio/Render/Q3DSTranslation.h @@ -183,6 +183,8 @@ private: bool m_editCameraEnabled = false; Q3DSGraphObjectTranslator *m_dragTranslator = nullptr; Q3DSCameraNode *m_dragCamera = nullptr; + QPoint m_dragStartMousePos; + QPoint m_dragPosDiff; bool m_presentationInit = false; Q3DSLayerNode *m_backgroundLayer = nullptr; @@ -259,8 +261,8 @@ public: Q3DSGraphObjectTranslator *aliasTranslator = nullptr); - void prepareDrag(Q3DSGraphObjectTranslator *selected = nullptr); - void prepareWidgetDrag(Q3DSGraphObject *obj); + void prepareDrag(const QPoint &mousePos, Q3DSGraphObjectTranslator *selected = nullptr); + void prepareWidgetDrag(const QPoint &mousePos, Q3DSGraphObject *obj); void endDrag(bool dragReset, CUpdateableDocumentEditor &inEditor); void endPickWidget(); |