diff options
Diffstat (limited to 'src/diagramdocument.cpp')
-rw-r--r-- | src/diagramdocument.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/diagramdocument.cpp b/src/diagramdocument.cpp index e5caf13..ea73abe 100644 --- a/src/diagramdocument.cpp +++ b/src/diagramdocument.cpp @@ -15,6 +15,7 @@ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include <cmath> +#include "hub.h" #include "diagramdocument.h" #include "diagramobject.h" #include "diagramconnection.h" @@ -140,8 +141,16 @@ DiagramDocument::setMode(Mode mode) void DiagramDocument::updatePositions(DiagramObject *object) { - foreach (DiagramConnection *connection, findConnections(object)) + Connector *connector; + foreach (DiagramConnection *connection, findConnections(object)) { + connector = connection->connector(0); + if (connector->isConnected()) + connector->hub()->update(); + connector = connection->connector(1); + if (connector->isConnected()) + connector->hub()->update(); connection->updatePositions(); + } } template <class T> QList<T *> @@ -243,8 +252,10 @@ DiagramDocument::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (source && target && source != target) { DatabaseRelationship *relation = new DatabaseRelationship(); relation->createId(); - relation->setSource(source); - relation->setTarget(target); + relation->connector(0)->setHub(source->hub()); + relation->connector(1)->setHub(target->hub()); + source->hub()->update(); + target->hub()->update(); undoStack()->push(new AddItemCommand(this, relation)); } delete m_line; @@ -288,7 +299,7 @@ DiagramDocument::findConnections(DiagramObject *object) { QList<DiagramConnection *> result; foreach (DiagramConnection *connection, itemsByType<DiagramConnection>()) - if (connection->source() == object || connection->target() == object) + if (connection->connector(0)->connectedObject() == object || connection->connector(1)->connectedObject() == object) result.append(connection); return result; } |