summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-05-17 15:44:02 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-05-18 22:39:17 +0200
commitc6b5169541aa50fcf53a55372d5c2b82e20e9111 (patch)
tree0aa4d91ca6249457e134de1fb200dd7439bf0ded /svx
parented0c1bc4c717a7a527bac0f86d4334a699eea4e5 (diff)
Resolves: tdf#125104 crash on getting text desc of numbering
this seems to have been wrong for a very long time, but we used to get away with it back in the .src era with presumably amusingly random strings from other parts of the ui shown in the summary of changes are of the organizer page of the dialog Change-Id: If223182170ba8519d7899f8044f01c2a12f4e391 Reviewed-on: https://gerrit.libreoffice.org/72490 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svx')
-rw-r--r--svx/source/items/pageitem.cxx31
1 files changed, 27 insertions, 4 deletions
diff --git a/svx/source/items/pageitem.cxx b/svx/source/items/pageitem.cxx
index d7b1b619b57f..8e714ca0abaa 100644
--- a/svx/source/items/pageitem.cxx
+++ b/svx/source/items/pageitem.cxx
@@ -22,10 +22,15 @@
#include <utility>
#include <osl/diagnose.h>
+#include <comphelper/processfactory.hxx>
#include <tools/stream.hxx>
+#include <tools/resary.hxx>
#include <svx/pageitem.hxx>
+#include <svx/strarray.hxx>
#include <editeng/itemtype.hxx>
#include <svx/unomid.hxx>
+#include <com/sun/star/text/DefaultNumberingProvider.hpp>
+#include <com/sun/star/text/XNumberingTypeInfo.hpp>
#include <com/sun/star/style/NumberingType.hpp>
#include <com/sun/star/style/PageStyleLayout.hpp>
#include <com/sun/star/style/BreakType.hpp>
@@ -95,6 +100,26 @@ static const char* RID_SVXITEMS_PAGE_NUMS[] =
RID_SVXITEMS_PAGE_NUM_NONE
};
+namespace
+{
+ OUString GetNumberingDescription(SvxNumType eNumType)
+ {
+ // classic ones, keep displaying the old name
+ if (eNumType <= css::style::NumberingType::NUMBER_NONE)
+ return SvxResId(RID_SVXITEMS_PAGE_NUMS[eNumType]);
+ // new ones, reuse the text used in the numbering dropdown list
+ sal_uInt32 n = SvxNumberingTypeTable::FindIndex(eNumType);
+ if (n != RESARRAY_INDEX_NOTFOUND)
+ return SvxNumberingTypeTable::GetString(n);
+ css::uno::Reference<css::uno::XComponentContext> xContext = comphelper::getProcessComponentContext();
+ css::uno::Reference<css::text::XDefaultNumberingProvider> xDefNum = css::text::DefaultNumberingProvider::create(xContext);
+ css::uno::Reference<css::text::XNumberingTypeInfo> xInfo(xDefNum, css::uno::UNO_QUERY);
+ if (!xInfo.is())
+ return OUString();
+ return xInfo->getNumberingIdentifier(eNumType);
+ }
+}
+
bool SvxPageItem::GetPresentation
(
SfxItemPresentation ePres,
@@ -114,8 +139,7 @@ bool SvxPageItem::GetPresentation
{
rText = aDescName + cpDelimTmp;
}
- assert(eNumType <= css::style::NumberingType::NUMBER_NONE && "enum overflow");
- rText += SvxResId(RID_SVXITEMS_PAGE_NUMS[eNumType]) + cpDelimTmp;
+ rText += GetNumberingDescription(eNumType) + cpDelimTmp;
if ( bLandscape )
rText += SvxResId(RID_SVXITEMS_PAGE_LAND_TRUE);
else
@@ -134,8 +158,7 @@ bool SvxPageItem::GetPresentation
{
rText += aDescName + cpDelimTmp;
}
- assert(eNumType <= css::style::NumberingType::NUMBER_NONE && "enum overflow");
- rText += SvxResId(RID_SVXITEMS_PAGE_NUMS[eNumType]) + cpDelimTmp;
+ rText += GetNumberingDescription(eNumType) + cpDelimTmp;
if ( bLandscape )
rText += SvxResId(RID_SVXITEMS_PAGE_LAND_TRUE);
else