cui/source/tabpages/autocdlg.cxx | 4 ++-- cui/source/tabpages/numpages.cxx | 3 ++- editeng/source/uno/unonrule.cxx | 5 +++-- include/editeng/swafopt.hxx | 5 +++-- include/svx/nbdtmg.hxx | 2 +- sd/qa/unit/import-tests.cxx | 4 ++-- sd/source/ui/dlg/BulletAndPositionDlg.cxx | 2 +- svx/source/sidebar/nbdtmg.cxx | 26 ++++++++++++++++---------- sw/source/core/edit/autofmt.cxx | 4 ++-- sw/source/filter/ww8/ww8par2.cxx | 5 ++++- sw/source/filter/ww8/ww8par3.cxx | 5 +++-- 11 files changed, 39 insertions(+), 26 deletions(-)
New commits: commit 8898955456ce6a6dc0ce9401ee05ce9d04e13668 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Sep 22 10:34:21 2020 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Sep 22 18:38:44 2020 +0200 Related: tdf#132970 handle more places with potentially utf16 bullets Change-Id: Iac6b319700d610b5a1debff0a633172b2411c40e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103161 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx index a51ed1f32b6b..211b131f3f9c 100644 --- a/cui/source/tabpages/autocdlg.cxx +++ b/cui/source/tabpages/autocdlg.cxx @@ -534,10 +534,10 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet* ) const ACFlags nFlags = pAutoCorrect->GetFlags(); aBulletFont = pOpt->aBulletFont; - sBulletChar = OUString(pOpt->cBullet); + sBulletChar = OUString(&pOpt->cBullet, 1); aByInputBulletFont = pOpt->aByInputBulletFont; - sByInputBulletChar = OUString( pOpt->cByInputBullet ); + sByInputBulletChar = OUString(&pOpt->cByInputBullet, 1); nPercent = pOpt->nRightMargin; sMargin = unicode::formatPercent(nPercent, Application::GetSettings().GetUILanguageTag()); diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx index 141021652ac4..4eb04ec24b40 100644 --- a/cui/source/tabpages/numpages.cxx +++ b/cui/source/tabpages/numpages.cxx @@ -688,8 +688,9 @@ IMPL_LINK_NOARG(SvxNumPickTabPage, NumSelectHdl_Impl, ValueSet*, void) else aFmt.SetBulletFont( &rActBulletFont ); + sal_Int32 nIndexUtf16 = 0; aFmt.SetBulletChar( !pLevelSettings->sBulletChar.isEmpty() - ? pLevelSettings->sBulletChar[0] + ? pLevelSettings->sBulletChar.iterateCodePoints(&nIndexUtf16) : 0 ); aFmt.SetCharFormatName( sBulletCharFormatName ); aFmt.SetBulletRelSize(45); diff --git a/editeng/source/uno/unonrule.cxx b/editeng/source/uno/unonrule.cxx index 57b68a0de1d3..03b766d446d7 100644 --- a/editeng/source/uno/unonrule.cxx +++ b/editeng/source/uno/unonrule.cxx @@ -206,7 +206,7 @@ Sequence<beans::PropertyValue> SvxUnoNumberingRules::getNumberingRuleByIndex(sal if(SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType()) { - sal_Unicode nCode = rFmt.GetBulletChar(); + sal_UCS4 nCode = rFmt.GetBulletChar(); OUString aStr( &nCode, 1 ); aVal <<= aStr; beans::PropertyValue aBulletProp( "BulletChar", -1, aVal, beans::PropertyState_DIRECT_VALUE); @@ -324,7 +324,8 @@ void SvxUnoNumberingRules::setNumberingRuleByIndex(const Sequence<beans::Propert { if(!aStr.isEmpty()) { - aFmt.SetBulletChar(aStr[0]); + sal_Int32 nIndexUtf16 = 0; + aFmt.SetBulletChar(aStr.iterateCodePoints(&nIndexUtf16)); } else { diff --git a/include/editeng/swafopt.hxx b/include/editeng/swafopt.hxx index 4fd1207cefb4..ccdcf9955982 100644 --- a/include/editeng/swafopt.hxx +++ b/include/editeng/swafopt.hxx @@ -26,6 +26,7 @@ #include <o3tl/sorted_vector.hxx> #include <rtl/ustring.hxx> #include <vcl/font.hxx> +#include <vcl/vclenum.hxx> class SmartTagMgr; @@ -81,8 +82,8 @@ struct EDITENG_DLLPUBLIC SvxSwAutoFormatFlags const editeng::SortedAutoCompleteStrings * m_pAutoCompleteList; SmartTagMgr* pSmartTagMgr; - sal_Unicode cBullet; - sal_Unicode cByInputBullet; + sal_UCS4 cBullet; + sal_UCS4 cByInputBullet; sal_uInt16 nAutoCmpltWordLen, nAutoCmpltListLen; sal_uInt16 nAutoCmpltExpandKey; diff --git a/include/svx/nbdtmg.hxx b/include/svx/nbdtmg.hxx index fbecb2719ba0..eceb96b8337e 100644 --- a/include/svx/nbdtmg.hxx +++ b/include/svx/nbdtmg.hxx @@ -73,7 +73,7 @@ class SVX_DLLPUBLIC BulletsSettings public: vcl::Font aFont; OUString sDescription; - sal_Unicode cBulletChar; + sal_UCS4 cBulletChar; bool bIsCustomized; BulletsSettings() : cBulletChar(0), bIsCustomized(false) {} }; diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index ccb45ce56695..91d796bc40a8 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -3225,9 +3225,9 @@ void SdImportTest::testTdf49856() const EditTextObject& aEdit = pTxtObj->GetOutlinerParaObject()->GetTextObject(); const SvxNumBulletItem *pNumFmt = aEdit.GetParaAttribs(2).GetItem(EE_PARA_NUMBULLET); CPPUNIT_ASSERT(pNumFmt); - const sal_Unicode aBullet = pNumFmt->GetNumRule()->GetLevel(0).GetBulletChar(); + const sal_UCS4 aBullet = pNumFmt->GetNumRule()->GetLevel(0).GetBulletChar(); CPPUNIT_ASSERT_EQUAL(OUString("More level 2"), aEdit.GetText(2)); - CPPUNIT_ASSERT_EQUAL(u'\x2022', aBullet); + CPPUNIT_ASSERT_EQUAL(sal_UCS4(0x2022), aBullet); xDocShRef->DoClose(); } diff --git a/sd/source/ui/dlg/BulletAndPositionDlg.cxx b/sd/source/ui/dlg/BulletAndPositionDlg.cxx index 4fa14144beae..45e2a1dffc41 100644 --- a/sd/source/ui/dlg/BulletAndPositionDlg.cxx +++ b/sd/source/ui/dlg/BulletAndPositionDlg.cxx @@ -920,7 +920,7 @@ IMPL_LINK_NOARG(SvxBulletAndPositionDlg, BulletHdl_Impl, weld::Button&, void) sal_uInt16 nMask = 1; const vcl::Font* pFmtFont = nullptr; bool bSameBullet = true; - sal_Unicode cBullet = 0; + sal_UCS4 cBullet = 0; bool bFirst = true; for (sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) { diff --git a/svx/source/sidebar/nbdtmg.cxx b/svx/source/sidebar/nbdtmg.cxx index 3d995028bb99..b36e58b6fad1 100644 --- a/svx/source/sidebar/nbdtmg.cxx +++ b/svx/source/sidebar/nbdtmg.cxx @@ -282,7 +282,7 @@ sal_uInt16 BulletsTypeMgr::GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLe return sal_uInt16(0xFFFF); const SvxNumberFormat& aFmt(aNum.GetLevel(nActLv)); - sal_Unicode cChar = aFmt.GetBulletChar(); + sal_UCS4 cChar = aFmt.GetBulletChar(); for(sal_uInt16 i = nFromIndex; i < DEFAULT_BULLET_TYPES; i++) { if ( (cChar == pActualBullets[i]->cBulletChar) || @@ -310,7 +310,7 @@ void BulletsTypeMgr::RelplaceNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uI return; SvxNumberFormat aFmt(aNum.GetLevel(nActLv)); - sal_Unicode cChar = aFmt.GetBulletChar(); + sal_UCS4 cChar = aFmt.GetBulletChar(); const vcl::Font* pFont = aFmt.GetBulletFont(); if ( nIndex >= DEFAULT_BULLET_TYPES ) return; @@ -325,7 +325,7 @@ void BulletsTypeMgr::ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt1 { if ( nIndex >= DEFAULT_BULLET_TYPES ) return; - sal_Unicode cChar = pActualBullets[nIndex]->cBulletChar; + sal_UCS4 cChar = pActualBullets[nIndex]->cBulletChar; const vcl::Font& rActBulletFont = pActualBullets[nIndex]->aFont; sal_uInt16 nMask = 1; @@ -337,7 +337,7 @@ void BulletsTypeMgr::ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt1 SvxNumberFormat aFmt(aNum.GetLevel(i)); aFmt.SetNumberingType( SVX_NUM_CHAR_SPECIAL ); aFmt.SetBulletFont(&rActBulletFont); - aFmt.SetBulletChar(cChar ); + aFmt.SetBulletChar(cChar); aFmt.SetCharFormatName(sBulletCharFormatName); aFmt.SetPrefix( "" ); aFmt.SetSuffix( "" ); @@ -648,8 +648,11 @@ sal_uInt16 OutlineTypeMgr::GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 /*m sal_Int16 eNumType = aFmt.GetNumberingType(); if( eNumType == SVX_NUM_CHAR_SPECIAL) { - sal_Unicode cChar = aFmt.GetBulletChar(); - sal_Unicode ccChar = _pSet->sBulletChar[0]; + sal_UCS4 cChar = aFmt.GetBulletChar(); + + sal_Int32 nIndexUtf16 = 0; + sal_UCS4 ccChar = _pSet->sBulletChar.iterateCodePoints(&nIndexUtf16); + if ( !((cChar == ccChar) && _pSet->eLabelFollowedBy == aFmt.GetLabelFollowedBy() && _pSet->nTabValue == aFmt.GetListtabPos() && @@ -726,8 +729,8 @@ void OutlineTypeMgr::RelplaceNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uI if( eNumType == SVX_NUM_CHAR_SPECIAL) { - sal_Unicode cChar = aFmt.GetBulletChar(); - OUString sChar(cChar); + sal_UCS4 cChar = aFmt.GetBulletChar(); + OUString sChar(&cChar, 1); _pSet->sBulletChar = sChar; if ( aFmt.GetBulletFont() ) _pSet->sBulletFont = aFmt.GetBulletFont()->GetFamilyName(); @@ -822,9 +825,12 @@ void OutlineTypeMgr::ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt1 }else aFmt.SetBulletFont( &rActBulletFont ); - sal_Unicode cChar = 0; + sal_UCS4 cChar = 0; if( !pLevelSettings->sBulletChar.isEmpty() ) - cChar = pLevelSettings->sBulletChar[0]; + { + sal_Int32 nIndexUtf16 = 0; + cChar = pLevelSettings->sBulletChar.iterateCodePoints(&nIndexUtf16); + } if( AllSettings::GetLayoutRTL() ) { if( 0 == i && cChar == BulletsTypeMgr::aDynamicBulletTypes[5] ) diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx index 48d5befd6308..696d26a2d901 100644 --- a/sw/source/core/edit/autofmt.cxx +++ b/sw/source/core/edit/autofmt.cxx @@ -1527,7 +1527,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel ) if( !aRule.GetNumFormat( nLvl ) ) { int nBulletPos = pFndBulletChr - pBulletChar; - sal_Unicode cBullChar; + sal_UCS4 cBullChar; const vcl::Font* pBullFnt( nullptr ); if( nBulletPos < cnPosEnDash ) { @@ -1726,7 +1726,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel ) { OUString sChgStr('\t'); if( bChgBullet ) - sChgStr = OUStringChar( m_aFlags.cBullet ) + sChgStr; + sChgStr = OUString(&m_aFlags.cBullet, 1) + sChgStr; m_pDoc->getIDocumentContentOperations().InsertString( m_aDelPam, sChgStr ); SfxItemSet aSet( m_pDoc->GetAttrPool(), aTextNodeSetRange ); diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 292de278ff14..d689ab36acb6 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -669,7 +669,10 @@ void SwWW8ImplReader::SetAnlvStrings(SwNumFormat &rNum, WW8_ANLV const &rAV, // take only the very first character if (rAV.cbTextBefore || rAV.cbTextAfter) - rNum.SetBulletChar( sText[ 0 ] ); + { + sal_Int32 nIndexUtf16 = 0; + rNum.SetBulletChar(sText.toString().iterateCodePoints(&nIndexUtf16)); + } else rNum.SetBulletChar( 0x2190 ); } diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx index 3fbe650cb51f..6ce373838e23 100644 --- a/sw/source/filter/ww8/ww8par3.cxx +++ b/sw/source/filter/ww8/ww8par3.cxx @@ -622,7 +622,7 @@ bool WW8ListManager::ReadLVL(SwNumFormat& rNumFormat, std::unique_ptr<SfxItemSet sal_uInt8 aBits1(0); SvxNumType nType(SVX_NUM_ARABIC); SvxAdjust eAdj; // Alignment (Left/right/centered) - sal_Unicode cBullet(0x2190); // default safe bullet + sal_UCS4 cBullet(0x2190); // default safe bullet sal_Unicode cGrfBulletCP(USHRT_MAX); @@ -832,7 +832,8 @@ bool WW8ListManager::ReadLVL(SwNumFormat& rNumFormat, std::unique_ptr<SfxItemSet if (style::NumberingType::CHAR_SPECIAL == nType) { - cBullet = !sNumString.isEmpty() ? sNumString[0] : 0x2190; + sal_Int32 nIndexUtf16 = 0; + cBullet = !sNumString.isEmpty() ? sNumString.iterateCodePoints(&nIndexUtf16) : 0x2190; if (!cBullet) // unsave control code? cBullet = 0x2190; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits