From c3e0593137128080c4f740fb04843c2c06ba377b Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Wed, 29 Mar 2023 13:47:48 +0200
Subject: [PATCH] network: Move on graph with mouse.

---
 src/view/network/GraphWidget.py | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/view/network/GraphWidget.py b/src/view/network/GraphWidget.py
index 4496a291..3288e8f9 100644
--- a/src/view/network/GraphWidget.py
+++ b/src/view/network/GraphWidget.py
@@ -256,6 +256,9 @@ class GraphWidget(QGraphicsView):
         self.edge_items = []
         self.texts = {}
 
+        self.m_origin_x = 0.0
+        self.m_origin_y = 0.0
+
         scene = QGraphicsScene(self)
         scene.setItemIndexMethod(QGraphicsScene.NoIndex)
         scene.setSceneRect(0, 0, 2000, 2000)
@@ -673,7 +676,20 @@ class GraphWidget(QGraphicsView):
                 self.tmp_line.dest = pos
             self.tmp_line.update()
 
-        # If state is "move" propagate event
+        # If state is "move"
         if self._state == "move":
+            # Move on scene
+            if (not self.selected_item() and
+                event.buttons() & Qt.LeftButton):
+                old_p = self.mapToScene(self.m_origin_x, self.m_origin_y)
+                new_p = self.mapToScene(event.pos())
+                translation = new_p - old_p
+
+                self.translate(translation.x(), translation.y())
+
+                self.m_origin_x = event.x()
+                self.m_origin_y = event.y()
+
+            # Propagate event
             self.update()
             super(GraphWidget, self).mouseMoveEvent(event)
-- 
GitLab