]> git.siccegge.de Git - frida/frida.git/blobdiff - src/gui/widgets/CFGScene.cxx
Move each widget exactly once per layout iteration
[frida/frida.git] / src / gui / widgets / CFGScene.cxx
index ec33463c835c5c1a3ee8856e1bf8dc445bb55835..7e31acbd8dc1af8f05b82c700c10d155b9f191cb 100644 (file)
@@ -75,13 +75,12 @@ void CFGScene::spaceWidgets() {
                        if (NULL != next[0]
                            && (next[0]->getEntry() - widget->getEntry()).y() > 0
                            && (next[0]->getEntry() - out).y() < 50) {
-                               next[0]->moveBy(0, 1);
+                               widget->moveBy(0, -1);
                                changed = true;
-                       }
-                       if (NULL != next[1]
+                       } else if (NULL != next[1]
                            && (next[1]->getEntry() - widget->getEntry()).y() > 0
                            && (next[1]->getEntry() - out).y() < 50) {
-                               next[1]->moveBy(0, 1);
+                               widget->moveBy(0, -1);
                                changed = true;
                        }
                }
@@ -93,6 +92,7 @@ void CFGScene::spaceWidgets() {
                relevantRect.adjust(-20, -20, 20, 20);
                for (QGraphicsItem * item : items(relevantRect)) {
                        if (item == widget) continue;
+                       if (std::find(widgets.begin(), widgets.end(), item) == widgets.end()) continue;
                        QRectF itemrect = item->boundingRect();
                        itemrect.moveTo(item->scenePos());
                        while (relevantRect.intersects(itemrect)) {