diff options
author | Henry Castro <hcastro@collabora.com> | 2020-12-25 13:23:40 -0400 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2021-04-09 11:56:36 +0200 |
commit | f547d89135831706cb1fc27a2f7b973516402581 (patch) | |
tree | b000c5fb436c5a60f816ffad89e430cd0ec23335 | |
parent | jsdialog: update JSON on treeview modification (diff) | |
download | core-f547d89135831706cb1fc27a2f7b973516402581.tar.gz core-f547d89135831706cb1fc27a2f7b973516402581.zip |
jsdialog: override weld_message_dialog
It is required to create the "Macro Security Warning"
message dialog
Change-Id: Ic802b6e4f1a2f8c5c294aa5432f3ad5274b5e105
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108289
Tested-by: Jenkins
Reviewed-by: Henry Castro <hcastro@collabora.com>
-rw-r--r-- | vcl/inc/jsdialog/jsdialogbuilder.hxx | 1 | ||||
-rw-r--r-- | vcl/jsdialog/jsdialogbuilder.cxx | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 0a02e64cf890..0fa94195981c 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -149,6 +149,7 @@ public: const OUString& rUIFile); virtual ~JSInstanceBuilder() override; + virtual std::unique_ptr<weld::MessageDialog> weld_message_dialog(const OString& id) override; virtual std::unique_ptr<weld::Dialog> weld_dialog(const OString& id) override; virtual std::unique_ptr<weld::Label> weld_label(const OString& id) override; virtual std::unique_ptr<weld::Button> weld_button(const OString& id) override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 1bef2653ae11..f0fb911d8f23 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -467,6 +467,32 @@ std::unique_ptr<weld::Dialog> JSInstanceBuilder::weld_dialog(const OString& id) return pRet; } +std::unique_ptr<weld::MessageDialog> JSInstanceBuilder::weld_message_dialog(const OString& id) +{ + std::unique_ptr<weld::MessageDialog> pRet; + ::MessageDialog* pMessageDialog = m_xBuilder->get<::MessageDialog>(id); + + if (pMessageDialog) + { + m_nWindowId = pMessageDialog->GetLOKWindowId(); + pMessageDialog->SetLOKTunnelingState(false); + + InsertWindowToMap(m_nWindowId); + + assert(!m_aOwnedToplevel && "only one toplevel per .ui allowed"); + m_aOwnedToplevel.set(pMessageDialog); + m_xBuilder->drop_ownership(pMessageDialog); + + if (id == "MacroWarnMedium") + pMessageDialog->SetDisableIdleNotify(true); + } + + pRet.reset(pMessageDialog ? new JSMessageDialog(pMessageDialog, m_aOwnedToplevel, this, false) + : nullptr); + + return pRet; +} + std::unique_ptr<weld::Label> JSInstanceBuilder::weld_label(const OString& id) { ::FixedText* pLabel = m_xBuilder->get<FixedText>(id); |