svx/source/inc/StylesPreviewWindow.hxx      |   24 ++++++++++++++++++++++--
 svx/source/tbxctrls/StylesPreviewWindow.cxx |   20 +++++++++++++++-----
 vcl/jsdialog/enabled.cxx                    |    4 ++--
 3 files changed, 39 insertions(+), 9 deletions(-)

New commits:
commit 522bde9470bbb321813fa5f1ca8e3c2ebb1bb5cc
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Tue Dec 14 18:21:39 2021 +0100
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Mon Feb 21 05:31:53 2022 +0100

    Update styles previews in Idle
    
    This helps with performance when we do series of actions
    updating styles. In that case we will only request update.
    When we will reach idle state we will do it only one time.
    What removes unnecessary updates in the meantime.
    
    Change-Id: I9fc59992833a6cf98c42571c1189b3c5d49ba5a0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126840
    Reviewed-by: Luboš Luňák <l.lu...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130232
    Tested-by: Jenkins
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/svx/source/inc/StylesPreviewWindow.hxx 
b/svx/source/inc/StylesPreviewWindow.hxx
index 73c688fc9498..21f46a5e81b9 100644
--- a/svx/source/inc/StylesPreviewWindow.hxx
+++ b/svx/source/inc/StylesPreviewWindow.hxx
@@ -74,8 +74,25 @@ private:
                                       const tools::Rectangle& aContentRect, 
const Color& aColor);
 };
 
+class StylesListUpdateTask : public Idle
+{
+    StylesPreviewWindow_Base& m_rStylesList;
+
+public:
+    StylesListUpdateTask(StylesPreviewWindow_Base& rStylesList)
+        : Idle("StylesListUpdateTask")
+        , m_rStylesList(rStylesList)
+    {
+        SetPriority(TaskPriority::HIGH_IDLE);
+    }
+
+    virtual void Invoke() override;
+};
+
 class StylesPreviewWindow_Base
 {
+    friend class StylesListUpdateTask;
+
 protected:
     static constexpr unsigned STYLES_COUNT = 6;
 
@@ -83,6 +100,8 @@ protected:
 
     std::unique_ptr<weld::IconView> m_xStylesView;
 
+    StylesListUpdateTask m_aUpdateTask;
+
     rtl::Reference<StyleStatusListener> m_xStatusListener;
     std::unique_ptr<StylePoolChangeListener> m_pStylePoolChangeListener;
 
@@ -102,10 +121,11 @@ public:
     ~StylesPreviewWindow_Base();
 
     void Select(const OUString& rStyleName);
-    void UpdateStylesList();
+    void RequestStylesListUpdate();
 
 private:
-    void Update();
+    void UpdateStylesList();
+    void UpdateSelection();
     bool Command(const CommandEvent& rEvent);
 };
 
diff --git a/svx/source/tbxctrls/StylesPreviewWindow.cxx 
b/svx/source/tbxctrls/StylesPreviewWindow.cxx
index 228e322be50a..2c27c2fb834f 100644
--- a/svx/source/tbxctrls/StylesPreviewWindow.cxx
+++ b/svx/source/tbxctrls/StylesPreviewWindow.cxx
@@ -100,7 +100,7 @@ StylePoolChangeListener::~StylePoolChangeListener()
 
 void StylePoolChangeListener::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& 
/*rHint*/)
 {
-    m_pPreviewControl->UpdateStylesList();
+    m_pPreviewControl->RequestStylesListUpdate();
 }
 
 StyleItemController::StyleItemController(const std::pair<OUString, OUString>& 
aStyleName)
@@ -358,6 +358,7 @@ StylesPreviewWindow_Base::StylesPreviewWindow_Base(
     const css::uno::Reference<css::frame::XDispatchProvider>& 
xDispatchProvider)
     : m_xDispatchProvider(xDispatchProvider)
     , m_xStylesView(xBuilder.weld_icon_view("stylesview"))
+    , m_aUpdateTask(*this)
     , m_aDefaultStyles(std::move(aDefaultStyles))
 {
     m_xStylesView->connect_selection_changed(LINK(this, 
StylesPreviewWindow_Base, Selected));
@@ -368,8 +369,7 @@ StylesPreviewWindow_Base::StylesPreviewWindow_Base(
 
     m_pStylePoolChangeListener.reset(new StylePoolChangeListener(this));
 
-    UpdateStylesList();
-    Update();
+    RequestStylesListUpdate();
 }
 
 IMPL_LINK(StylesPreviewWindow_Base, Selected, weld::IconView&, rIconView, void)
@@ -405,6 +405,8 @@ StylesPreviewWindow_Base::~StylesPreviewWindow_Base()
 {
     m_xStatusListener->UnBind();
 
+    m_aUpdateTask.Stop();
+
     try
     {
         m_xStatusListener->dispose();
@@ -420,10 +422,10 @@ void StylesPreviewWindow_Base::Select(const OUString& 
rStyleName)
 {
     m_sSelectedStyle = rStyleName;
 
-    Update();
+    UpdateSelection();
 }
 
-void StylesPreviewWindow_Base::Update()
+void StylesPreviewWindow_Base::UpdateSelection()
 {
     for (std::vector<std::pair<OUString, OUString>>::size_type i = 0; i < 
m_aAllStyles.size(); ++i)
     {
@@ -435,6 +437,14 @@ void StylesPreviewWindow_Base::Update()
     }
 }
 
+void StylesPreviewWindow_Base::RequestStylesListUpdate() { 
m_aUpdateTask.Start(); }
+
+void StylesListUpdateTask::Invoke()
+{
+    m_rStylesList.UpdateStylesList();
+    m_rStylesList.UpdateSelection();
+}
+
 void StylesPreviewWindow_Base::UpdateStylesList()
 {
     m_aAllStyles = m_aDefaultStyles;
commit 3ab1a849ba54410d14e2c988ae010f2c31dd4dce
Author:     Gökay ŞATIR <gokaysa...@gmail.com>
AuthorDate: Tue Nov 2 12:38:26 2021 +0300
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Mon Feb 21 05:31:39 2022 +0100

    Use JSDialogBuilder for "Find and Replace" dialog.
    
    Signed-off-by: Gökay ŞATIR <gokaysa...@gmail.com>
    Change-Id: I31307601f067c9b303854899258139678ddbba57
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124586
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130231
    Tested-by: Jenkins

diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx
index 6de05a65c9eb..14fc9610c356 100644
--- a/vcl/jsdialog/enabled.cxx
+++ b/vcl/jsdialog/enabled.cxx
@@ -49,8 +49,8 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool 
bMobile)
         || rUIFile == u"modules/scalc/ui/pivotfielddialog.ui"
         || rUIFile == u"modules/scalc/ui/datafieldoptionsdialog.ui"
         || rUIFile == u"svx/ui/fontworkgallerydialog.ui"
-        || rUIFile == u"svx/ui/findreplacedialog.ui" || rUIFile == 
u"cui/ui/macroselectordialog.ui"
-        || rUIFile == u"uui/ui/macrowarnmedium.ui"
+        || rUIFile == u"svx/ui/findreplacedialog.ui" || rUIFile == 
u"svx/ui/findreplacedialog.ui"
+        || rUIFile == u"cui/ui/macroselectordialog.ui" || rUIFile == 
u"uui/ui/macrowarnmedium.ui"
         || rUIFile == u"modules/scalc/ui/textimportcsv.ui"
         || rUIFile == u"xmlsec/ui/digitalsignaturesdialog.ui"
         || rUIFile == u"xmlsec/ui/viewcertdialog.ui" || rUIFile == 
u"xmlsec/ui/certgeneral.ui"

Reply via email to