vcl/inc/jsdialog/jsdialogbuilder.hxx |   10 +++++++
 vcl/jsdialog/jsdialogbuilder.cxx     |   48 +++++++++++++++++++++++++++++++++--
 2 files changed, 56 insertions(+), 2 deletions(-)

New commits:
commit 5a563abb2c8d1d6c981ebfaa7247395a86a7ec84
Author:     Szymon Kłos <[email protected]>
AuthorDate: Fri Mar 24 09:52:28 2023 +0100
Commit:     Szymon Kłos <[email protected]>
CommitDate: Sat Apr 1 16:43:27 2023 +0200

    jsdialog: send full update when shown not when created
    
    Change-Id: I02cb63b57960c1d7425fe97c341eaf24f216c3a8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149496
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Szymon Kłos <[email protected]>

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index ac638e70eae5..75ea450ec4c8 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -507,6 +507,11 @@ public:
     virtual void undo_collapse() override;
     virtual void response(int response) override;
     virtual weld::Button* weld_widget_for_response(int response) override;
+    virtual int run() override;
+    virtual bool runAsync(std::shared_ptr<weld::DialogController> aOwner,
+                          const std::function<void(sal_Int32)>& rEndDialogFn) 
override;
+    virtual bool runAsync(std::shared_ptr<Dialog> const& rxSelf,
+                          const std::function<void(sal_Int32)>& func) override;
 };
 
 class JSAssistant final : public JSWidget<SalInstanceAssistant, 
vcl::RoadmapWizard>
@@ -519,6 +524,11 @@ public:
     virtual void set_current_page(const OString& rIdent) override;
     virtual void response(int response) override;
     virtual weld::Button* weld_widget_for_response(int response) override;
+    virtual int run() override;
+    virtual bool runAsync(std::shared_ptr<weld::DialogController> aOwner,
+                          const std::function<void(sal_Int32)>& rEndDialogFn) 
override;
+    virtual bool runAsync(std::shared_ptr<Dialog> const& rxSelf,
+                          const std::function<void(sal_Int32)>& func) override;
 };
 
 class JSContainer final : public JSWidget<SalInstanceContainer, vcl::Window>
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index c33107c34570..ef59d1eb1e8f 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -853,7 +853,6 @@ std::unique_ptr<weld::Dialog> 
JSInstanceBuilder::weld_dialog(const OString& id)
         RememberWidget("__DIALOG__", pRet.get());
 
         initializeSender(GetNotifierWindow(), GetContentWindow(), 
GetTypeOfJSON());
-        sendFullUpdate();
         m_bSentInitialUpdate = true;
     }
 
@@ -882,7 +881,6 @@ std::unique_ptr<weld::Assistant> 
JSInstanceBuilder::weld_assistant(const OString
         RememberWidget("__DIALOG__", pRet.get());
 
         initializeSender(GetNotifierWindow(), GetContentWindow(), 
GetTypeOfJSON());
-        sendFullUpdate();
         m_bSentInitialUpdate = true;
     }
 
@@ -1337,6 +1335,52 @@ void JSAssistant::response(int response)
     SalInstanceAssistant::response(response);
 }
 
+int JSDialog::run()
+{
+    sendFullUpdate(true);
+    int ret = SalInstanceDialog::run();
+    return ret;
+}
+
+bool JSDialog::runAsync(std::shared_ptr<weld::DialogController> aOwner,
+                        const std::function<void(sal_Int32)>& rEndDialogFn)
+{
+    bool ret = SalInstanceDialog::runAsync(aOwner, rEndDialogFn);
+    sendFullUpdate();
+    return ret;
+}
+
+bool JSDialog::runAsync(std::shared_ptr<Dialog> const& rxSelf,
+                        const std::function<void(sal_Int32)>& func)
+{
+    bool ret = SalInstanceDialog::runAsync(rxSelf, func);
+    sendFullUpdate();
+    return ret;
+}
+
+int JSAssistant::run()
+{
+    sendFullUpdate(true);
+    int ret = SalInstanceDialog::run();
+    return ret;
+}
+
+bool JSAssistant::runAsync(std::shared_ptr<weld::DialogController> aOwner,
+                           const std::function<void(sal_Int32)>& rEndDialogFn)
+{
+    bool ret = SalInstanceDialog::runAsync(aOwner, rEndDialogFn);
+    sendFullUpdate();
+    return ret;
+}
+
+bool JSAssistant::runAsync(std::shared_ptr<Dialog> const& rxSelf,
+                           const std::function<void(sal_Int32)>& func)
+{
+    bool ret = SalInstanceDialog::runAsync(rxSelf, func);
+    sendFullUpdate();
+    return ret;
+}
+
 weld::Button* JSDialog::weld_widget_for_response(int nResponse)
 {
     PushButton* pButton

Reply via email to