diff options
author | Eike Rathke <erack@redhat.com> | 2012-11-13 14:23:01 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2012-11-13 13:57:00 +0000 |
commit | 97b0efc6145cd7153c724c1135eb65ee941d60d5 (patch) | |
tree | f259b42ff5b3e11acc72a8b88aab13b20c772ec7 /svl | |
parent | 43d7a49816e2f6ac3a62b0bcb716ddd0e6ca370a (diff) |
resolved fdo#55369 accept fraction input if preset
Accept fraction input without integer portion if the format was preset
as fraction, e.g. 1/5 instead of 0 1/5 and don't force to date.
(cherry picked from commit 5391bd1e54157457abe1098b29f067d6e0059113)
Change-Id: I326ec85b163962425efa074119405ec1395af481
Reviewed-on: https://gerrit.libreoffice.org/1045
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Tested-by: Petr Mladek <pmladek@suse.cz>
Diffstat (limited to 'svl')
-rw-r--r-- | svl/source/numbers/zforfind.cxx | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx index eae56daf0eb5..ef6015e409aa 100644 --- a/svl/source/numbers/zforfind.cxx +++ b/svl/source/numbers/zforfind.cxx @@ -2025,14 +2025,24 @@ bool ImpSvNumberInputScan::ScanMidString( const String& rString, { if ( eScannedType != NUMBERFORMAT_UNDEFINED // already another type && eScannedType != NUMBERFORMAT_DATE) // except date - return MatchedReturn(); // => jan/31/1994 - else if ( eScannedType != NUMBERFORMAT_DATE // analyzed date until now - && ( eSetType == NUMBERFORMAT_FRACTION // and preset was fraction - || (nAnzNums == 3 // or 3 numbers - && nStringPos > 2) ) ) // and what ??? + return MatchedReturn(); // => jan/31/1994 + else if (eScannedType != NUMBERFORMAT_DATE // analyzed no date until now + && ( eSetType == NUMBERFORMAT_FRACTION // and preset was fraction + || (nAnzNums == 3 // or 3 numbers + && (nStringPos == 3 // and 3rd string particle + || (nStringPos == 4 // or 4th + && nSign))))) // if signed { SkipBlanks(rString, nPos); - eScannedType = NUMBERFORMAT_FRACTION; // !!! it IS a fraction + if (nPos == rString.Len()) + { + eScannedType = NUMBERFORMAT_FRACTION; // !!! it IS a fraction (so far) + if (eSetType == NUMBERFORMAT_FRACTION + && nAnzNums == 2 + && (nStringPos == 1 // for 4/5 + || (nStringPos == 2 && nSign))) // or signed -4/5 + return true; // don't fall into date trap + } } else nPos--; // put '/' back |