diff --git a/include/sfx2/sfxsids.hrc b/include/sfx2/sfxsids.hrc index 811bfe59ce57..491874ecdaa0 100644 --- a/include/sfx2/sfxsids.hrc +++ b/include/sfx2/sfxsids.hrc @@ -416,7 +416,9 @@ class SfxDocumentInfoItem; #define SID_PASTE_ONLY_TEXT (SID_SFX_START + 802) #define SID_PASTE_ONLY_FORMULA (SID_SFX_START + 803) #define SID_PASTE_ONLY_VALUE (SID_SFX_START + 804) - // FREE: SID_SFX_START + 808 + +// Used for redaction +#define SID_SHAPE_NAME (SID_SFX_START + 808) // FREE: SID_SFX_START + 809 // FREE: SID_SFX_START + 810 #define SID_ASYNCHRON (SID_SFX_START + 811) diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index 02caa2c12297..77d0ad32fcb9 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -2082,7 +2082,7 @@ 1 - + Rectangle @@ -4746,7 +4746,7 @@ 1 - + Freeform diff --git a/sd/source/ui/func/fuconbez.cxx b/sd/source/ui/func/fuconbez.cxx index 978e27ddca3d..31f0ea0b7feb 100644 --- a/sd/source/ui/func/fuconbez.cxx +++ b/sd/source/ui/func/fuconbez.cxx @@ -56,7 +56,8 @@ namespace sd { /*//Extra attributes coming from parameters sal_uInt16 mnTransparence; // Default: 0 OUString msColor; // Default: "" - sal_uInt16 mnWidth; // Default: 0*/ + sal_uInt16 mnWidth; // Default: 0 + OUString msShapeName; // Default: ""*/ FuConstructBezierPolygon::FuConstructBezierPolygon ( ViewShell* pViewSh, ::sd::Window* pWin, @@ -114,9 +115,13 @@ void FuConstructBezierPolygon::DoExecute( SfxRequest& rReq ) if (nSlotId != SID_DRAW_FREELINE_NOFILL) return; + // This piece is only relevant for SID_DRAW_FREELINE_NOFILL + // Adding this note for the future because the if-block gets auto-flattened + // by loplugins const SfxUInt16Item* pTransparence = rReq.GetArg(FN_PARAM_1); const SfxStringItem* pColor = rReq.GetArg(FN_PARAM_2); const SfxUInt16Item* pWidth = rReq.GetArg(FN_PARAM_3); + const SfxStringItem* pShapeName = rReq.GetArg(SID_SHAPE_NAME); if (pTransparence && pTransparence->GetValue() > 0) { @@ -130,6 +135,11 @@ void FuConstructBezierPolygon::DoExecute( SfxRequest& rReq ) { mnWidth = pWidth->GetValue(); } + if (pShapeName && !pShapeName->GetValue().isEmpty()) + { + msShapeName = pShapeName->GetValue(); + } + // End of the SID_DRAW_FREELINE_NOFILL block } bool FuConstructBezierPolygon::MouseButtonDown(const MouseEvent& rMEvt) @@ -174,7 +184,7 @@ bool FuConstructBezierPolygon::MouseButtonDown(const MouseEvent& rMEvt) { SfxItemSet aAttr(mpDoc->GetPool()); SetStyleSheet(aAttr, pObj); - SetAttributes(aAttr); + SetAttributes(aAttr, pObj); pObj->SetMergedItemSet(aAttr); } } @@ -352,7 +362,7 @@ Color strToColor(const OUString& sColor) } } -void FuConstructBezierPolygon::SetAttributes(SfxItemSet& rAttr) +void FuConstructBezierPolygon::SetAttributes(SfxItemSet& rAttr, SdrObject *pObj) { if (nSlotId == SID_DRAW_FREELINE_NOFILL) { @@ -362,6 +372,8 @@ void FuConstructBezierPolygon::SetAttributes(SfxItemSet& rAttr) rAttr.Put(XLineColorItem(OUString(), strToColor(msColor))); if (mnWidth > 0) rAttr.Put(XLineWidthItem(mnWidth)); + if (!msShapeName.isEmpty()) + pObj->SetName(msShapeName); } } diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx index bee469d76e09..edaf97aee68e 100644 --- a/sd/source/ui/func/fuconrec.cxx +++ b/sd/source/ui/func/fuconrec.cxx @@ -156,6 +156,7 @@ void FuConstructRectangle::DoExecute( SfxRequest& rReq ) const SfxUInt16Item* pFillTransparence = rReq.GetArg(FN_PARAM_1); const SfxStringItem* pFillColor = rReq.GetArg(FN_PARAM_2); const SfxUInt16Item* pLineStyle = rReq.GetArg(FN_PARAM_3); + const SfxStringItem* pShapeName = rReq.GetArg(SID_SHAPE_NAME); if (pFillTransparence && pFillTransparence->GetValue() > 0) { @@ -169,6 +170,10 @@ void FuConstructRectangle::DoExecute( SfxRequest& rReq ) { mnLineStyle = pLineStyle->GetValue(); } + if (pShapeName && !pShapeName->GetValue().isEmpty()) + { + msShapeName = pShapeName->GetValue(); + } if (!pMouseStartX || !pMouseStartY || !pMouseEndX || !pMouseEndY) break; @@ -565,6 +570,8 @@ void FuConstructRectangle::SetAttributes(SfxItemSet& rAttr, SdrObject* pObj) rAttr.Put(XFillTransparenceItem(mnFillTransparence)); if (!msFillColor.isEmpty()) rAttr.Put(XFillColorItem(OUString(), strToColor(msFillColor))); + if (!msShapeName.isEmpty()) + pObj->SetName(msShapeName); switch(mnLineStyle) { diff --git a/sd/source/ui/inc/fuconbez.hxx b/sd/source/ui/inc/fuconbez.hxx index 21b4a5ba6aa6..907ebebfa930 100644 --- a/sd/source/ui/inc/fuconbez.hxx +++ b/sd/source/ui/inc/fuconbez.hxx @@ -50,7 +50,7 @@ public: /** * set attribute for the object to be created */ - void SetAttributes(SfxItemSet& rAttr); + void SetAttributes(SfxItemSet& rAttr, SdrObject* pObj); virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; @@ -69,6 +69,7 @@ private: sal_uInt16 mnTransparence; // Default: 0 OUString msColor; // Default: "" sal_uInt16 mnWidth; // Default: 0 + OUString msShapeName; // Default: "" }; } // end of namespace sd diff --git a/sd/source/ui/inc/fuconrec.hxx b/sd/source/ui/inc/fuconrec.hxx index 978dc133bab2..1c8ce15a0dff 100644 --- a/sd/source/ui/inc/fuconrec.hxx +++ b/sd/source/ui/inc/fuconrec.hxx @@ -38,6 +38,7 @@ private: sal_uInt16 mnFillTransparence; // Default: 0 OUString msFillColor; // Default: "" sal_uInt16 mnLineStyle; // Default: SAL_MAX_UINT16 + OUString msShapeName; // Default: "" public: diff --git a/sd/uiconfig/sdraw/toolbar/redactionbar.xml b/sd/uiconfig/sdraw/toolbar/redactionbar.xml index a0fb06709377..43ce5e856f7a 100644 --- a/sd/uiconfig/sdraw/toolbar/redactionbar.xml +++ b/sd/uiconfig/sdraw/toolbar/redactionbar.xml @@ -18,8 +18,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . --> - - + + diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx index f333eaa35f42..175f7b22f8ee 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -734,46 +734,28 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq) if (!xInfo.is()) continue; - // Rectangle redaction - if (xInfo->hasPropertyByName("FillTransparence") && xInfo->hasPropertyByName("FillColor")) + OUString sShapeName; + if (xInfo->hasPropertyByName("Name")) { - uno::Any aAnyTransp = xPropSet->getPropertyValue("FillTransparence"); - uno::Any aAnyColor = xPropSet->getPropertyValue("FillColor"); - - sal_Int16 nTransp = 0; - Color aColor; - const OUString sRectangleName("RectangleRedactionShape"); - - aAnyTransp >>= nTransp; - aAnyColor >>= aColor; - - if (nTransp == 50 && aColor == COL_GRAY7) - { - xPropSet->setPropertyValue("FillTransparence", css::uno::makeAny(static_cast(0))); - xPropSet->setPropertyValue("FillColor", css::uno::makeAny(COL_BLACK)); - xPropSet->setPropertyValue("Name", css::uno::makeAny(sRectangleName)); - } + uno::Any aAnyShapeName = xPropSet->getPropertyValue("Name"); + aAnyShapeName >>= sShapeName; } - //FIXME: Turn this into an else-if when we have the name-check - // Freeform redaction - if (xInfo->hasPropertyByName("LineTransparence") && xInfo->hasPropertyByName("LineColor")) + else + continue; + + // Rectangle redaction + if (sShapeName == "RectangleRedactionShape" + && xInfo->hasPropertyByName("FillTransparence") && xInfo->hasPropertyByName("FillColor")) + { + xPropSet->setPropertyValue("FillTransparence", css::uno::makeAny(static_cast(0))); + xPropSet->setPropertyValue("FillColor", css::uno::makeAny(COL_BLACK)); + } + // Freeform redaction + else if (sShapeName == "FreeformRedactionShape" + && xInfo->hasPropertyByName("LineTransparence") && xInfo->hasPropertyByName("LineColor")) { - uno::Any aAnyTransp = xPropSet->getPropertyValue("LineTransparence"); - uno::Any aAnyColor = xPropSet->getPropertyValue("LineColor"); - - sal_Int16 nTransp = 0; - Color aColor; - const OUString sFreeformName("FreeformRedactionShape"); - - aAnyTransp >>= nTransp; - aAnyColor >>= aColor; - - if (nTransp == 50 && aColor == COL_GRAY7) - { xPropSet->setPropertyValue("LineTransparence", css::uno::makeAny(static_cast(0))); xPropSet->setPropertyValue("LineColor", css::uno::makeAny(COL_BLACK)); - xPropSet->setPropertyValue("Name", css::uno::makeAny(sFreeformName)); - } } } } diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 3b3669358ac3..d02007216666 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -3473,7 +3473,8 @@ SfxBoolItem Freeline SID_DRAW_FREELINE SfxBoolItem Freeline_Unfilled SID_DRAW_FREELINE_NOFILL (SfxUInt16Item Transparence FN_PARAM_1, SfxStringItem Color FN_PARAM_2, - SfxUInt16Item Width FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4) + SfxUInt16Item Width FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4, + SfxStringItem ShapeName SID_SHAPE_NAME) [ AutoUpdate = TRUE, FastCall = FALSE, @@ -6830,7 +6831,8 @@ SfxBoolItem Rect SID_DRAW_RECT (SfxUInt32Item MouseStartX ID_VAL_MOUSESTART_X, SfxUInt32Item MouseStartY ID_VAL_MOUSESTART_Y, SfxUInt32Item MouseEndX ID_VAL_MOUSEEND_X, SfxUInt32Item MouseEndY ID_VAL_MOUSEEND_Y, SfxUInt16Item FillTransparence FN_PARAM_1, SfxStringItem FillColor FN_PARAM_2, - SfxUInt16Item LineStyle FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4) + SfxUInt16Item LineStyle FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4, + SfxStringItem ShapeName SID_SHAPE_NAME) [ AutoUpdate = TRUE, FastCall = FALSE,