svx/source/tbxctrls/tbcontrl.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
New commits: commit 1d9cc5964c7a2fd4dd9326c2c0bfa6ee48d67006 Author: Noel Grandin <[email protected]> AuthorDate: Mon Jan 5 10:29:08 2026 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Tue Jan 6 08:16:49 2026 +0100 tdf#166684 fix O(n^2) loop in SvxStyleToolBoxControl::FillStyleBox after commit f4c7443b561eaa58be3eea5bd2598a7090ef386b Author: Szymon Kłos <[email protected]> Date: Fri Dec 26 08:31:12 2025 +0000 tdf#108239 sidebar: unify style list with notebookbar Change-Id: I5b7d2666af9f272f932e0b3c0b22ad626cf9001a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196535 Reviewed-by: Tomaž Vajngerl <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> (cherry picked from commit 47f332bf69d495563c720949980c72c96dec41e6) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196534 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 7f43648a3e25..180062bfc2c3 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -176,11 +176,6 @@ public: m_xWidget->set_entry_text(rText); } - int find_text(const OUString& rText) - { - return m_xWidget->find_text(rText); - } - void set_active(int nActive) { m_xWidget->set_active(nActive); @@ -3256,6 +3251,8 @@ void SvxStyleToolBoxControl::FillStyleBox() // Add used, favourite and user defined std::vector<OUString> aStyles; + // use a set to avoid O(n^2) performance problem in insert loop + std::unordered_set<OUString> aStylesSet; AppendStyles(aStyles, eFamily, SfxStyleSearchBits::Favourite); AppendStyles(aStyles, eFamily, SfxStyleSearchBits::UserDefined); @@ -3265,14 +3262,17 @@ void SvxStyleToolBoxControl::FillStyleBox() if (m_pImpl->bSpecModeWriter || m_pImpl->bSpecModeCalc) { for( const auto &rStyle : m_pImpl->aDefaultStyles ) + { pBox->append_text(rStyle.second); + aStylesSet.insert(rStyle.second); + } } // Insert styles for (const auto& rStyle : aStyles) { // do not duplicate default styles - if (pBox->find_text(rStyle) == -1) + if (aStylesSet.insert(rStyle).second) pBox->append_text(rStyle); }
