aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/modelinglib
diff options
context:
space:
mode:
authorJochen Becher <jochen_becher@gmx.de>2017-12-23 20:00:45 +0100
committerJochen Becher <jochen_becher@gmx.de>2018-01-09 14:22:19 +0000
commit4be71d31794ec5270b24f8cb275d25651b22c7b5 (patch)
tree78f962ff654a96f800743bc05540eb8587c148b5 /src/libs/modelinglib
parent959d577920de0575f3df31697b8b71e05fd7e9d3 (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')
-rw-r--r--src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp6
-rw-r--r--src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.h3
-rw-r--r--src/libs/modelinglib/qmt/diagram_widgets_ui/diagramview.cpp2
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());
}
}