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)