sc/source/core/tool/cellkeytranslator.cxx | 16 ++++++++++++++++ svl/source/numbers/zforfind.cxx | 10 ++++++---- svl/source/numbers/zformat.cxx | 15 ++++++++++----- svl/source/numbers/zforscan.cxx | 15 ++++++++++----- 4 files changed, 42 insertions(+), 14 deletions(-)
New commits: commit 413a134b34a57ff8d5e5d63fb189338d4b84b5aa Author: Eike Rathke <[email protected]> Date: Fri Mar 28 17:48:42 2014 +0100 and restore the intention of the original patch Change-Id: I8187d425a12f8a96d9e29df244084f7045f448ea diff --git a/sc/source/core/tool/cellkeytranslator.cxx b/sc/source/core/tool/cellkeytranslator.cxx index af13cbe..fb2e383 100644 --- a/sc/source/core/tool/cellkeytranslator.cxx +++ b/sc/source/core/tool/cellkeytranslator.cxx @@ -137,7 +137,7 @@ static void lclMatchKeyword(OUString& rName, const ScCellKeywordHashMap& aMap, return; } } - else if ( !eOpCode && pLocale ) + else if ( pLocale ) { LocaleMatch eLevel = lclLocaleCompare(itrList->mrLocale, aLanguageTag); if ( eLevel == LOCALE_MATCH_ALL ) commit b4bc7aabce9bc5057b39f71cc7624c9345193caf Author: Eike Rathke <[email protected]> Date: Fri Mar 28 17:46:19 2014 +0100 Revert "coverity#1038286 Logically dead code" This reverts commit f5adf08aa3a9a176bd2ed5acd638148eb8da7c85. diff --git a/sc/source/core/tool/cellkeytranslator.cxx b/sc/source/core/tool/cellkeytranslator.cxx index e2f3dfb..af13cbe 100644 --- a/sc/source/core/tool/cellkeytranslator.cxx +++ b/sc/source/core/tool/cellkeytranslator.cxx @@ -137,6 +137,22 @@ static void lclMatchKeyword(OUString& rName, const ScCellKeywordHashMap& aMap, return; } } + else if ( !eOpCode && pLocale ) + { + LocaleMatch eLevel = lclLocaleCompare(itrList->mrLocale, aLanguageTag); + if ( eLevel == LOCALE_MATCH_ALL ) + { + // Name with matching locale preferred. + rName = OUString::createFromAscii( itrList->mpName ); + return; + } + else if ( eLevel > eLocaleMatchLevel ) + { + // Name with a better matching locale. + eLocaleMatchLevel = eLevel; + aBestMatchName = itrList->mpName; + } + } } // No preferred strings found. Return the best matching name. commit 49836e6f672fdde87bed7921ace5eed6039f5135 Author: Eike Rathke <[email protected]> Date: Fri Mar 28 17:19:04 2014 +0100 handle Narrow No-Break Space the same as No-Break Space, just in case Change-Id: I08683ea7dc48f5ac91d56ee4de6c4e52d1c6f058 diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx index 8ae49e4..44463bc 100644 --- a/svl/source/numbers/zforfind.cxx +++ b/svl/source/numbers/zforfind.cxx @@ -66,6 +66,7 @@ const sal_uInt8 ImpSvNumberInputScan::nMatchedUsedAsReturn = 0x10; #define NF_RECOGNIZE_ISO8601_TIMEZONES 0 static const sal_Unicode cNoBreakSpace = 0xA0; +static const sal_Unicode cNarrowNoBreakSpace = 0x202F; ImpSvNumberInputScan::ImpSvNumberInputScan( SvNumberFormatter* pFormatterP ) : @@ -461,7 +462,7 @@ inline void ImpSvNumberInputScan::SkipBlanks( const OUString& rString, if ( nPos < rString.getLength() ) { const sal_Unicode* p = rString.getStr() + nPos; - while ( *p == ' ' || *p == cNoBreakSpace ) + while ( *p == ' ' || *p == cNoBreakSpace || *p == cNarrowNoBreakSpace ) { nPos++; p++; @@ -494,7 +495,8 @@ inline bool ImpSvNumberInputScan::GetThousandSep( const OUString& rString, { const OUString& rSep = pFormatter->GetNumThousandSep(); // Is it an ordinary space instead of a no-break space? - bool bSpaceBreak = rSep[0] == cNoBreakSpace && rString[0] == (sal_Unicode)0x20 && + bool bSpaceBreak = (rSep[0] == cNoBreakSpace || rSep[0] == cNarrowNoBreakSpace) && + rString[0] == (sal_Unicode)0x20 && rSep.getLength() == 1 && rString.getLength() == 1; if (!((rString == rSep || bSpaceBreak) && // nothing else nStringPos < nAnzStrings - 1 && // safety first! diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index 0570735..893ff54 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -724,12 +724,17 @@ SvNumberformat::SvNumberformat(OUString& rString, // If the group (AKA thousand) separator is a No-Break Space (French) // replace all occurrences by a simple space. + // The same for Narrow No-Break Space just in case some locale uses it. // The tokens will be changed to the LocaleData separator again later on. - const sal_Unicode cNBSp = 0xA0; const OUString& rThSep = GetFormatter().GetNumThousandSep(); - if ( rThSep.getLength() == 1 && rThSep[0] == cNBSp ) - { - sBuff.replace( cNBSp, ' '); + if ( rThSep.getLength() == 1) + { + const sal_Unicode cNBSp = 0xA0; + const sal_Unicode cNNBSp = 0x202F; + if (rThSep[0] == cNBSp ) + sBuff.replace( cNBSp, ' '); + else if (rThSep[0] == cNNBSp ) + sBuff.replace( cNNBSp, ' '); } if (rScan.GetConvertMode()) diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx index 22a2a1c..45ea7b8 100644 --- a/svl/source/numbers/zforscan.cxx +++ b/svl/source/numbers/zforscan.cxx @@ -37,6 +37,7 @@ using namespace svt; const sal_Unicode cNoBreakSpace = 0xA0; +const sal_Unicode cNarrowNoBreakSpace = 0x202F; namespace { @@ -1530,9 +1531,11 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) // If the group separator is a No-Break Space (French) continue with a // normal space instead so queries on space work correctly. + // The same for Narrow No-Break Space just in case some locale uses it. // The format string is adjusted to allow both. // For output of the format code string the LocaleData characters are used. - if ( sOldThousandSep[0] == cNoBreakSpace && sOldThousandSep.getLength() == 1 ) + if ( (sOldThousandSep[0] == cNoBreakSpace || sOldThousandSep[0] == cNarrowNoBreakSpace) && + sOldThousandSep.getLength() == 1 ) { sOldThousandSep = " "; } @@ -2712,7 +2715,9 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) if (((eScannedType & NUMBERFORMAT_DATE) == 0) && (StringEqualsChar( pFormatter->GetNumThousandSep(), c) || StringEqualsChar( pFormatter->GetNumDecimalSep(), c) || - (c == ' ' && StringEqualsChar( pFormatter->GetNumThousandSep(), cNoBreakSpace)))) + (c == ' ' && + (StringEqualsChar( pFormatter->GetNumThousandSep(), cNoBreakSpace) || + StringEqualsChar( pFormatter->GetNumThousandSep(), cNarrowNoBreakSpace))))) { rString += sStrArray[i]; } commit 06b4ca896f508586c0b2378c6308877c487559dd Author: Eike Rathke <[email protected]> Date: Fri Mar 28 15:46:38 2014 +0100 name things what they are Change-Id: I13d0cb525f3ca22b1b9158b2ac20b8b59d645463 diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx index e18c50d..8ae49e4 100644 --- a/svl/source/numbers/zforfind.cxx +++ b/svl/source/numbers/zforfind.cxx @@ -65,7 +65,7 @@ const sal_uInt8 ImpSvNumberInputScan::nMatchedUsedAsReturn = 0x10; * would work, together with the nTimezonePos handling in GetTimeRef(). */ #define NF_RECOGNIZE_ISO8601_TIMEZONES 0 -static const sal_Unicode cNonBreakingSpace = 0xA0; +static const sal_Unicode cNoBreakSpace = 0xA0; ImpSvNumberInputScan::ImpSvNumberInputScan( SvNumberFormatter* pFormatterP ) : @@ -461,7 +461,7 @@ inline void ImpSvNumberInputScan::SkipBlanks( const OUString& rString, if ( nPos < rString.getLength() ) { const sal_Unicode* p = rString.getStr() + nPos; - while ( *p == ' ' || *p == cNonBreakingSpace ) + while ( *p == ' ' || *p == cNoBreakSpace ) { nPos++; p++; @@ -493,8 +493,8 @@ inline bool ImpSvNumberInputScan::GetThousandSep( const OUString& rString, sal_uInt16 nStringPos ) { const OUString& rSep = pFormatter->GetNumThousandSep(); - // Is it an ordinary space instead of a non-breaking space? - bool bSpaceBreak = rSep[0] == cNonBreakingSpace && rString[0] == (sal_Unicode)0x20 && + // Is it an ordinary space instead of a no-break space? + bool bSpaceBreak = rSep[0] == cNoBreakSpace && rString[0] == (sal_Unicode)0x20 && rSep.getLength() == 1 && rString.getLength() == 1; if (!((rString == rSep || bSpaceBreak) && // nothing else nStringPos < nAnzStrings - 1 && // safety first! diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index a34778e..0570735 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -722,7 +722,7 @@ SvNumberformat::SvNumberformat(OUString& rString, { OUStringBuffer sBuff(rString); - // If the group (AKA thousand) separator is a Non-Breaking Space (French) + // If the group (AKA thousand) separator is a No-Break Space (French) // replace all occurrences by a simple space. // The tokens will be changed to the LocaleData separator again later on. const sal_Unicode cNBSp = 0xA0; diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx index 4165b9f..22a2a1c 100644 --- a/svl/source/numbers/zforscan.cxx +++ b/svl/source/numbers/zforscan.cxx @@ -36,7 +36,7 @@ #include <svl/nfsymbol.hxx> using namespace svt; -const sal_Unicode cNonBreakingSpace = 0xA0; +const sal_Unicode cNoBreakSpace = 0xA0; namespace { @@ -1528,11 +1528,11 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) sal_Unicode cOldKeyMI = sKeyword[NF_KEY_MI][0]; sal_Unicode cOldKeyS = sKeyword[NF_KEY_S][0]; - // If the group separator is a Non-Breaking Space (French) continue with a + // If the group separator is a No-Break Space (French) continue with a // normal space instead so queries on space work correctly. // The format string is adjusted to allow both. // For output of the format code string the LocaleData characters are used. - if ( sOldThousandSep[0] == cNonBreakingSpace && sOldThousandSep.getLength() == 1 ) + if ( sOldThousandSep[0] == cNoBreakSpace && sOldThousandSep.getLength() == 1 ) { sOldThousandSep = " "; } @@ -1832,7 +1832,7 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) { // strange, those French.. bool bFirst = true; - // set a hard Non-Breaking Space or ConvertMode + // set a hard No-Break Space or ConvertMode const OUString& rSepF = pFormatter->GetNumThousandSep(); while ( i < nAnzStrings && sStrArray[i] == sOldThousandSep && @@ -2712,7 +2712,7 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) if (((eScannedType & NUMBERFORMAT_DATE) == 0) && (StringEqualsChar( pFormatter->GetNumThousandSep(), c) || StringEqualsChar( pFormatter->GetNumDecimalSep(), c) || - (c == ' ' && StringEqualsChar( pFormatter->GetNumThousandSep(), cNonBreakingSpace)))) + (c == ' ' && StringEqualsChar( pFormatter->GetNumThousandSep(), cNoBreakSpace)))) { rString += sStrArray[i]; } commit 2cf4763e3c1810af3278b4bf63f76cec9e94d28c Author: Eike Rathke <[email protected]> Date: Fri Mar 28 15:38:04 2014 +0100 we have a constant, use it Change-Id: I402f64fdab57508df20d4dffa7bdfdf9473d8b45 diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx index 4bb4c18..e18c50d 100644 --- a/svl/source/numbers/zforfind.cxx +++ b/svl/source/numbers/zforfind.cxx @@ -494,7 +494,7 @@ inline bool ImpSvNumberInputScan::GetThousandSep( const OUString& rString, { const OUString& rSep = pFormatter->GetNumThousandSep(); // Is it an ordinary space instead of a non-breaking space? - bool bSpaceBreak = rSep[0] == (sal_Unicode)0xa0 && rString[0] == (sal_Unicode)0x20 && + bool bSpaceBreak = rSep[0] == cNonBreakingSpace && rString[0] == (sal_Unicode)0x20 && rSep.getLength() == 1 && rString.getLength() == 1; if (!((rString == rSep || bSpaceBreak) && // nothing else nStringPos < nAnzStrings - 1 && // safety first! _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
