summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-11-08 11:33:38 +0000
committerCaolán McNamara <caolanm@redhat.com>2022-11-08 14:52:43 +0100
commit000a05339b4d7d25aea063a16b7a01ca9080978f (patch)
tree858eb6660b2266fb903ade054aeaf343a0746009
parenta879fd3c9c0aa3d5414fcac99431b2681959c7ba (diff)
Resolves: tdf#148140 get text auto color right in impress edit mode
Change-Id: I2695c86e9b749a4c38920af6d33e8e89f8ea3c62 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142426 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--include/svx/svdobj.hxx3
-rw-r--r--sd/source/ui/view/sdview.cxx24
-rw-r--r--svx/source/svdraw/svdotextdecomposition.cxx4
3 files changed, 25 insertions, 6 deletions
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index a251d8ddac33..3c30c479dc80 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -880,7 +880,8 @@ public:
const css::uno::WeakReference< css::drawing::XShape >& getWeakUnoShape() const { return maWeakUnoShape; }
- void setSuitableOutlinerBg(Outliner& rOutliner) const;
+ // return true if a bg was set, false otherwise
+ bool setSuitableOutlinerBg(Outliner& rOutliner) const;
// If fillstyle is drawing::FillStyle_BITMAP, returns the graphic.
const Graphic* getFillGraphic() const;
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index c92ee1113e3c..3c5d190532fe 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -449,6 +449,20 @@ void ViewRedirector::createRedirectedPrimitive2DSequence(
}
}
+namespace
+{
+ void setOutlinerBgFromPage(::Outliner& rOutl, SdrPageView& rPgView, bool bScreenDisplay)
+ {
+ SdPage* pPage = static_cast<SdPage*>(rPgView.GetPage());
+ if (pPage)
+ {
+ // #i75566# Name change GetBackgroundColor -> GetPageBackgroundColor and
+ // hint value if screen display. Only then the AutoColor mechanisms shall be applied
+ rOutl.SetBackgroundColor(pPage->GetPageBackgroundColor(&rPgView, bScreenDisplay));
+ }
+ }
+}
+
/**
* The event will be forwarded to the View
*/
@@ -476,9 +490,7 @@ void View::CompleteRedraw(OutputDevice* pOutDev, const vcl::Region& rReg, sdr::c
|| (OUTDEV_PDF == pOutDev->GetOutDevType())))
bScreenDisplay = false;
- // #i75566# Name change GetBackgroundColor -> GetPageBackgroundColor and
- // hint value if screen display. Only then the AutoColor mechanisms shall be applied
- rOutl.SetBackgroundColor( pPage->GetPageBackgroundColor(pPgView, bScreenDisplay) );
+ setOutlinerBgFromPage(rOutl, *pPgView, bScreenDisplay);
}
}
@@ -724,7 +736,11 @@ bool View::SdrBeginTextEdit(
}
else
{
- pObj->setSuitableOutlinerBg(*pOL);
+ // tdf#148140 Set the background to determine autocolor.
+ // Use any explicit bg with fallback to underlying page if
+ // none found
+ if (!pObj->setSuitableOutlinerBg(*pOL) && pPV)
+ setOutlinerBgFromPage(*pOL, *pPV, true);
}
}
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 5d7389fe83db..e526c44edc68 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -875,7 +875,7 @@ void SdrTextObj::impDecomposeAutoFitTextPrimitive(
// 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
+bool SdrObject::setSuitableOutlinerBg(::Outliner& rOutliner) const
{
const SfxItemSet* pBackgroundFillSet = getBackgroundFillSet();
if (drawing::FillStyle_NONE != pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue())
@@ -883,7 +883,9 @@ void SdrObject::setSuitableOutlinerBg(::Outliner& rOutliner) const
Color aColor(rOutliner.GetBackgroundColor());
GetDraftFillColor(*pBackgroundFillSet, aColor);
rOutliner.SetBackgroundColor(aColor);
+ return true;
}
+ return false;
}
const SfxItemSet* SdrObject::getBackgroundFillSet() const