[Libreoffice-commits] core.git: include/svx sd/source svx/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Aug 16 13:01:23 UTC 2018


 include/svx/svdobj.hxx                      |    3 +
 sd/source/ui/view/sdview.cxx                |    8 +--
 svx/source/svdraw/svdotextdecomposition.cxx |   59 +++++++++++++++-------------
 3 files changed, 39 insertions(+), 31 deletions(-)

New commits:
commit 3ec86ad77071af577f37a83a0b1d0389b2204716
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Aug 16 12:04:48 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Aug 16 15:00:56 2018 +0200

    tdf#119284 bg for automatic not set while editing
    
    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 <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 1d112cc3841e..d01031c40112 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -43,6 +43,7 @@ class SfxBroadcaster;
 class Pointer;
 class AutoTimer;
 class OutlinerParaObject;
+class Outliner;
 class SdrOutliner;
 class SdrDragStat;
 class SdrHdl;
@@ -918,6 +919,8 @@ public:
 
     const css::uno::WeakReference< css::uno::XInterface >& getWeakUnoShape() const { return maWeakUnoShape; }
 
+    void setSuitableOutlinerBg(Outliner& rOutliner) const;
+
 protected:
     tools::Rectangle            aOutRect;     // surrounding rectangle for Paint (incl. LineWdt, ...)
     Point                       aAnchor;      // anchor position (Writer)
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index bbb5d417422f..527c1e06f2a1 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -715,18 +715,18 @@ bool View::SdrBeginTextEdit(
 
     if (::Outliner* pOL = bReturn ? GetTextEditOutliner() : nullptr)
     {
-        if (pObj && pObj->getSdrPageFromSdrObject())
+        if (pObj)
         {
-            Color aBackground;
             if( pObj->GetObjInventor() == SdrInventor::Default && pObj->GetObjIdentifier() == OBJ_TABLE )
             {
+                Color aBackground;
                 aBackground = GetTextEditBackgroundColor(*this);
+                pOL->SetBackgroundColor( aBackground  );
             }
             else
             {
-                aBackground = pObj->getSdrPageFromSdrObject()->GetPageBackgroundColor(pPV);
+                pObj->setSuitableOutlinerBg(*pOL);
             }
-            pOL->SetBackgroundColor( aBackground  );
         }
 
         pOL->SetParaInsertedHdl(LINK(this, View, OnParagraphInsertedHdl));
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));


More information about the Libreoffice-commits mailing list