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__");