summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2023-01-02 15:09:03 -0500
committerJustin Luth <jluth@mail.com>2023-01-06 03:08:29 +0000
commit710017981194c33ac1ba1acc439f92b87869f532 (patch)
tree4d7b21b0fb61d5080b229ac33c6ac4b6eed2ce34 /svx
parent585f65738270ba8ab2fdc4c49063c3b5663fe768 (diff)
tdf#56258: allow i18npool to define SvxAdjust for outline
Deciding whether the numbering should be Left, Right, or Center is a rather important setting. Specifically for Roman numerals (which grow very wide as they increment to 7 and 8) the numbering styles set these to right aligned. This really helps for keeping the text nicely aligned. The numbering styles are built-in LO defaults, but locale files can define numbering and outline choices. This patch add the setting for "adjust" on the outline levels. For en_US, it makes sense to right-align roman numeral levels. [The only other highly likely candidate for this that I could find was old Hungarian (SZEKELY_ROVAS), but it doesn't seem to be used in any locale definitions.] I only changed en_US for now, but of course many other locales are also using NumType="3" and NumType="4". This only applies to the toolbar/sidebar SVX code path. The Bullets and Numbering dialog does not currently modify any spacing, so I didn't apply the adjustment either. It also doesn't make sense to do this on single numbering changes (aka ContinuousNumberingLevels or LC_NumberingLevel) because we don't know or control the first line indent there either. But at least for toolbar Outlines, we do change every level, and so can set a (somewhat) appropriate spacing. [Setting SvxAdjust without adjusting the spacing is pointless. Don't make any changes at all if the spacing ends up causing problems.] The Numbering IVX/ivx styles set the firstLineIndent to -174, so I did the same here. This is the scariest part of this change. AFAICS SvxAdjust::Left is a non-locale aDefNumStyle default, so hardcoding that for undefined LC_OutlineNumberingLevel shouldn't be too scary. Change-Id: I52deefe88aa55c55c9531b651411f64accb86f7f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144978 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
Diffstat (limited to 'svx')
-rw-r--r--svx/source/sidebar/nbdtmg.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/svx/source/sidebar/nbdtmg.cxx b/svx/source/sidebar/nbdtmg.cxx
index a4def326c80b..3643976d2866 100644
--- a/svx/source/sidebar/nbdtmg.cxx
+++ b/svx/source/sidebar/nbdtmg.cxx
@@ -103,6 +103,12 @@ NumSettings_Impl* lcl_CreateNumberingSettingsPtr(const Sequence<PropertyValue>&
rValue.Value >>= pNew->sPrefix;
else if(rValue.Name == "Suffix")
rValue.Value >>= pNew->sSuffix;
+ else if (rValue.Name == "Adjust")
+ {
+ sal_Int16 nTmp;
+ if (rValue.Value >>= nTmp)
+ pNew->eNumAlign = static_cast<SvxAdjust>(nTmp);
+ }
else if(rValue.Name == "ParentNumbering")
rValue.Value >>= pNew->nParentNumbering;
else if(rValue.Name == "BulletChar")
@@ -600,10 +606,13 @@ void OutlineTypeMgr::Init()
NumSettings_Impl* pNew = lcl_CreateNumberingSettingsPtr(aLevelProps);
const SvxNumberFormat& aNumFmt( aDefNumRule.GetLevel( nLevel) );
+ assert(aNumFmt.GetNumAdjust() == SvxAdjust::Left && "new entry was previously defined by default, now defaults to Left");
pNew->eLabelFollowedBy = aNumFmt.GetLabelFollowedBy();
pNew->nTabValue = aNumFmt.GetListtabPos();
- pNew->eNumAlign = aNumFmt.GetNumAdjust();
- pNew->nNumAlignAt = aNumFmt.GetFirstLineIndent();
+ if (pNew->eNumAlign == SvxAdjust::Right)
+ pNew->nNumAlignAt = -174; // number borrowed from RES_POOLNUMRULE_NUM4
+ else
+ pNew->nNumAlignAt = aNumFmt.GetFirstLineIndent();
pNew->nNumIndentAt = aNumFmt.GetIndentAt();
pItemArr->pNumSettingsArr->push_back(std::shared_ptr<NumSettings_Impl>(pNew));
}