aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/modelinglib
diff options
context:
space:
mode:
authorJochen Becher <[email protected]>2018-08-08 20:14:40 +0200
committerJochen Becher <[email protected]>2018-08-26 15:54:49 +0000
commit7a3c78595078c8933fee0ff9f5fe31c4d8cc76cd (patch)
tree43c7f48a50f6f77c9ac2982689138d7b52e559fe /src/libs/modelinglib
parent3b5d74c6c4a4582dbb61fb9699c7d039bc794ce7 (diff)
ModelEditor: Fix scene boundary on export
Change-Id: I93d783b2db7e65f5d7cbab2c7b2367587be320d5 Reviewed-by: Christian Stenger <[email protected]>
Diffstat (limited to 'src/libs/modelinglib')
-rw-r--r--src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp b/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp
index 576fd718581..53007c7f2f6 100644
--- a/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp
+++ b/src/libs/modelinglib/qmt/diagram_scene/diagramscenemodel.cpp
@@ -36,6 +36,7 @@
#include "qmt/diagram/dobject.h"
#include "qmt/diagram/drelation.h"
+#include "qmt/diagram/dswimlane.h"
#include "qmt/diagram_controller/diagramcontroller.h"
#include "qmt/diagram_controller/dselection.h"
#include "qmt/diagram_scene/items/objectitem.h"
@@ -956,14 +957,26 @@ void DiagramSceneModel::saveSelectionStatusBeforeExport(bool exportSelectedEleme
m_graphicsScene->clearSelection();
removeExtraSceneItems();
- if (!exportSelectedElements) {
- status->m_sceneBoundingRect = m_graphicsScene->itemsBoundingRect();
- } else {
- foreach (QGraphicsItem *item, m_graphicsItems) {
- if (status->m_selectedItems.contains(item) || status->m_secondarySelectedItems.contains(item))
+ foreach (QGraphicsItem *item, m_graphicsItems) {
+ if (!exportSelectedElements
+ || status->m_selectedItems.contains(item)
+ || status->m_secondarySelectedItems.contains(item)) {
+ // TODO introduce interface for calculating export boundary
+ if (SwimlaneItem *swimlane = dynamic_cast<SwimlaneItem *>(item)) {
+ QRectF boundary = item->mapRectToScene(swimlane->boundingRect());
+ if (swimlane->swimlane()->isHorizontal()) {
+ boundary.setLeft(status->m_sceneBoundingRect.left());
+ boundary.setRight(status->m_sceneBoundingRect.right());
+ } else {
+ boundary.setTop(status->m_sceneBoundingRect.top());
+ boundary.setBottom(status->m_sceneBoundingRect.bottom());
+ }
+ status->m_sceneBoundingRect |= boundary;
+ } else {
status->m_sceneBoundingRect |= item->mapRectToScene(item->boundingRect());
- else
- item->hide();
+ }
+ } else {
+ item->hide();
}
}
}