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);
     }
 

Reply via email to