diff options
author | Justin Luth <justin.luth@collabora.com> | 2023-01-02 15:09:03 -0500 |
---|---|---|
committer | Justin Luth <jluth@mail.com> | 2023-01-06 03:08:29 +0000 |
commit | 710017981194c33ac1ba1acc439f92b87869f532 (patch) | |
tree | 4d7b21b0fb61d5080b229ac33c6ac4b6eed2ce34 /svx | |
parent | 585f65738270ba8ab2fdc4c49063c3b5663fe768 (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.cxx | 13 |
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)); } |