basctl/source/basicide/moduldl2.cxx |   41 +++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 17 deletions(-)

New commits:
commit b424e32afe7e9ef72373bc4e0b9c65a9bbddbd70
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Nov 1 10:39:14 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Nov 1 12:45:14 2021 +0100

    use freeze/thaw around a potentially long sequence of insertions
    
    Change-Id: I151d172d65d4a74b57a64c4b5d904ef18145aede
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124543
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/basctl/source/basicide/moduldl2.cxx 
b/basctl/source/basicide/moduldl2.cxx
index e962eb4e0824..7be53296159a 100644
--- a/basctl/source/basicide/moduldl2.cxx
+++ b/basctl/source/basicide/moduldl2.cxx
@@ -629,6 +629,7 @@ void LibPage::InsertLib()
         xLibDlg->SetStorageName(aURLObj.getName());
         weld::TreeView& rView = xLibDlg->GetLibBox();
         rView.make_unsorted();
+        rView.freeze();
 
         const OUString* pLibNames = aLibNames.getConstArray();
         for (sal_Int32 i = 0 ; i < nLibCount; ++i)
@@ -645,6 +646,7 @@ void LibPage::InsertLib()
             }
         }
 
+        rView.thaw();
         rView.make_sorted();
 
         if (rView.n_children())
commit 2ed921b0a56961c6937661258b44e1690c5f98d1
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Nov 1 10:30:23 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Nov 1 12:44:59 2021 +0100

    Resolves: tdf#145391 insertion code assumes unsorted treeview
    
    so assumed row index doesn't match real insertion point
    
    presumably a problem since...
    
    commit e8b3df5b9b0eb0a93c25b6dc2e445ae44a7e3f78
    Date:   Fri Aug 2 14:57:49 2019 +0200
    
        tdf#93476 Sort Macro library list after creating/importing a macro
    
        Only set the widget as sorted in the ctor, it remains sorted
    
    Change-Id: I6cefc43357f3215a49b33ff18befdc679c1749bc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124542
    Tested-by: Julien Nabet <serval2...@yahoo.fr>
    Reviewed-by: Julien Nabet <serval2...@yahoo.fr>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/basctl/source/basicide/moduldl2.cxx 
b/basctl/source/basicide/moduldl2.cxx
index 42bcccebd67b..e962eb4e0824 100644
--- a/basctl/source/basicide/moduldl2.cxx
+++ b/basctl/source/basicide/moduldl2.cxx
@@ -622,28 +622,33 @@ void LibPage::InsertLib()
 
     Sequence< OUString > aLibNames = GetMergedLibraryNames( xModLibContImport, 
xDlgLibContImport );
     sal_Int32 nLibCount = aLibNames.getLength();
-    const OUString* pLibNames = aLibNames.getConstArray();
-    for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+    if (nLibCount)
     {
         // library import dialog
-        if (!xLibDlg)
-        {
-            xLibDlg = std::make_shared<LibDialog>(m_pDialog->getDialog());
-            xLibDlg->SetStorageName( aURLObj.getName() );
-        }
+        xLibDlg = std::make_shared<LibDialog>(m_pDialog->getDialog());
+        xLibDlg->SetStorageName(aURLObj.getName());
+        weld::TreeView& rView = xLibDlg->GetLibBox();
+        rView.make_unsorted();
 
-        // libbox entries
-        OUString aLibName( pLibNames[ i ] );
-        if ( !( ( xModLibContImport.is() && xModLibContImport->hasByName( 
aLibName ) && xModLibContImport->isLibraryLink( aLibName ) ) ||
-                ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( 
aLibName ) && xDlgLibContImport->isLibraryLink( aLibName ) ) ) )
+        const OUString* pLibNames = aLibNames.getConstArray();
+        for (sal_Int32 i = 0 ; i < nLibCount; ++i)
         {
-            weld::TreeView& rView = xLibDlg->GetLibBox();
-            rView.append();
-            const int nRow = rView.n_children() - 1;
-            rView.set_toggle(nRow, TRISTATE_TRUE);
-            rView.set_text(nRow, aLibName, 0);
-            rView.set_cursor(rView.find_text(aLibName));
+            // libbox entries
+            OUString aLibName( pLibNames[ i ] );
+            if ( !( ( xModLibContImport.is() && xModLibContImport->hasByName( 
aLibName ) && xModLibContImport->isLibraryLink( aLibName ) ) ||
+                    ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( 
aLibName ) && xDlgLibContImport->isLibraryLink( aLibName ) ) ) )
+            {
+                rView.append();
+                const int nRow = rView.n_children() - 1;
+                rView.set_toggle(nRow, TRISTATE_TRUE);
+                rView.set_text(nRow, aLibName, 0);
+            }
         }
+
+        rView.make_sorted();
+
+        if (rView.n_children())
+            rView.set_cursor(0);
     }
 
     if (!xLibDlg)

Reply via email to