diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-10-10 12:18:13 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-10-10 16:57:12 +0200 |
commit | 3b21fed4b153e3bbf1d47c3073f31a3735538596 (patch) | |
tree | dc9fb83579f454713d8cd44df3d8627bc826e564 /vcl/source | |
parent | ee68b450b75c68b2b129564c799766abba7087c9 (diff) |
optimize adding a block of entries at one time
Change-Id: I9a59154fa445cf3c44ede3ceb1d09f408d906530
Reviewed-on: https://gerrit.libreoffice.org/61618
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 102aa450c70a..ffae3928610e 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1692,12 +1692,7 @@ public: m_xTreeView->SetDoubleClickHdl(LINK(this, SalInstanceTreeView, DoubleClickHdl)); } - virtual void insert_text(const OUString& rText, int pos) override - { - m_xTreeView->InsertEntry(rText, pos == -1 ? LISTBOX_APPEND : pos); - } - - virtual void insert(int pos, const OUString& rId, const OUString& rStr, const OUString* pIconName, VirtualDevice* pImageSurface) override + virtual void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface) override { auto nInsertPos = pos == -1 ? COMBOBOX_APPEND : pos; sal_Int32 nInsertedAt; @@ -1707,7 +1702,8 @@ public: nInsertedAt = m_xTreeView->InsertEntry(rStr, createImage(*pIconName), nInsertPos); else nInsertedAt = m_xTreeView->InsertEntry(rStr, createImage(*pImageSurface), nInsertPos); - m_xTreeView->SetEntryData(nInsertedAt, new OUString(rId)); + if (pId) + m_xTreeView->SetEntryData(nInsertedAt, new OUString(*pId)); } virtual void set_font_color(int pos, const Color& rColor) const override @@ -2307,9 +2303,17 @@ public: return *pRet; } - virtual void insert_text(int pos, const OUString& rStr) override + virtual void insert_vector(const std::vector<weld::ComboBoxEntry>& rItems, bool bKeepExisting) override { - m_xComboBox->InsertEntry(rStr, pos == -1 ? COMBOBOX_APPEND : pos); + freeze(); + if (!bKeepExisting) + clear(); + for (const auto& rItem : rItems) + { + insert(-1, rItem.sString, rItem.sId.isEmpty() ? nullptr : &rItem.sId, + rItem.sImage.isEmpty() ? nullptr : &rItem.sImage, nullptr); + } + thaw(); } virtual int get_count() const override @@ -2381,7 +2385,7 @@ public: m_xComboBox->RemoveEntry(pos); } - virtual void insert(int pos, const OUString& rId, const OUString& rStr, const OUString* pIconName, VirtualDevice* pImageSurface) override + virtual void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface) override { auto nInsertPos = pos == -1 ? COMBOBOX_APPEND : pos; sal_Int32 nInsertedAt; @@ -2391,7 +2395,8 @@ public: nInsertedAt = m_xComboBox->InsertEntry(rStr, createImage(*pIconName), nInsertPos); else nInsertedAt = m_xComboBox->InsertEntry(rStr, createImage(*pImageSurface), nInsertPos); - m_xComboBox->SetEntryData(nInsertedAt, new OUString(rId)); + if (pId) + m_xComboBox->SetEntryData(nInsertedAt, new OUString(*pId)); } virtual bool has_entry() const override @@ -2477,7 +2482,7 @@ public: m_xComboBox->RemoveEntryAt(pos); } - virtual void insert(int pos, const OUString& rId, const OUString& rStr, const OUString* pIconName, VirtualDevice* pImageSurface) override + virtual void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface) override { auto nInsertPos = pos == -1 ? COMBOBOX_APPEND : pos; sal_Int32 nInsertedAt; @@ -2487,7 +2492,8 @@ public: nInsertedAt = m_xComboBox->InsertEntryWithImage(rStr, createImage(*pIconName), nInsertPos); else nInsertedAt = m_xComboBox->InsertEntryWithImage(rStr, createImage(*pImageSurface), nInsertPos); - m_xComboBox->SetEntryData(nInsertedAt, new OUString(rId)); + if (pId) + m_xComboBox->SetEntryData(nInsertedAt, new OUString(*pId)); } virtual void set_entry_text(const OUString& rText) override |