diff options
author | Grzegorz Araminowicz <grzegorz.araminowicz@collabora.com> | 2019-06-04 13:51:40 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-06-04 17:23:32 +0200 |
commit | 1e1535d46f9d89a2584409d88f35b57ef920eefa (patch) | |
tree | ebc2c1dccfeb1c4b3e2c66a3cd2d9b067f91385d /oox | |
parent | 8caa7d1824ff87a82ba2f6f16351dfab5b219f63 (diff) |
SmartArt: bullet list improvements
by default start bullet list at second level
use stBulletLvl parameter to change this behaviour
Change-Id: I5084e7bf1902fdca83bea6d57a8c1f37dd2e65be
Reviewed-on: https://gerrit.libreoffice.org/73440
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/diagram/diagramlayoutatoms.cxx | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx index 4d0c18c27561..2c612233251d 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -1227,27 +1227,30 @@ void AlgAtom::layoutShape( const ShapePtr& rShape, nBaseLevel = aParagraph->getProperties().getLevel(); } + // Start bullets at: + // 1 - top level + // 2 - with children (default) + int nStartBulletsAtLevel = 2; ParamMap::const_iterator aBulletLvl = maMap.find(XML_stBulletLvl); - int nStartBulletsAtLevel = 0; if (aBulletLvl != maMap.end()) - { - nBaseLevel -= aBulletLvl->second; nStartBulletsAtLevel = aBulletLvl->second; - } + nStartBulletsAtLevel--; + bool isBulletList = false; for (auto & aParagraph : pTextBody->getParagraphs()) { - sal_Int32 nLevel = aParagraph->getProperties().getLevel(); - aParagraph->getProperties().setLevel(nLevel - nBaseLevel); - if (nStartBulletsAtLevel > 0 && nLevel >= nStartBulletsAtLevel) + sal_Int32 nLevel = aParagraph->getProperties().getLevel() - nBaseLevel; + aParagraph->getProperties().setLevel(nLevel); + if (nLevel >= nStartBulletsAtLevel) { // It is not possible to change the bullet style for text. - sal_Int32 nLeftMargin = 285750 * (nLevel - nStartBulletsAtLevel) / EMU_PER_HMM; + sal_Int32 nLeftMargin = 285750 * (nLevel - nStartBulletsAtLevel + 1) / EMU_PER_HMM; aParagraph->getProperties().getParaLeftMargin() = nLeftMargin; aParagraph->getProperties().getFirstLineIndentation() = -285750 / EMU_PER_HMM; OUString aBulletChar = OUString::fromUtf8(u8"•"); aParagraph->getProperties().getBulletList().setBulletChar(aBulletChar); aParagraph->getProperties().getBulletList().setSuffixNone(); + isBulletList = true; } } @@ -1260,8 +1263,7 @@ void AlgAtom::layoutShape( const ShapePtr& rShape, for (auto & aParagraph : pTextBody->getParagraphs()) aParagraph->getProperties().setParaAdjust(aAlignment); } - else if (std::all_of(pTextBody->getParagraphs().begin(), pTextBody->getParagraphs().end(), - [](const std::shared_ptr<TextParagraph>& aParagraph) { return aParagraph->getProperties().getLevel() == 0; })) + else if (!isBulletList) { // if not list use default alignment - centered for (auto & aParagraph : pTextBody->getParagraphs()) |