include/svx/svdobj.hxx | 8 ++++---- include/svx/svdovirt.hxx | 4 ++++ svx/source/svdraw/svdobj.cxx | 10 ++++++++++ svx/source/svdraw/svdovirt.cxx | 20 ++++++++++++++++++++ sw/source/core/draw/dcontact.cxx | 5 +++-- sw/source/uibase/utlui/content.cxx | 2 +- 6 files changed, 42 insertions(+), 7 deletions(-)
New commits: commit 5c9f940245e8f128979e6c45d3c5eb2192f4b8cc Author: Michael Stahl <[email protected]> AuthorDate: Wed May 8 14:20:26 2024 +0200 Commit: Thorsten Behrens <[email protected]> CommitDate: Wed May 8 20:54:07 2024 +0200 tdf#156484 svx,sw: fix visibility of shapes in header/footer Similar to commit ae132145ff42a95dc24fb124847c04af4b8c8dab, also forward IsVisible() and IsPrintable() from SdrVirtObj to its real object; evidently the properties aren't copied when creating SdrVirtObj but there is no reason for that to have these properties independent. This triggers an assert in VOCOfDrawVirtObj::createPrimitive2DSequence() because that is called during layout from getObjectRange(); the assert was added in commit ae3ec0d53a22ae5d2b7fb244a6056d0627b71873 and intended for painting, but this isn't painting, and it's not easily possible to detect if the function is called during painting, so remove the assert. Change-Id: Id2a04a5d07f43b86eb9c524b30ba74ecaf6a95c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167364 Tested-by: allotropia jenkins <[email protected]> Reviewed-by: Thorsten Behrens <[email protected]> diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index 892beb56668c..396c09e8cd94 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -752,10 +752,10 @@ public: bool IsMoveProtect() const { return m_bMovProt;} void SetResizeProtect(bool bProt); bool IsResizeProtect() const { return m_bSizProt;} - void SetPrintable(bool bPrn); - bool IsPrintable() const { return !m_bNoPrint;} - void SetVisible(bool bVisible); - bool IsVisible() const { return mbVisible;} + virtual void SetPrintable(bool isPrintable); + virtual bool IsPrintable() const; + virtual void SetVisible(bool isVisible); + virtual bool IsVisible() const; void SetMarkProtect(bool bProt); bool IsMarkProtect() const { return m_bMarkProt;} virtual bool IsSdrTextObj() const { return false; } diff --git a/include/svx/svdovirt.hxx b/include/svx/svdovirt.hxx index 17c869313067..ca5f6858ecaa 100644 --- a/include/svx/svdovirt.hxx +++ b/include/svx/svdovirt.hxx @@ -61,6 +61,10 @@ public: const SdrObject& GetReferencedObj() const; virtual void NbcSetAnchorPos(const Point& rAnchorPos) override; + virtual void SetPrintable(bool isPrintable) override; + virtual bool IsPrintable() const override; + virtual void SetVisible(bool isVisible) override; + virtual bool IsVisible() const override; virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override; virtual SdrInventor GetObjInventor() const override; virtual SdrObjKind GetObjIdentifier() const override; diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index f4d13219db0d..b23e18a6a4d3 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -2675,6 +2675,11 @@ void SdrObject::SetResizeProtect(bool bProt) } } +bool SdrObject::IsPrintable() const +{ + return !m_bNoPrint; +} + void SdrObject::SetPrintable(bool bPrn) { if( bPrn == m_bNoPrint ) @@ -2689,6 +2694,11 @@ void SdrObject::SetPrintable(bool bPrn) } } +bool SdrObject::IsVisible() const +{ + return mbVisible; +} + void SdrObject::SetVisible(bool bVisible) { if( bVisible != mbVisible ) diff --git a/svx/source/svdraw/svdovirt.cxx b/svx/source/svdraw/svdovirt.cxx index b1fe6f5cb9bb..2e1641d3864e 100644 --- a/svx/source/svdraw/svdovirt.cxx +++ b/svx/source/svdraw/svdovirt.cxx @@ -97,6 +97,26 @@ void SdrVirtObj::NbcSetAnchorPos(const Point& rAnchorPos) m_aAnchor=rAnchorPos; } +bool SdrVirtObj::IsPrintable() const +{ + return mxRefObj->IsPrintable(); +} + +void SdrVirtObj::SetPrintable(bool const isPrintable) +{ + mxRefObj->SetPrintable(isPrintable); +} + +bool SdrVirtObj::IsVisible() const +{ + return mxRefObj->IsVisible(); +} + +void SdrVirtObj::SetVisible(bool const isVisible) +{ + mxRefObj->SetVisible(isVisible); +} + void SdrVirtObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const { mxRefObj->TakeObjInfo(rInfo); diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index aac8f2393c61..115887a368dc 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -2216,8 +2216,9 @@ namespace sdr::contact void VOCOfDrawVirtObj::createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - // tdf#91260 have already checked top-level one is on the right page - assert(isPrimitiveVisible(rDisplayInfo)); + // this may be called for painting where it's a precondition that + // isPrimitiveVisible() is true, or for e.g. getObjectRange() (even + // during layout) where there are no preconditions... // nasty corner case: override to clear page frame to disable the // sub-objects' anchor check, because their anchor is always on // the first page that the page style is applied to commit d7723d04f9fdcd40957005db82e35134b55628ef Author: Michael Stahl <[email protected]> AuthorDate: Wed May 8 13:28:52 2024 +0200 Commit: Thorsten Behrens <[email protected]> CommitDate: Wed May 8 20:53:56 2024 +0200 sw: Navigator: don't show virtual drawing objects These can return a non-empty name now, so exclude them explicitly. (regression from commit ae132145ff42a95dc24fb124847c04af4b8c8dab) Change-Id: Ia7f7b9fd7abe67f3302e95b38e3b9fa30b769b5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167363 Reviewed-by: Thorsten Behrens <[email protected]> Tested-by: allotropia jenkins <[email protected]> diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 747d59462a80..1457f0b3fab2 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1010,7 +1010,7 @@ void SwContentType::FillMemberList(bool* pbContentChanged) for (const rtl::Reference<SdrObject>& pTemp : *pPage) { // #i51726# - all drawing objects can be named now - if (!pTemp->GetName().isEmpty()) + if (!pTemp->IsVirtualObj() && !pTemp->GetName().isEmpty()) { tools::Long nYPos = LONG_MIN; const bool bIsVisible = rIDDMA.IsVisibleLayerId(pTemp->GetLayer());
