From 3ec86ad77071af577f37a83a0b1d0389b2204716 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 16 Aug 2018 12:04:48 +0100 Subject: tdf#119284 bg for automatic not set while editing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor and reuse fdo#35779 solution for this case Change-Id: I0631cd2560aa2acc2310f95b5c4dea36a2845a58 Reviewed-on: https://gerrit.libreoffice.org/59165 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- svx/source/svdraw/svdotextdecomposition.cxx | 59 ++++++++++++++++------------- 1 file changed, 32 insertions(+), 27 deletions(-) (limited to 'svx') diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index 70f23a4e5974..5a79e8818b6d 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -852,6 +852,37 @@ void SdrTextObj::impDecomposeAutoFitTextPrimitive( rTarget = aConverter.getPrimitive2DSequence(); } +// Resolves: fdo#35779 set background color of this shape as the editeng background if there +// is one. Check the shape itself, then the host page, then that page's master page. +void SdrObject::setSuitableOutlinerBg(::Outliner& rOutliner) const +{ + const SfxItemSet* pBackgroundFillSet = &GetObjectItemSet(); + + if (drawing::FillStyle_NONE == pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue()) + { + SdrPage* pOwnerPage(getSdrPageFromSdrObject()); + if (pOwnerPage) + { + pBackgroundFillSet = &pOwnerPage->getSdrPageProperties().GetItemSet(); + + if (drawing::FillStyle_NONE == pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue()) + { + if (!pOwnerPage->IsMasterPage() && pOwnerPage->TRG_HasMasterPage()) + { + pBackgroundFillSet = &pOwnerPage->TRG_GetMasterPage().getSdrPageProperties().GetItemSet(); + } + } + } + } + + if (drawing::FillStyle_NONE != pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue()) + { + Color aColor(rOutliner.GetBackgroundColor()); + GetDraftFillColor(*pBackgroundFillSet, aColor); + rOutliner.SetBackgroundColor(aColor); + } +} + void SdrTextObj::impDecomposeBlockTextPrimitive( drawinglayer::primitive2d::Primitive2DContainer& rTarget, const drawinglayer::primitive2d::SdrBlockTextPrimitive2D& rSdrBlockTextPrimitive, @@ -882,35 +913,9 @@ void SdrTextObj::impDecomposeBlockTextPrimitive( rOutliner.SetMinAutoPaperSize(aNullSize); rOutliner.SetMaxAutoPaperSize(Size(1000000,1000000)); - // Resolves: fdo#35779 set background color of this shape as the editeng background if there - // is one. Check the shape itself, then the host page, then that page's master page. // That color needs to be restored on leaving this method Color aOriginalBackColor(rOutliner.GetBackgroundColor()); - const SfxItemSet* pBackgroundFillSet = &GetObjectItemSet(); - - if (drawing::FillStyle_NONE == pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue()) - { - SdrPage* pOwnerPage(getSdrPageFromSdrObject()); - if (pOwnerPage) - { - pBackgroundFillSet = &pOwnerPage->getSdrPageProperties().GetItemSet(); - - if (drawing::FillStyle_NONE == pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue()) - { - if (!pOwnerPage->IsMasterPage() && pOwnerPage->TRG_HasMasterPage()) - { - pBackgroundFillSet = &pOwnerPage->TRG_GetMasterPage().getSdrPageProperties().GetItemSet(); - } - } - } - } - - if (drawing::FillStyle_NONE != pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue()) - { - Color aColor(rOutliner.GetBackgroundColor()); - GetDraftFillColor(*pBackgroundFillSet, aColor); - rOutliner.SetBackgroundColor(aColor); - } + setSuitableOutlinerBg(rOutliner); // add one to rage sizes to get back to the old Rectangle and outliner measurements const sal_uInt32 nAnchorTextWidth(FRound(aAnchorTextRange.getWidth() + 1)); -- cgit