From e5aa0b5b07eb4cf7170e9ad0162b9145c076d4f8 Mon Sep 17 00:00:00 2001 From: cneben Date: Wed, 21 Aug 2024 16:12:00 +0200 Subject: [PATCH 1/2] #241 Fix node dragging cosmetic issue. Signed-off-by: cneben --- src/qanDraggableCtrl.cpp | 9 +++++++++ src/qanDraggableCtrl.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/qanDraggableCtrl.cpp b/src/qanDraggableCtrl.cpp index c1ece15c..30248a79 100644 --- a/src/qanDraggableCtrl.cpp +++ b/src/qanDraggableCtrl.cpp @@ -226,6 +226,10 @@ void DraggableCtrl::beginDragMove(const QPointF& sceneDragPos, bool dragSelec _targetItem->setDragged(true); _initialSceneDragPos = sceneDragPos; + if (!_target->isGroup()) { + _initialTargetZ = _targetItem->z(); // 20240821: Force maximum graph z when dragging a node (not a group), restored + _targetItem->setZ(graph->getMaxZ()); // in endDragMove + } const auto rootItem = getGraph()->getContainerItem(); if (rootItem != nullptr) // Project in scene rect (for example if a node is part of a group) _initialTargetScenePos = rootItem->mapFromItem(_targetItem, QPointF{0,0}); @@ -419,6 +423,11 @@ void DraggableCtrl::endDragMove(bool dragSelection, bool notify) !_targetItem) return; + if (!_target->isGroup()) { + _targetItem->setZ(_initialTargetZ); + _initialTargetZ = 0.; + } + if (_target->getIsProtected() || // Prevent dragging of protected or locked objects _target->getLocked()) return; diff --git a/src/qanDraggableCtrl.h b/src/qanDraggableCtrl.h index 141d128c..f02f4c30 100644 --- a/src/qanDraggableCtrl.h +++ b/src/qanDraggableCtrl.h @@ -113,6 +113,8 @@ class DraggableCtrl : public qan::AbstractDraggableCtrl QPointF _initialSceneDragPos{0., 0.}; //! Internal (target) initial dragging position. QPointF _initialTargetScenePos{0., 0.}; + //! Internal (target) initial dragging z. + double _initialTargetZ = 0.; //! Last group hovered during a node drag (cached to generate a dragLeave signal on qan::Group). QPointer _lastProposedGroup{nullptr}; From 0eef27044d352f8dcaa830b4b29a9c42e71e128a Mon Sep 17 00:00:00 2001 From: cneben Date: Wed, 21 Aug 2024 16:16:54 +0200 Subject: [PATCH 2/2] #241 Be even more aggressive. Signed-off-by: cneben --- src/qanDraggableCtrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qanDraggableCtrl.cpp b/src/qanDraggableCtrl.cpp index 30248a79..0626fa8b 100644 --- a/src/qanDraggableCtrl.cpp +++ b/src/qanDraggableCtrl.cpp @@ -228,7 +228,7 @@ void DraggableCtrl::beginDragMove(const QPointF& sceneDragPos, bool dragSelec _initialSceneDragPos = sceneDragPos; if (!_target->isGroup()) { _initialTargetZ = _targetItem->z(); // 20240821: Force maximum graph z when dragging a node (not a group), restored - _targetItem->setZ(graph->getMaxZ()); // in endDragMove + _targetItem->setZ(graph->getMaxZ() + 10.); // in endDragMove } const auto rootItem = getGraph()->getContainerItem(); if (rootItem != nullptr) // Project in scene rect (for example if a node is part of a group)