forked from qt-creator/qt-creator
ModelEditor: Fix scene boundary on export
Change-Id: I93d783b2db7e65f5d7cbab2c7b2367587be320d5 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -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,13 +957,25 @@ 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))
|
||||
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
|
||||
}
|
||||
} else {
|
||||
item->hide();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user