diff options
author | Grzegorz Araminowicz <g.araminowicz@gmail.com> | 2017-08-24 17:26:38 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2017-09-27 15:05:40 +0200 |
commit | 7e0cb70d7fb9024f5ebf1ea988df90f0ee30baf2 (patch) | |
tree | 08f485d879507a37524cd98e60cd0b94fafbbed8 /oox/source/drawingml/diagram/diagramlayoutatoms.hxx | |
parent | 155795b9c129584febd9771014078adb6fe25932 (diff) |
SmartArt: correct behaviour of if/else nodes
else block is taken only if none of conditions in 'choose' was satisfied
Change-Id: Ie668f15c665327098e8e63b2c92cd291711e4567
Reviewed-on: https://gerrit.libreoffice.org/41533
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'oox/source/drawingml/diagram/diagramlayoutatoms.hxx')
-rw-r--r-- | oox/source/drawingml/diagram/diagramlayoutatoms.hxx | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.hxx b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx index f4928565c048..117326b625ab 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.hxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx @@ -176,21 +176,17 @@ class ConditionAtom : public LayoutAtom { public: - explicit ConditionAtom(const LayoutNode& rLayoutNode, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes); + explicit ConditionAtom(const LayoutNode& rLayoutNode, bool isElse, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes); virtual void accept( LayoutAtomVisitor& ) override; - void readElseBranch() - { mbElse=true; } - virtual void addChild( const LayoutAtomPtr & pNode ) override; - virtual const std::vector<LayoutAtomPtr>& getChildren() const override; + bool getDecision() const; private: static bool compareResult(sal_Int32 nOperator, sal_Int32 nFirst, sal_Int32 nSecond); const dgm::Point* getPresNode() const; sal_Int32 getNodeCount() const; - bool mbElse; + bool mIsElse; IteratorAttr maIter; ConditionAttr maCond; - std::vector< LayoutAtomPtr > mpElseChildNodes; }; typedef std::shared_ptr< ConditionAtom > ConditionAtomPtr; @@ -202,6 +198,9 @@ class ChooseAtom public: ChooseAtom(const LayoutNode& rLayoutNode) : LayoutAtom(rLayoutNode) {} virtual void accept( LayoutAtomVisitor& ) override; + virtual const std::vector<LayoutAtomPtr>& getChildren() const override; +private: + const std::vector<LayoutAtomPtr> maEmptyChildren; }; class LayoutNode |