summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2020-12-25 13:23:40 -0400
committerHenry Castro <hcastro@collabora.com>2021-01-19 03:22:55 +0100
commit2ce61a9b9becc5d730de1fd18460585f4cc8d558 (patch)
tree439135225eb8cdd0cef0d73c4ee3730cdf84b5c2
parentfd23ba7af9031658e2ce1628d9716e5f6e4934d1 (diff)
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> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109145 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
-rw-r--r--vcl/inc/jsdialog/jsdialogbuilder.hxx2
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx26
2 files changed, 28 insertions, 0 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index bba976debfd3..8c9c7930b94f 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -151,6 +151,8 @@ public:
const OUString& rUIFile);
virtual ~JSInstanceBuilder() override;
+ virtual std::unique_ptr<weld::MessageDialog> weld_message_dialog(const OString& id,
+ bool bTakeOwnership = true) override;
virtual std::unique_ptr<weld::Dialog> weld_dialog(const OString& id,
bool bTakeOwnership = true) override;
virtual std::unique_ptr<weld::Label> weld_label(const OString& id,
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index ceff10569e51..67cf8ec6fbac 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -459,6 +459,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, bool bTakeOwnership)
+{
+ std::unique_ptr<weld::MessageDialog> pRet;
+ ::MessageDialog* pMessageDialog = m_xBuilder->get<::MessageDialog>(id);
+
+ if (bTakeOwnership && 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, bool bTakeOwnership)
{
::FixedText* pLabel = m_xBuilder->get<FixedText>(id);