include/vcl/weld.hxx      |    1 +
 vcl/jsdialog/executor.cxx |    3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

New commits:
commit 8b8bad6494b3445a65f1dd47a2731a77034cca77
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Thu Nov 17 22:25:33 2022 +0100
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Fri Nov 18 13:21:05 2022 +0100

    jsdialogs: correctly detect button's handler
    
    Change-Id: I5bb3e60d52813fddfc9a5eb7a0e87d5f5e3853f3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142904
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index b45a97e1c5eb..d1d798299279 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1432,6 +1432,7 @@ public:
     virtual void set_from_icon_name(const OUString& rIconName) = 0;
     virtual OUString get_label() const = 0;
     void clicked() { signal_clicked(); }
+    bool is_custom_handler_set() { return m_aClickHdl.IsSet(); }
 
     // font size is in points, not pixels, e.g. see Window::[G]etPointFont
     virtual void set_font(const vcl::Font& rFont) = 0;
diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx
index d23c1299ade2..d56cfbc63e8e 100644
--- a/vcl/jsdialog/executor.cxx
+++ b/vcl/jsdialog/executor.cxx
@@ -58,7 +58,8 @@ bool ExecuteAction(const std::string& nWindowId, const 
OString& rWidget, StringM
 
     if (sControlType == "responsebutton")
     {
-        if (pWidget == nullptr)
+        auto pButton = dynamic_cast<weld::Button*>(pWidget);
+        if (pWidget == nullptr || (pButton && 
!pButton->is_custom_handler_set()))
         {
             // welded wrapper not found - use response code instead
             pWidget = JSInstanceBuilder::FindWeldWidgetsMap(nWindowId, 
"__DIALOG__");

Reply via email to