diff options
Diffstat (limited to 'oox/source')
-rw-r--r-- | oox/source/drawingml/diagram/diagramlayoutatoms.cxx | 20 |
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: { |