svl/source/numbers/zforfind.cxx |   21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

New commits:
commit 7de96e9f7b69354fd5b15e1276678000bc386568
Author:     Eike Rathke <er...@redhat.com>
AuthorDate: Fri Jul 12 11:16:07 2019 +0200
Commit:     Eike Rathke <er...@redhat.com>
CommitDate: Fri Jul 12 13:53:01 2019 +0200

    Resolves: tdf#126342 obtain date particle order from pattern match
    
    ... if there was any. In the NF_EVALDATEFORMAT_FORMAT_INTL case
    the input may match a current locale's pattern instead of a
    format's locale's pattern and patterns' (format locale + current
    locale) date orders may be different from the format's date order.
    
    Change-Id: I3aeaa6c361f98fe80f69c4f5d975fca892dac6ea
    Reviewed-on: https://gerrit.libreoffice.org/75481
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Jenkins

diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx
index 57fcbc6d8a47..3fb23572b66b 100644
--- a/svl/source/numbers/zforfind.cxx
+++ b/svl/source/numbers/zforfind.cxx
@@ -1698,7 +1698,26 @@ bool ImpSvNumberInputScan::GetDateRef( double& fDays, 
sal_uInt16& nCounter )
             else
             {
                 bFormatTurn = true;
-                DateFmt = mpFormat->GetDateOrder();
+                // Even if the format pattern is to be preferred, the input may
+                // have matched a pattern of the current locale, which then
+                // again is to be preferred. Both date orders can be different
+                // so we need to obtain the actual match. For example ISO
+                // YYYY-MM-DD format vs locale's DD.MM.YY input.
+                if (!GetDatePatternOrder())
+                {
+                    // No pattern match => format match.
+                    DateFmt = mpFormat->GetDateOrder();
+                }
+                else
+                {
+                    // Pattern match. Note that patterns may have been
+                    // constructed from the format's locale and prepended to
+                    // the current locale's patterns, it doesn't necessarily
+                    // mean a current locale's pattern was matched, but may if
+                    // the format's locale's patterns didn't match, which were
+                    // tried first.
+                    DateFmt = GetDateOrder();
+                }
             }
             break;
         default:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to