diff options
author | Jochen Becher <jochen_becher@gmx.de> | 2017-12-23 20:00:45 +0100 |
---|---|---|
committer | Jochen Becher <jochen_becher@gmx.de> | 2018-01-09 14:22:19 +0000 |
commit | 4be71d31794ec5270b24f8cb275d25651b22c7b5 (patch) | |
tree | 78f962ff654a96f800743bc05540eb8587c148b5 /src/libs/modelinglib | |
parent | 959d577920de0575f3df31697b8b71e05fd7e9d3 (diff) |
ModelEditor: Set correct sceneRect when opening diagram with swimlanes
Change-Id: I66a025695c44112fd4e8c532eed17a0d38c60a90
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/libs/modelinglib')
3 files changed, 11 insertions, 0 deletions
diff --git a/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp b/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp index f342a1fe9a..944c25e1d1 100644 --- a/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp +++ b/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp @@ -191,6 +191,11 @@ QGraphicsScene *DiagramSceneModel::graphicsScene() const return m_graphicsScene; } +QRectF DiagramSceneModel::sceneRect() const +{ + return m_sceneRect; +} + bool DiagramSceneModel::hasSelection() const { return !m_graphicsScene->selectedItems().isEmpty(); @@ -995,6 +1000,7 @@ void DiagramSceneModel::recalcSceneRectSize() if (!dynamic_cast<SwimlaneItem *>(item)) sceneRect |= item->mapRectToScene(item->boundingRect()); } + m_sceneRect = sceneRect; emit sceneRectChanged(sceneRect); } diff --git a/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.h b/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.h index 4edafde518..46b1641bd9 100644 --- a/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.h +++ b/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.h @@ -31,6 +31,7 @@ #include <QList> #include <QHash> #include <QSet> +#include <QRectF> QT_BEGIN_NAMESPACE class QGraphicsItem; @@ -95,6 +96,7 @@ public: MDiagram *diagram() const { return m_diagram; } void setDiagram(MDiagram *diagram); QGraphicsScene *graphicsScene() const; + QRectF sceneRect() const; bool hasSelection() const; bool hasMultiObjectsSelection() const; @@ -187,6 +189,7 @@ private: Busy m_busyState = NotBusy; OriginItem *m_originItem = nullptr; QGraphicsItem *m_focusItem = nullptr; + QRectF m_sceneRect; }; } // namespace qmt diff --git a/src/libs/modelinglib/qmt/diagram_widgets_ui/diagramview.cpp b/src/libs/modelinglib/qmt/diagram_widgets_ui/diagramview.cpp index 25ac120ee7..ecc7fb327c 100644 --- a/src/libs/modelinglib/qmt/diagram_widgets_ui/diagramview.cpp +++ b/src/libs/modelinglib/qmt/diagram_widgets_ui/diagramview.cpp @@ -66,6 +66,8 @@ void DiagramView::setDiagramSceneModel(DiagramSceneModel *diagramSceneModel) setScene(m_diagramSceneModel->graphicsScene()); connect(m_diagramSceneModel, &DiagramSceneModel::sceneRectChanged, this, &DiagramView::onSceneRectChanged, Qt::QueuedConnection); + // Signal is connected after diagram is updated. Enforce setting of scene rect. + onSceneRectChanged(m_diagramSceneModel->sceneRect()); } } |