[Libreoffice-commits] core.git: sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Dec 27 06:53:42 UTC 2018


 sc/source/ui/view/gridwin.cxx |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

New commits:
commit 3ed1cd71b82ff0c11695fef1b12e422370beeff8
Author:     Arkadiy Illarionov <qarkai at gmail.com>
AuthorDate: Tue Dec 25 22:23:25 2018 +0300
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Dec 27 07:53:19 2018 +0100

    Use appropriate STL function for searching in sorted list
    
    48b35ed43db87d21a943e66cfa4f59213dcfe3a1 follow-up,
    see discussion in https://gerrit.libreoffice.org/65572
    
    Change-Id: Ic60b21be6093a44e17252a2a34e38bf2411ab07d
    Reviewed-on: https://gerrit.libreoffice.org/65608
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index a1a2c6049379..bc101b6087d4 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1160,9 +1160,18 @@ void ScGridWindow::LaunchDataSelectMenu( SCCOL nCol, SCROW nRow )
             else
                 pNew.reset(new ScTypedStrData(aDocStr, 0.0, ScTypedStrData::Standard));
 
-            auto it = std::find_if(aStrings.begin(), aStrings.end(), FindTypedStrData(*pNew, true));
-            if (it != aStrings.end())
-                nSelPos = static_cast<sal_Int32>(std::distance(aStrings.begin(), it));
+            if (pData->GetListType() == css::sheet::TableValidationVisibility::SORTEDASCENDING)
+            {
+                auto it = std::lower_bound(aStrings.begin(), aStrings.end(), *pNew, ScTypedStrData::LessCaseSensitive());
+                if (it != aStrings.end() && ScTypedStrData::EqualCaseSensitive()(*it, *pNew))
+                    nSelPos = static_cast<sal_Int32>(std::distance(aStrings.begin(), it));
+            }
+            else
+            {
+                auto it = std::find_if(aStrings.begin(), aStrings.end(), FindTypedStrData(*pNew, true));
+                if (it != aStrings.end())
+                    nSelPos = static_cast<sal_Int32>(std::distance(aStrings.begin(), it));
+            }
         }
     }
 


More information about the Libreoffice-commits mailing list