]> git.siccegge.de Git - frida/frida.git/blobdiff - src/gui/widgets/CFGScene.cxx
Add horizontal space between BasicBlockWidgets
[frida/frida.git] / src / gui / widgets / CFGScene.cxx
index 7bed8f14b9de2d924b28dc12435a882c9a42028c..81c973540f25aeeaccdf57891d92b5e77abf4a37 100644 (file)
@@ -59,4 +59,24 @@ void CFGScene::spaceWidgets() {
             }
         }
     } while (changed);
+
+    for (BasicBlockWidget * widget : widgets) {
+        QRectF relevantRect = widget->boundingRect();
+        relevantRect.moveTo(widget->scenePos());
+        relevantRect.adjust(-20, -20, 20, 20);
+        for (QGraphicsItem * item : items(relevantRect)) {
+            if (item == widget) continue;
+            QRectF itemrect = item->boundingRect();
+            itemrect.moveTo(item->scenePos());
+            while (relevantRect.intersects(itemrect)) {
+                if (widget->scenePos().x() > item->scenePos().x()) {
+                    widget->moveBy(1, 0);
+                    relevantRect.moveTo(widget->scenePos());
+                } else {
+                    item->moveBy(1, 0);
+                    itemrect.moveTo(item->scenePos());
+                }
+            }
+        }
+    }
 }