sc/source/ui/view/formatsh.cxx | 59 ++---
svx/sdi/svx.sdi|2 -
2 files changed, 33 insertions(+), 28 deletions(-)
New commits:
commit c9f7f23c82e427fce14479f7806cec29b2abddf9
Author: Michael Meeks
AuthorDate: Mon Mar 30 11:26:50 2020 +0100
Commit: Michael Meeks
CommitDate: Mon Mar 30 15:41:42 2020 +0200
FrameLineColor - add Color parameter, and share code for color params.
Change-Id: I50483228221e817eb1a1d049d3c1ddf55a9c91d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91354
Tested-by: Jenkins
Reviewed-by: Michael Meeks
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index a83db735127c..b06463c71f68 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -1640,6 +1640,27 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq )
}
+namespace
+{
+bool lcl_getColorFromStr(const SfxItemSet *pArgs, Color &rColor)
+{
+const SfxPoolItem* pColorStringItem = nullptr;
+
+if (pArgs && SfxItemState::SET ==
pArgs->GetItemState(SID_ATTR_COLOR_STR, false, &pColorStringItem) &&
pColorStringItem)
+{
+OUString sColor;
+sColor = static_cast(pColorStringItem)->GetValue();
+
+if (sColor == "transparent")
+rColor = COL_TRANSPARENT;
+else
+rColor = Color(sColor.toInt32(16));
+return true;
+}
+return false;
+}
+}
+
void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
{
ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
@@ -1783,16 +1804,9 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
case SID_ATTR_CHAR_COLOR:
case SID_SCATTR_PROTECTION :
{
-const SfxPoolItem* pColorStringItem = nullptr;
-if ( SfxItemState::SET == pNewAttrs->GetItemState(
SID_ATTR_COLOR_STR, false, &pColorStringItem ) )
+Color aColor;
+if (lcl_getColorFromStr(pNewAttrs, aColor))
{
-Color aColor;
-OUString sColor = static_cast(pColorStringItem)->GetValue();
-if ( sColor == "transparent" )
-aColor = COL_TRANSPARENT;
-else
-aColor = Color( sColor.toInt32( 16 ) );
-
SvxColorItem
aColorItem(pTabViewShell->GetSelectionPattern()->
GetItem( ATTR_FONT_COLOR ) );
aColorItem.SetValue(aColor);
@@ -1868,18 +1882,20 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
case SID_FRAME_LINECOLOR:
{
::editeng::SvxBorderLine* pDefLine =
pTabViewShell->GetDefaultFrameLine();
-const Color&rColor = pNewAttrs->Get(
SID_FRAME_LINECOLOR ).GetValue();
+
+Color aColor;
+if (!lcl_getColorFromStr(pNewAttrs, aColor))
+aColor = pNewAttrs->Get( SID_FRAME_LINECOLOR
).GetValue();
// Update default line
if ( pDefLine )
{
-pDefLine->SetColor( rColor );
+pDefLine->SetColor( aColor );
pTabViewShell->SetSelectionFrameLines( pDefLine, true
);
}
else
{
-::editeng::SvxBorderLine aDefLine( &rColor, 20,
-SvxBorderLineStyle::SOLID );
+::editeng::SvxBorderLine aDefLine( &aColor, 20,
SvxBorderLineStyle::SOLID );
pTabViewShell->SetDefaultFrameLine( &aDefLine );
pTabViewShell->SetSelectionFrameLines( &aDefLine,
false );
}
@@ -1991,27 +2007,16 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
// ATTR_BACKGROUND (=SID_ATTR_BRUSH) has to be set to two IDs:
case SID_BACKGROUND_COLOR:
{
-const SfxPoolItem* pColorStringItem = nullptr;
Color aColor;
-if ( SfxItemState::SET == pNewAttrs->GetItemState(
SID_ATTR_COLOR_STR, false, &pColorStringItem ) )
-{
-OUString sColor = static_cast(pColorStringItem)->GetValue();
-if ( sColor == "transparent" )
-aColor = COL_TRANSPARENT;
-else
-aColor = Color( sColor.toInt32( 16 ) );
-}
-else
+if (!lcl_getColorFromStr(pNewAttrs, aColor))
{
const SvxColorItem& rNewColorItem = pNewAttrs->Get(
SID_BACKGROUND_COLOR );
aColor = rNewColorItem