tdf#156091: handle OWN_ATTR_TEXTCOLUMNS in SdStyleSheet::getPropertyValue_Impl
Somehow I failed to implement this from start. In commit
95ebd24a629b4c8cd62cc20c0701683512cc8fa0 (editengine-columns:
ODF support [API CHANGE], 2021-06-08), I implemented its
support in SdStyleSheet::getPropertyState; then, in commit
f2ea39c70da3f82bb39f8b51b5484172360b1fc2 (Avoid crash getting
default item for OWN_ATTR_TEXTCOLUMNS, 2021-06-22), I added
its support in SdStyleSheet::setPropertyValue; and finally,
the time has come to support getting its value. Better late
than never.
Change-Id: Ifa1f933f00336bf6d01a5c71d0c92baf846ccabb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153777
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
index fe981d8..4ea270b 100644
--- a/sd/source/core/stlsheet.cxx
+++ b/sd/source/core/stlsheet.cxx
@@ -51,6 +51,7 @@
#include <svx/sdtacitm.hxx>
#include <svx/sdtayitm.hxx>
#include <svx/sdtaiitm.hxx>
#include <svx/SvxXTextColumns.hxx>
#include <svx/xit.hxx>
#include <svx/xflclit.hxx>
#include <comphelper/diagnose_ex.hxx>
@@ -1146,6 +1147,19 @@ css::uno::Any SdStyleSheet::getPropertyValue_Impl(const OUString& PropertyName)
{
aAny <<= IsHidden( );
}
else if (pEntry->nWID == OWN_ATTR_TEXTCOLUMNS)
{
const SfxItemSet& rStyleSet = GetItemSet();
auto xIf = SvxXTextColumns_createInstance();
css::uno::Reference<css::text::XTextColumns> xCols(xIf, css::uno::UNO_QUERY_THROW);
xCols->setColumnCount(rStyleSet.Get(SDRATTR_TEXTCOLUMNS_NUMBER).GetValue());
css::uno::Reference<css::beans::XPropertySet> xProp(xIf, css::uno::UNO_QUERY_THROW);
xProp->setPropertyValue(
"AutomaticDistance",
css::uno::Any(rStyleSet.Get(SDRATTR_TEXTCOLUMNS_SPACING).GetValue()));
aAny <<= xIf;
}
else
{
SfxItemSet aSet( GetPool()->GetPool(), pEntry->nWID, pEntry->nWID);