svx/source/tbxctrls/tbcontrl.cxx |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

New commits:
commit 47f332bf69d495563c720949980c72c96dec41e6
Author:     Noel Grandin <[email protected]>
AuthorDate: Mon Jan 5 10:29:08 2026 +0200
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Mon Jan 5 12:45:14 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]>

diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index b9c99fd425ac..93d5ddd12090 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);
@@ -3417,6 +3412,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);
@@ -3426,14 +3423,17 @@ void SvxStyleToolBoxControl::FillStyleBox()
     if (pImpl->bSpecModeWriter || pImpl->bSpecModeCalc)
     {
         for( const auto &rStyle : 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