Kaydet (Commit) 06fc11cc authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) Andras Timar

ofz#7109 infinite regress

Change-Id: Iac0bd81c9b0e3ac6b005bb0065895ca1b4ca4233
Reviewed-on: https://gerrit.libreoffice.org/51827Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMichael Stahl <Michael.Stahl@cib.de>
(cherry picked from commit d7608726)
üst fcc96313
...@@ -79,6 +79,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader const &objHdr, LwpSvStream* p ...@@ -79,6 +79,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader const &objHdr, LwpSvStream* p
, m_bGettingMarginsSameAsParent(false) , m_bGettingMarginsSameAsParent(false)
, m_bGettingHasProtection(false) , m_bGettingHasProtection(false)
, m_bGettingIsProtected(false) , m_bGettingIsProtected(false)
, m_bGettingIsAutoGrowDown(false)
, m_bGettingMarginsValue(false) , m_bGettingMarginsValue(false)
, m_bGettingExtMarginsValue(false) , m_bGettingExtMarginsValue(false)
, m_bGettingUsePrinterSettings(false) , m_bGettingUsePrinterSettings(false)
...@@ -399,7 +400,7 @@ LwpVirtualLayout* LwpVirtualLayout::FindChildByType(LWP_LAYOUT_TYPE eType) ...@@ -399,7 +400,7 @@ LwpVirtualLayout* LwpVirtualLayout::FindChildByType(LWP_LAYOUT_TYPE eType)
*/ */
bool LwpVirtualLayout::IsFitGraphic() bool LwpVirtualLayout::IsFitGraphic()
{ {
return IsAutoGrowRight() && !IsAutoGrowLeft() && IsAutoGrowDown(); return IsAutoGrowRight() && !IsAutoGrowLeft() && GetIsAutoGrowDown();
} }
/** /**
...@@ -1164,7 +1165,7 @@ bool LwpMiddleLayout::IsAutoGrowDown() ...@@ -1164,7 +1165,7 @@ bool LwpMiddleLayout::IsAutoGrowDown()
rtl::Reference<LwpObject> xBase(GetBasedOnStyle()); rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(xBase.get())) if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(xBase.get()))
{ {
return pLay->IsAutoGrowDown(); return pLay->GetIsAutoGrowDown();
} }
} }
return LwpVirtualLayout::IsAutoGrowDown(); return LwpVirtualLayout::IsAutoGrowDown();
......
...@@ -103,7 +103,6 @@ public: ...@@ -103,7 +103,6 @@ public:
virtual double GetColGap(sal_uInt16 nIndex); virtual double GetColGap(sal_uInt16 nIndex);
virtual bool IsAutoGrow(){ return false;} virtual bool IsAutoGrow(){ return false;}
virtual bool IsAutoGrowUp(){ return false;} virtual bool IsAutoGrowUp(){ return false;}
virtual bool IsAutoGrowDown(){ return false;}
virtual bool IsAutoGrowLeft(){ return false;} virtual bool IsAutoGrowLeft(){ return false;}
virtual bool IsAutoGrowRight(){ return false;} virtual bool IsAutoGrowRight(){ return false;}
bool IsFitGraphic(); bool IsFitGraphic();
...@@ -137,6 +136,15 @@ public: ...@@ -137,6 +136,15 @@ public:
m_bGettingIsProtected = false; m_bGettingIsProtected = false;
return bRet; return bRet;
} }
bool GetIsAutoGrowDown()
{
if (m_bGettingIsAutoGrowDown)
throw std::runtime_error("recursion in layout");
m_bGettingIsAutoGrowDown = true;
bool bRet = IsAutoGrowDown();
m_bGettingIsAutoGrowDown = false;
return bRet;
}
bool GetHasProtection() bool GetHasProtection()
{ {
if (m_bGettingHasProtection) if (m_bGettingHasProtection)
...@@ -216,6 +224,7 @@ protected: ...@@ -216,6 +224,7 @@ protected:
bool HasProtection(); bool HasProtection();
virtual bool HonorProtection(); virtual bool HonorProtection();
virtual bool IsProtected(); virtual bool IsProtected();
virtual bool IsAutoGrowDown(){ return false;}
virtual double MarginsValue(sal_uInt8 /*nWhichSide*/){return 0;} virtual double MarginsValue(sal_uInt8 /*nWhichSide*/){return 0;}
virtual double ExtMarginsValue(sal_uInt8 /*nWhichSide*/){return 0;} virtual double ExtMarginsValue(sal_uInt8 /*nWhichSide*/){return 0;}
virtual bool MarginsSameAsParent(); virtual bool MarginsSameAsParent();
...@@ -224,6 +233,7 @@ protected: ...@@ -224,6 +233,7 @@ protected:
bool m_bGettingMarginsSameAsParent; bool m_bGettingMarginsSameAsParent;
bool m_bGettingHasProtection; bool m_bGettingHasProtection;
bool m_bGettingIsProtected; bool m_bGettingIsProtected;
bool m_bGettingIsAutoGrowDown;
bool m_bGettingMarginsValue; bool m_bGettingMarginsValue;
bool m_bGettingExtMarginsValue; bool m_bGettingExtMarginsValue;
bool m_bGettingUsePrinterSettings; bool m_bGettingUsePrinterSettings;
...@@ -351,7 +361,6 @@ public: ...@@ -351,7 +361,6 @@ public:
LwpColor* GetBackColor(); LwpColor* GetBackColor();
virtual bool IsAutoGrow() override; virtual bool IsAutoGrow() override;
virtual bool IsAutoGrowUp() override; virtual bool IsAutoGrowUp() override;
virtual bool IsAutoGrowDown() override;
virtual bool IsAutoGrowLeft() override; virtual bool IsAutoGrowLeft() override;
virtual bool IsAutoGrowRight() override; virtual bool IsAutoGrowRight() override;
virtual sal_uInt8 GetContentOrientation() override; virtual sal_uInt8 GetContentOrientation() override;
...@@ -389,6 +398,7 @@ protected: ...@@ -389,6 +398,7 @@ protected:
virtual bool MarginsSameAsParent() override; virtual bool MarginsSameAsParent() override;
virtual double MarginsValue(sal_uInt8 nWhichSide) override; virtual double MarginsValue(sal_uInt8 nWhichSide) override;
virtual double ExtMarginsValue(sal_uInt8 nWhichSide) override; virtual double ExtMarginsValue(sal_uInt8 nWhichSide) override;
virtual bool IsAutoGrowDown() override;
private: private:
LwpObjectID m_BasedOnStyle; LwpObjectID m_BasedOnStyle;
LwpLayoutGeometry* Geometry(); LwpLayoutGeometry* Geometry();
......
...@@ -467,7 +467,7 @@ void LwpPageLayout::ConvertFillerPageText(XFContentContainer* pCont) ...@@ -467,7 +467,7 @@ void LwpPageLayout::ConvertFillerPageText(XFContentContainer* pCont)
//get fillerpage story from division info //get fillerpage story from division info
LwpDocument* pDoc = m_pFoundry->GetDocument(); LwpDocument* pDoc = m_pFoundry->GetDocument();
LwpDivInfo* pDivInfo = dynamic_cast<LwpDivInfo*>(pDoc->GetDivInfoID().obj().get()); LwpDivInfo* pDivInfo = dynamic_cast<LwpDivInfo*>(pDoc->GetDivInfoID().obj().get());
LwpStory* pStory = dynamic_cast<LwpStory*>(pDivInfo->GetFillerPageTextID().obj().get()); LwpStory* pStory = pDivInfo ? dynamic_cast<LwpStory*>(pDivInfo->GetFillerPageTextID().obj().get()) : nullptr;
//parse fillerpage story //parse fillerpage story
if(pStory) if(pStory)
...@@ -772,7 +772,7 @@ void LwpHeaderLayout::ParseMargins(XFHeaderStyle* ph1) ...@@ -772,7 +772,7 @@ void LwpHeaderLayout::ParseMargins(XFHeaderStyle* ph1)
{ {
//Set height: from top of header to top of body, including the spacing between header and body //Set height: from top of header to top of body, including the spacing between header and body
double height = GetGeometryHeight()- GetMarginsValue(MARGIN_TOP); double height = GetGeometryHeight()- GetMarginsValue(MARGIN_TOP);
if( IsAutoGrowDown() ) if (GetIsAutoGrowDown())
{ {
ph1->SetMinHeight(height); ph1->SetMinHeight(height);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment