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

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Mon May 20 12:54:55 UTC 2019


 cui/source/tabpages/autocdlg.cxx |   36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

New commits:
commit 40e8402585ffed9a3fca46241e392b8101d7c18b
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri May 17 13:26:55 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon May 20 14:53:59 2019 +0200

    use iterators for large aurocorr handling
    
    Change-Id: Id63bd371d4665cb15fb684e0d5e962855a12b2e2
    Reviewed-on: https://gerrit.libreoffice.org/72489
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
index 861f2a70396f..9e65e501740d 100644
--- a/cui/source/tabpages/autocdlg.cxx
+++ b/cui/source/tabpages/autocdlg.cxx
@@ -1080,7 +1080,8 @@ bool OfaAutocorrReplacePage::NewDelHdl(const weld::Widget* pBtn)
 
 IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, weld::Entry&, rEdt, void)
 {
-    int nFirstSel = m_xReplaceTLB->get_selected_index();
+    std::unique_ptr<weld::TreeIter> xFirstSel(m_xReplaceTLB->make_iterator());
+    bool bFirstSelIterSet = m_xReplaceTLB->get_selected(xFirstSel.get());
     bool bShort = &rEdt == m_xShortED.get();
     const OUString rEntry = rEdt.get_text();
     const OUString rRepString = m_xReplaceED->get_text();
@@ -1093,37 +1094,36 @@ IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, weld::Entry&, rEdt, void)
             bool bFound = false;
             bool bTmpSelEntry=false;
 
-            int nCount = m_xReplaceTLB->n_children();
-            for (int i = 0; i < nCount; ++i)
-            {
-                int nEntry = i;
-                OUString aTestStr = m_xReplaceTLB->get_text(i, 0);
+            m_xReplaceTLB->all_foreach([this, &rEntry, &rRepString, &bFound,
+                                        &bTmpSelEntry, &bFirstSelIterSet,
+                                        &xFirstSel, &aWordStr](weld::TreeIter& rIter){
+                OUString aTestStr = m_xReplaceTLB->get_text(rIter, 0);
                 if( pCompareClass->compareString(rEntry, aTestStr ) == 0 )
                 {
-                    if( !rRepString.isEmpty() )
-                    {
+                    if (!rRepString.isEmpty())
                         bFirstSelect = true;
-                    }
-                    m_xReplaceTLB->set_cursor(nEntry);
-                    nFirstSel = i;
+                    m_xReplaceTLB->set_cursor(rIter);
+                    m_xReplaceTLB->copy_iterator(rIter, *xFirstSel);
+                    bFirstSelIterSet = true;
                     m_xNewReplacePB->set_label(sModify);
                     bFound = true;
-                    break;
+                    return true;
                 }
                 else
                 {
                     aTestStr = pCharClass->lowercase( aTestStr );
                     if( aTestStr.startsWith(aWordStr) && !bTmpSelEntry )
                     {
-                        m_xReplaceTLB->scroll_to_row(nEntry);
+                        m_xReplaceTLB->scroll_to_row(rIter);
                         bTmpSelEntry = true;
                     }
                 }
-            }
+                return false;
+            });
             if( !bFound )
             {
                 m_xReplaceTLB->select(-1);
-                nFirstSel = -1;
+                bFirstSelIterSet = false;
                 m_xNewReplacePB->set_label(sNew);
                 if( bReplaceEditChanged )
                     m_xTextOnlyCB->set_sensitive(false);
@@ -1139,7 +1139,7 @@ IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, weld::Entry&, rEdt, void)
     else if( !bShort )
     {
         bReplaceEditChanged = true;
-        if (nFirstSel != -1)
+        if (bFirstSelIterSet)
         {
             m_xNewReplacePB->set_label(sModify);
         }
@@ -1149,8 +1149,8 @@ IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, weld::Entry&, rEdt, void)
     bool bEnableNew = !rShortTxt.isEmpty() &&
                         ( !rRepString.isEmpty() ||
                                 ( bHasSelectionText && bSWriter )) &&
-                        ( nFirstSel == -1 || rRepString !=
-                                m_xReplaceTLB->get_text(nFirstSel, 1) );
+                        ( !bFirstSelIterSet || rRepString !=
+                                m_xReplaceTLB->get_text(*xFirstSel, 1) );
     if( bEnableNew )
     {
         for (auto const& elem : aFormatText)


More information about the Libreoffice-commits mailing list