[Libreoffice-commits] core.git: sc/source vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Mon Sep 7 09:56:30 UTC 2020
sc/source/ui/dbgui/filtdlg.cxx | 19 ++++++++-----------
vcl/unx/gtk3/gtk3gtkinst.cxx | 15 +++++++++++++--
2 files changed, 21 insertions(+), 13 deletions(-)
New commits:
commit 64db723b2047cf566b652c11c94d9d589df0b930
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Sep 7 09:06:01 2020 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Sep 7 11:55:51 2020 +0200
Related: tdf#136455 use insert_vector for bulk insert
and insert backwards which is a little faster
Change-Id: Ie72d08bb6e869b2d8fe86ae5526706d051233939
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102151
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index ff1f87137095..2b0d5618a92c 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -438,14 +438,14 @@ void ScFilterDlg::UpdateValueList( size_t nList )
const sal_Int32 nFieldSelPos = maFieldLbArr[nList-1]->get_active();
OUString aCurValue = pValList->get_active_text();
- pValList->clear();
- pValList->append_text(aStrNotEmpty);
- pValList->append_text(aStrEmpty);
+ std::unique_ptr<weld::WaitObject> xWaiter;
+ std::vector<weld::ComboBoxEntry> aEntries;
+ aEntries.emplace_back(aStrNotEmpty);
+ aEntries.emplace_back(aStrEmpty);
- if ( nFieldSelPos )
+ if (nFieldSelPos)
{
- weld::WaitObject aWaiter(m_xDialog.get()); // even if only the list box has content
-
+ xWaiter.reset(new weld::WaitObject(m_xDialog.get())); // even if only the list box has content
SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
EntryList* pList = nullptr;
if (!m_EntryLists.count(nColumn))
@@ -504,13 +504,10 @@ void ScFilterDlg::UpdateValueList( size_t nList )
assert(pList);
- pValList->freeze();
for (const auto& rEntry : pList->maFilterEntries)
- {
- pValList->append_text(rEntry.GetString());
- }
- pValList->thaw();
+ aEntries.emplace_back(rEntry.GetString());
}
+ pValList->insert_vector(aEntries, false);
pValList->set_entry_text(aCurValue);
}
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 5230dcf92a88..8a15f98530d7 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -14551,14 +14551,25 @@ public:
virtual void insert_vector(const std::vector<weld::ComboBoxEntry>& rItems, bool bKeepExisting) override
{
freeze();
+
+ int nInsertionPoint;
if (!bKeepExisting)
+ {
clear();
+ nInsertionPoint = 0;
+ }
+ else
+ nInsertionPoint = get_count();
+
GtkTreeIter iter;
- for (const auto& rItem : rItems)
+ // tdf#125241 inserting backwards is faster
+ for (auto aI = rItems.rbegin(); aI != rItems.rend(); ++aI)
{
- insert_row(GTK_LIST_STORE(m_pTreeModel), iter, -1, rItem.sId.isEmpty() ? nullptr : &rItem.sId,
+ const auto& rItem = *aI;
+ insert_row(GTK_LIST_STORE(m_pTreeModel), iter, nInsertionPoint, rItem.sId.isEmpty() ? nullptr : &rItem.sId,
rItem.sString, rItem.sImage.isEmpty() ? nullptr : &rItem.sImage, nullptr);
}
+
thaw();
}
More information about the Libreoffice-commits
mailing list