summaryrefslogtreecommitdiff
path: root/vcl/jsdialog
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-11-18 12:14:35 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2020-11-27 11:42:38 +0100
commitb6d634d74c0231173d6b43357b7cd3cecb76407d (patch)
tree8724801896bd7a8f63d414ca391a830a378699bf /vcl/jsdialog
parent3000f3ee1ac63deff58fa5725a6f6c2f05aec9bb (diff)
jsdialog: remember dialog instance & handle close
Change-Id: I1b10d12edfa7ffca1061f50b5219baae1ac3caeb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106706 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl/jsdialog')
-rw-r--r--vcl/jsdialog/executor.cxx12
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx3
2 files changed, 15 insertions, 0 deletions
diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx
index 13ffc1a33e06..83d19fd7b657 100644
--- a/vcl/jsdialog/executor.cxx
+++ b/vcl/jsdialog/executor.cxx
@@ -242,6 +242,18 @@ bool ExecuteAction(sal_uInt64 nWindowId, const OString& rWidget, StringMap& rDat
}
}
}
+ else if (sControlType == "dialog")
+ {
+ auto pDialog = dynamic_cast<weld::Dialog*>(pWidget);
+ if (pDialog)
+ {
+ if (sAction == "close")
+ {
+ pDialog->response(RET_CANCEL);
+ return true;
+ }
+ }
+ }
}
return false;
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 58c8c64d1108..13b438022e7e 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -365,6 +365,9 @@ std::unique_ptr<weld::Dialog> JSInstanceBuilder::weld_dialog(const OString& id)
std::unique_ptr<weld::Dialog> pRet(pDialog ? new JSDialog(m_aOwnedToplevel, m_aOwnedToplevel,
pDialog, this, false, m_sTypeOfJSON)
: nullptr);
+
+ RememberWidget("__DIALOG__", pRet.get());
+
if (pDialog)
{
assert(!m_aOwnedToplevel && "only one toplevel per .ui allowed");