From 5f1e65c923f321dff54b0c43c83b8202bf536645 Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Thu, 16 Jun 2022 08:52:13 +0200 Subject: tdf#128150 Adapt sidebar to new "use slide background" property Change-Id: Idce049a7498f98b0079c708236cfeff7fddd6e95 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135963 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- .../source/controller/sidebar/ChartAreaPanel.cxx | 5 +++ .../source/controller/sidebar/ChartAreaPanel.hxx | 1 + include/svx/sidebar/AreaPropertyPanelBase.hxx | 5 +++ include/svx/strings.hrc | 1 + include/svx/svxids.hrc | 2 +- include/svx/xfilluseslidebackgrounditem.hxx | 9 ++-- sd/sdi/_drvwsh.sdi | 5 +++ sd/source/ui/func/fuarea.cxx | 1 + sd/source/ui/table/tableobjectbar.cxx | 1 + sd/source/ui/view/drviews2.cxx | 2 + sd/source/ui/view/drviewsf.cxx | 1 + sd/source/ui/view/drviewsj.cxx | 3 ++ svx/sdi/svx.sdi | 16 +++++++ svx/source/sidebar/area/AreaPropertyPanel.cxx | 9 ++++ svx/source/sidebar/area/AreaPropertyPanel.hxx | 3 ++ svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 52 +++++++++++++++++++++- svx/source/tbxctrls/itemwin.cxx | 1 + svx/source/xoutdev/xpool.cxx | 1 + 18 files changed, 111 insertions(+), 7 deletions(-) diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index b54df41ebd39..71e978e14543 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -408,6 +408,11 @@ void ChartAreaPanel::setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, xPropSet->setPropertyValue("FillBitmapName", aBitmap); } +void ChartAreaPanel::setFillUseBackground(const XFillStyleItem* /*pStyleItem*/, + const XFillUseSlideBackgroundItem& /*rItem*/) +{ +} + void ChartAreaPanel::updateData() { if (!mbUpdate || !mbModelValid) diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx b/chart2/source/controller/sidebar/ChartAreaPanel.hxx index 132513412518..75caf8d0d30a 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx @@ -57,6 +57,7 @@ public: virtual void setFillStyleAndGradient(const XFillStyleItem* pStyleItem, const XFillGradientItem& rGradientItem) override; virtual void setFillStyleAndHatch(const XFillStyleItem* pStyleItem, const XFillHatchItem& rHatchItem) override; virtual void setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, const XFillBitmapItem& rBitmapItem) override; + virtual void setFillUseBackground(const XFillStyleItem* pStyleItem, const XFillUseSlideBackgroundItem& rItem) override; virtual void updateData() override; virtual void modelInvalid() override; diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx index 12fcebe16581..00519eed91e6 100644 --- a/include/svx/sidebar/AreaPropertyPanelBase.hxx +++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,7 @@ class ToolbarUnoDispatcher; class XFillFloatTransparenceItem; +class XFillUseSlideBackgroundItem; class XFillTransparenceItem; class XFillStyleItem; class XFillGradientItem; @@ -84,6 +86,7 @@ public: virtual void setFillStyleAndGradient(const XFillStyleItem* pStyleItem, const XFillGradientItem& aGradientItem) = 0; virtual void setFillStyleAndHatch(const XFillStyleItem* pStyleItem, const XFillHatchItem& aHatchItem) = 0; virtual void setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, const XFillBitmapItem& aHatchItem) = 0; + virtual void setFillUseBackground(const XFillStyleItem* pStyleItem, const XFillUseSlideBackgroundItem& rItem) = 0; void updateFillTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState); void updateFillFloatTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState); @@ -92,6 +95,7 @@ public: void updateFillHatch(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState); void updateFillColor(bool bDefaultOrSet, const SfxPoolItem* pState); void updateFillBitmap(bool BDisabled, bool bDefaultOrSet, const SfxPoolItem* pState); + void updateFillUseBackground(bool BDisabled, bool bDefaultOrSet, const SfxPoolItem* pState); private: void Initialize(); @@ -145,6 +149,7 @@ protected: OUString maImgLinear; std::unique_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem; + std::unique_ptr< XFillUseSlideBackgroundItem > mpUseSlideBackgroundItem; std::unique_ptr< SfxUInt16Item > mpTransparenceItem; DECL_DLLPRIVATE_LINK(SelectFillTypeHdl, weld::ComboBox&, void ); diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc index ff492462fd49..747e3fdcddb1 100644 --- a/include/svx/strings.hrc +++ b/include/svx/strings.hrc @@ -543,6 +543,7 @@ #define RID_SVXSTR_GRADIENT NC_("RID_SVXSTR_GRADIENT", "Gradient") #define RID_SVXSTR_BITMAP NC_("RID_SVXSTR_BITMAP", "Bitmap") #define RID_SVXSTR_PATTERN NC_("RID_SVXSTR_PATTERN", "Pattern") +#define RID_SVXSTR_USE_BACKGROUND NC_("RID_SVXSTR_USE_BACKGROUND", "Use Slide Background") #define RID_SVXSTR_PATTERN_UNTITLED NC_("RID_SVXSTR_PATTERN_UNTITLED", "Untitled Pattern") #define RID_SVXSTR_LINESTYLE NC_("RID_SVXSTR_LINESTYLE", "Line Style") #define RID_SVXSTR_INVISIBLE NC_("RID_SVXSTR_INVISIBLE", "None") diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index d50be073c40d..96122a66bc10 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -966,7 +966,7 @@ class XFillGradientItem; #define SID_CELL_FORMAT_BORDER ( SID_SVX_START + 1132 ) #define SID_CHAR_DLG_EFFECT ( SID_SVX_START + 1133 ) #define SID_CHAR_DLG_POSITION ( SID_SVX_START + 1134 ) - +#define SID_ATTR_FILL_USE_SLIDE_BACKGROUND ( SID_SVX_START + 1135 ) #define FN_SVX_SET_NUMBER ( SID_SVX_START + 1136 ) #define FN_SVX_SET_BULLET ( SID_SVX_START + 1137 ) #define FN_SVX_SET_OUTLINE ( SID_SVX_START + 1138 ) diff --git a/include/svx/xfilluseslidebackgrounditem.hxx b/include/svx/xfilluseslidebackgrounditem.hxx index 5a5cba891554..86317a903ee4 100644 --- a/include/svx/xfilluseslidebackgrounditem.hxx +++ b/include/svx/xfilluseslidebackgrounditem.hxx @@ -19,12 +19,11 @@ class SVXCORE_DLLPUBLIC XFillUseSlideBackgroundItem final : public SfxBoolItem public: XFillUseSlideBackgroundItem(bool bFill = false); - SVX_DLLPRIVATE virtual XFillUseSlideBackgroundItem* Clone(SfxItemPool* pPool - = nullptr) const override; + virtual XFillUseSlideBackgroundItem* Clone(SfxItemPool* pPool = nullptr) const override; - SVX_DLLPRIVATE virtual bool GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric, - MapUnit ePresMetric, OUString& rText, - const IntlWrapper&) const override; + virtual bool GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric, + MapUnit ePresMetric, OUString& rText, + const IntlWrapper&) const override; void dumpAsXml(xmlTextWriterPtr pWriter) const override; }; diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi index 73c2181d0743..978866b97637 100644 --- a/sd/sdi/_drvwsh.sdi +++ b/sd/sdi/_drvwsh.sdi @@ -1402,6 +1402,11 @@ interface DrawView ExecMethod = FuTemporary ; StateMethod = GetAttrState ; ] + SID_ATTR_FILL_USE_SLIDE_BACKGROUND // ole : no, status : ? + [ + ExecMethod = FuTemporary ; + StateMethod = GetAttrState ; + ] SID_ATTR_FILL_TRANSPARENCE // ole : no, status : ? [ ExecMethod = FuTemporary ; diff --git a/sd/source/ui/func/fuarea.cxx b/sd/source/ui/func/fuarea.cxx index 1f750e897dd2..8dd7543e3ba0 100644 --- a/sd/source/ui/func/fuarea.cxx +++ b/sd/source/ui/func/fuarea.cxx @@ -73,6 +73,7 @@ void FuArea::DoExecute( SfxRequest& rReq ) SID_ATTR_FILL_BITMAP, SID_ATTR_FILL_TRANSPARENCE, SID_ATTR_FILL_FLOATTRANSPARENCE, + SID_ATTR_FILL_USE_SLIDE_BACKGROUND, 0 }; pViewShell->GetViewFrame()->GetBindings().Invalidate( SidArray ); diff --git a/sd/source/ui/table/tableobjectbar.cxx b/sd/source/ui/table/tableobjectbar.cxx index d351094eae9b..62d81d9805df 100644 --- a/sd/source/ui/table/tableobjectbar.cxx +++ b/sd/source/ui/table/tableobjectbar.cxx @@ -193,6 +193,7 @@ void TableObjectBar::Execute( SfxRequest& rReq ) pBindings->Invalidate( SID_FRAME_LINECOLOR ); pBindings->Invalidate( SID_ATTR_BORDER ); pBindings->Invalidate( SID_ATTR_FILL_STYLE ); + pBindings->Invalidate( SID_ATTR_FILL_USE_SLIDE_BACKGROUND ); pBindings->Invalidate( SID_ATTR_FILL_TRANSPARENCE ); pBindings->Invalidate( SID_ATTR_FILL_FLOATTRANSPARENCE ); pBindings->Invalidate( SID_TABLE_MERGE_CELLS ); diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index 3d4e6b604aca..39f5458bfcd6 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -691,6 +691,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) case SID_ATTR_SHADOW_BLUR: case SID_ATTR_SHADOW_XDISTANCE: case SID_ATTR_SHADOW_YDISTANCE: + case SID_ATTR_FILL_USE_SLIDE_BACKGROUND: case SID_ATTR_FILL_TRANSPARENCE: case SID_ATTR_FILL_FLOATTRANSPARENCE: @@ -729,6 +730,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) case SID_ATTR_FILL_GRADIENT: case SID_ATTR_FILL_HATCH: case SID_ATTR_FILL_BITMAP: + case SID_ATTR_FILL_USE_SLIDE_BACKGROUND: case SID_ATTR_FILL_TRANSPARENCE: case SID_ATTR_FILL_FLOATTRANSPARENCE: GetViewFrame()->GetDispatcher()->Execute( SID_ATTRIBUTES_AREA, SfxCallMode::ASYNCHRON ); diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index ae47828e8be5..8aab2c57602e 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -410,6 +410,7 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet ) case SID_ATTR_SHADOW_BLUR: case SID_ATTR_SHADOW_XDISTANCE: case SID_ATTR_SHADOW_YDISTANCE: + case SID_ATTR_FILL_USE_SLIDE_BACKGROUND: case SID_ATTR_FILL_TRANSPARENCE: case SID_ATTR_FILL_FLOATTRANSPARENCE: case SID_ATTR_LINE_STYLE: diff --git a/sd/source/ui/view/drviewsj.cxx b/sd/source/ui/view/drviewsj.cxx index c034b98acb66..a1a7d899f4b3 100644 --- a/sd/source/ui/view/drviewsj.cxx +++ b/sd/source/ui/view/drviewsj.cxx @@ -65,6 +65,7 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet ) SfxItemState::DEFAULT == rSet.GetItemState( SID_OBJECT_TITLE_DESCRIPTION ) || SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_STYLE ) || + SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_USE_SLIDE_BACKGROUND ) || SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_TRANSPARENCE ) || SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_FLOATTRANSPARENCE ) || SfxItemState::DEFAULT == rSet.GetItemState( SID_CHANGEBEZIER ) || @@ -167,6 +168,7 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet ) { //rSet.DisableItem( SID_ATTRIBUTES_AREA ); // remove again! rSet.DisableItem( SID_ATTR_FILL_STYLE ); + rSet.DisableItem( SID_ATTR_FILL_USE_SLIDE_BACKGROUND ); rSet.DisableItem( SID_ATTR_FILL_TRANSPARENCE ); rSet.DisableItem( SID_ATTR_FILL_FLOATTRANSPARENCE ); } @@ -389,6 +391,7 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet ) if( bLine && !bText && !bDrawObj &&!b3dObj) { rSet.DisableItem( SID_ATTR_FILL_STYLE ); + rSet.DisableItem( SID_ATTR_FILL_USE_SLIDE_BACKGROUND ); rSet.DisableItem( SID_ATTR_FILL_TRANSPARENCE ); rSet.DisableItem( SID_ATTR_FILL_FLOATTRANSPARENCE ); } diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index de7ef9914b4c..0336b6c2d101 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -11769,7 +11769,23 @@ SfxBoolItem PrepareMailExport SID_MAIL_PREPAREEXPORT GroupId = SfxGroupId::Explorer; ] +/* TODO: SfxBoolItem or XFillUseSlideBackgroundItem ? */ +SfxBoolItem FillUseSlideBackground SID_ATTR_FILL_USE_SLIDE_BACKGROUND +[ + AutoUpdate = TRUE, + FastCall = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = FALSE, + MenuConfig = FALSE, + ToolBoxConfig = FALSE, + GroupId = SfxGroupId::Format; +] SfxUInt16Item FillTransparence SID_ATTR_FILL_TRANSPARENCE [ diff --git a/svx/source/sidebar/area/AreaPropertyPanel.cxx b/svx/source/sidebar/area/AreaPropertyPanel.cxx index b4d22f6823ab..1bcbdac19e1e 100644 --- a/svx/source/sidebar/area/AreaPropertyPanel.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanel.cxx @@ -46,6 +46,7 @@ AreaPropertyPanel::AreaPropertyPanel( maPatternListControl(SID_PATTERN_LIST, *pBindings, *this), maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this), maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this), + maFillUseSlideBackgroundController(SID_ATTR_FILL_USE_SLIDE_BACKGROUND, *pBindings, *this), mpBindings(pBindings) { } @@ -86,6 +87,14 @@ void AreaPropertyPanel::setFillTransparence(const XFillTransparenceItem& rItem) SfxCallMode::RECORD, { &rItem }); } +void AreaPropertyPanel::setFillUseBackground(const XFillStyleItem* pStyleItem, + const XFillUseSlideBackgroundItem& rItem) +{ + GetBindings()->GetDispatcher()->ExecuteList( + SID_ATTR_FILL_USE_SLIDE_BACKGROUND, SfxCallMode::RECORD, + std::initializer_list{ &rItem, pStyleItem }); +} + void AreaPropertyPanel::setFillFloatTransparence(const XFillFloatTransparenceItem& rItem) { GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_FILL_FLOATTRANSPARENCE, diff --git a/svx/source/sidebar/area/AreaPropertyPanel.hxx b/svx/source/sidebar/area/AreaPropertyPanel.hxx index ec7c1223d108..6c398e6ac077 100644 --- a/svx/source/sidebar/area/AreaPropertyPanel.hxx +++ b/svx/source/sidebar/area/AreaPropertyPanel.hxx @@ -30,6 +30,7 @@ class XFillFloatTransparenceItem; class XFillTransparenceItem; +class XFillUseSlideBackgroundItem; class XFillStyleItem; class XFillGradientItem; class XFillColorItem; @@ -59,6 +60,7 @@ public: virtual ~AreaPropertyPanel() override; virtual void setFillTransparence(const XFillTransparenceItem& rItem) override; + virtual void setFillUseBackground(const XFillStyleItem* pStyleItem, const XFillUseSlideBackgroundItem& rItem) override; virtual void setFillFloatTransparence(const XFillFloatTransparenceItem& rItem) override; virtual void setFillStyle(const XFillStyleItem& rItem) override; virtual void setFillStyleAndColor(const XFillStyleItem* pStyleItem, const XFillColorItem& aColorItem) override; @@ -78,6 +80,7 @@ private: ::sfx2::sidebar::ControllerItem maPatternListControl; ::sfx2::sidebar::ControllerItem maFillTransparenceController; ::sfx2::sidebar::ControllerItem maFillFloatTransparenceController; + ::sfx2::sidebar::ControllerItem maFillUseSlideBackgroundController; SfxBindings* mpBindings; }; diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx index 428d35d94d59..627d86bc52d7 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -49,7 +50,8 @@ enum eFillStyle GRADIENT, HATCH, BITMAP, - PATTERN + PATTERN, + USE_BACKGROUND }; } @@ -422,6 +424,22 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, weld::ComboBox&, void) setFillStyleAndBitmap(&aXFillStyleItem, aXFillBitmapItem); break; } + case USE_BACKGROUND: + { + mxLbFillAttr->show(); + mxLbFillGradFrom->hide(); + mxLbFillGradTo->hide(); + mxGradientStyle->hide(); + mxMTRAngle->hide(); + mxToolBoxColor->hide(); + mxBmpImport->hide(); + mxLbFillAttr->set_sensitive(false); + + const XFillStyleItem aXFillStyleItem(drawing::FillStyle_NONE); + const XFillUseSlideBackgroundItem aXFillUseSlideBackgroundItem(true); + setFillUseBackground(&aXFillStyleItem, aXFillUseSlideBackgroundItem); + break; + } } meLastXFS = static_cast(nPos); @@ -973,6 +991,35 @@ void AreaPropertyPanelBase::updateFillBitmap(bool bDisabled, bool bDefaultOrSet, m_pPanel->TriggerDeckLayouting(); } +void AreaPropertyPanelBase::updateFillUseBackground(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState) +{ + if (bDisabled) + { + mpUseSlideBackgroundItem.reset(); + return; + } + + if (bDefaultOrSet) + { + if (pState) + { + const XFillUseSlideBackgroundItem* pItem = static_cast(pState); + // When XFillUseSlideBackgroundItem is true, select "Use Background Fill". When false, select "None" + int nPos = pItem->GetValue() ? 6 : 0; + mxLbFillType->set_active(nPos); + mpUseSlideBackgroundItem.reset(pItem->Clone()); + } + else + { + mpUseSlideBackgroundItem.reset(); + } + } + else + { + mpUseSlideBackgroundItem.reset(); + } +} + void AreaPropertyPanelBase::NotifyItemUpdate( sal_uInt16 nSID, SfxItemState eState, @@ -1005,6 +1052,9 @@ void AreaPropertyPanelBase::NotifyItemUpdate( case SID_ATTR_FILL_BITMAP: updateFillBitmap(bDisabled, bDefaultOrSet, pState); break; + case SID_ATTR_FILL_USE_SLIDE_BACKGROUND: + updateFillUseBackground(bDisabled, bDefaultOrSet, pState); + break; case SID_GRADIENT_LIST: { if(bDefault) diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx index 130fba5ae014..1a9b6d3bcf53 100644 --- a/svx/source/tbxctrls/itemwin.cxx +++ b/svx/source/tbxctrls/itemwin.cxx @@ -180,6 +180,7 @@ void SvxFillTypeBox::Fill(weld::ComboBox& rListBox) rListBox.append_text(SvxResId(RID_SVXSTR_HATCH)); rListBox.append_text(SvxResId(RID_SVXSTR_BITMAP)); rListBox.append_text(SvxResId(RID_SVXSTR_PATTERN)); + rListBox.append_text(SvxResId(RID_SVXSTR_USE_BACKGROUND)); rListBox.thaw(); diff --git a/svx/source/xoutdev/xpool.cxx b/svx/source/xoutdev/xpool.cxx index 771b79ac4991..b3e044e83696 100644 --- a/svx/source/xoutdev/xpool.cxx +++ b/svx/source/xoutdev/xpool.cxx @@ -182,6 +182,7 @@ XOutdevItemPool::XOutdevItemPool(SfxItemPool* _pMaster) mpLocalItemInfos[XATTR_FORMTXTHIDEFORM -XATTR_START]._nSID = SID_FORMTEXT_HIDEFORM; // associate new slots for panels with known items + mpLocalItemInfos[XATTR_FILLUSESLIDEBACKGROUND - XATTR_START]._nSID = SID_ATTR_FILL_USE_SLIDE_BACKGROUND; mpLocalItemInfos[XATTR_FILLTRANSPARENCE - XATTR_START]._nSID = SID_ATTR_FILL_TRANSPARENCE; mpLocalItemInfos[XATTR_FILLFLOATTRANSPARENCE - XATTR_START]._nSID = SID_ATTR_FILL_FLOATTRANSPARENCE; mpLocalItemInfos[XATTR_LINETRANSPARENCE - XATTR_START]._nSID = SID_ATTR_LINE_TRANSPARENCE; -- cgit