summaryrefslogtreecommitdiff
path: root/oox/source
diff options
context:
space:
mode:
Diffstat (limited to 'oox/source')
-rw-r--r--oox/source/drawingml/diagram/diagramlayoutatoms.cxx20
1 files changed, 20 insertions, 0 deletions
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
index 1aa8d6753a4a..6af12ed4d26f 100644
--- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
@@ -523,7 +523,27 @@ void AlgAtom::layoutShape( const ShapePtr& rShape,
case XML_hierChild:
case XML_hierRoot:
+ {
+ if (rShape->getChildren().empty() || rShape->getSize().Width == 0
+ || rShape->getSize().Height == 0)
+ break;
+
+ sal_Int32 nCount = rShape->getChildren().size();
+
+ awt::Size aChildSize = rShape->getSize();
+ aChildSize.Height /= nCount;
+
+ awt::Point aChildPos(0, 0);
+ for (auto& pChild : rShape->getChildren())
+ {
+ pChild->setPosition(aChildPos);
+ pChild->setSize(aChildSize);
+ pChild->setChildSize(aChildSize);
+ aChildPos.Y += aChildSize.Height;
+ }
+
break;
+ }
case XML_lin:
{