Return std::unique_ptr in Application::CreateMessageDialog
The caller of Application::CreateMessageDialog owns the returned message dialog. So far, it was returned by a plain weld::MessageDialog*. Return a unique_ptr instead, to make clear the ownership semantics. (Also adjust SalInstance::CreateMessageDialog accordingly, which is called by Application::CreateMessageDialog and implements the actual logic to create a message dialog.) Adjust callers where needed. Most callers were already using a smart pointer for the returned message dialog anyway. Change-Id: I7c06bb24b611bd67f5af89800adb13bf22dcc6fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211013 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
This commit is contained in:
@@ -36,9 +36,9 @@ IMPL_LINK_NOARG(PasswordToOpenModifyDialog, OkBtnClickHdl, weld::Button&, void)
|
||||
m_xPasswdToModifyED->get_text().isEmpty();
|
||||
if (bInvalidState)
|
||||
{
|
||||
m_xErrorBox.reset(Application::CreateMessageDialog(m_xDialog.get(),
|
||||
VclMessageType::Warning, VclButtonsType::Ok,
|
||||
m_bIsPasswordToModify? m_aInvalidStateForOkButton : m_aInvalidStateForOkButton_v2));
|
||||
m_xErrorBox = Application::CreateMessageDialog(
|
||||
m_xDialog.get(), VclMessageType::Warning, VclButtonsType::Ok,
|
||||
m_bIsPasswordToModify ? m_aInvalidStateForOkButton : m_aInvalidStateForOkButton_v2);
|
||||
m_xErrorBox->runAsync(m_xErrorBox, [](sal_Int32 /*nResult*/) {});
|
||||
}
|
||||
else // check for mismatched passwords and password policy
|
||||
@@ -66,9 +66,9 @@ IMPL_LINK_NOARG(PasswordToOpenModifyDialog, OkBtnClickHdl, weld::Button&, void)
|
||||
const int nMismatch = (bToOpenMatch? 0 : 1) + (bToModifyMatch? 0 : 1);
|
||||
if (nMismatch > 0)
|
||||
{
|
||||
m_xErrorBox.reset(Application::CreateMessageDialog(m_xDialog.get(),
|
||||
VclMessageType::Warning, VclButtonsType::Ok,
|
||||
nMismatch == 1 ? m_aOneMismatch : m_aTwoMismatch));
|
||||
m_xErrorBox = Application::CreateMessageDialog(
|
||||
m_xDialog.get(), VclMessageType::Warning, VclButtonsType::Ok,
|
||||
nMismatch == 1 ? m_aOneMismatch : m_aTwoMismatch);
|
||||
m_xErrorBox->runAsync(m_xErrorBox, [this, bToOpenMatch, nMismatch](sal_Int32 /*nResult*/)
|
||||
{
|
||||
weld::Entry* pEdit = !bToOpenMatch ? m_xPasswdToOpenED.get() : m_xPasswdToModifyED.get();
|
||||
|
||||
@@ -1212,11 +1212,8 @@ IMPL_STATIC_LINK( SvxScriptErrorDialog, ShowDialog, void*, p, void )
|
||||
message = CuiResId( RID_CUISTR_ERROR_TITLE );
|
||||
|
||||
std::shared_ptr<weld::MessageDialog> xBox;
|
||||
xBox.reset(Application::CreateMessageDialog(
|
||||
xData->pParent,
|
||||
VclMessageType::Warning,
|
||||
VclButtonsType::Ok,
|
||||
message));
|
||||
xBox = Application::CreateMessageDialog(xData->pParent, VclMessageType::Warning,
|
||||
VclButtonsType::Ok, message);
|
||||
|
||||
xBox->set_title(CuiResId(RID_CUISTR_ERROR_TITLE));
|
||||
|
||||
|
||||
@@ -525,7 +525,8 @@ void OSQLMessageBox::Construct(weld::Window* pParent, MessBoxStyle _nStyle, Mess
|
||||
break;
|
||||
}
|
||||
|
||||
m_xDialog.reset(Application::CreateMessageDialog(pParent, eMessageType, VclButtonsType::NONE, u""_ustr));
|
||||
m_xDialog
|
||||
= Application::CreateMessageDialog(pParent, eMessageType, VclButtonsType::NONE, u""_ustr);
|
||||
m_xDialog->set_title(utl::ConfigManager::getProductName() + " Base");
|
||||
|
||||
impl_fillMessages();
|
||||
|
||||
@@ -1328,7 +1328,8 @@ public:
|
||||
static std::unique_ptr<weld::Builder>
|
||||
CreateInterimBuilder(vcl::Window* pParent, const OUString& rUIFile, bool bAllowCycleFocusOut);
|
||||
|
||||
static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
static std::unique_ptr<weld::MessageDialog>
|
||||
CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonType, const OUString& rPrimaryMessage);
|
||||
|
||||
static weld::Window* GetFrameWeld(const css::uno::Reference<css::awt::XWindow>& rWindow);
|
||||
|
||||
@@ -177,9 +177,8 @@ void ScSolverDlg::RaiseError( ScSolverErr eError )
|
||||
break;
|
||||
}
|
||||
|
||||
m_xMessageBox.reset(Application::CreateMessageDialog(m_xDialog.get(),
|
||||
VclMessageType::Warning, VclButtonsType::Ok,
|
||||
sMessage));
|
||||
m_xMessageBox = Application::CreateMessageDialog(m_xDialog.get(), VclMessageType::Warning,
|
||||
VclButtonsType::Ok, sMessage);
|
||||
m_xMessageBox->runAsync(m_xMessageBox, [this](sal_Int32 /*nResult*/) {
|
||||
m_xEdTargetVal->grab_focus();
|
||||
m_xMessageBox.reset();
|
||||
|
||||
@@ -1661,9 +1661,8 @@ void ScTabView::ErrorMessage(TranslateId pGlobStrId)
|
||||
}
|
||||
}
|
||||
|
||||
m_xMessageBox.reset(Application::CreateMessageDialog(pParent,
|
||||
VclMessageType::Info, VclButtonsType::Ok,
|
||||
ScResId(pGlobStrId)));
|
||||
m_xMessageBox = Application::CreateMessageDialog(pParent, VclMessageType::Info,
|
||||
VclButtonsType::Ok, ScResId(pGlobStrId));
|
||||
|
||||
if (comphelper::LibreOfficeKit::isActive())
|
||||
m_xMessageBox->SetInstallLOKNotifierHdl(LINK(this, ScTabView, InstallLOKNotifierHdl));
|
||||
|
||||
@@ -380,12 +380,9 @@ IMPL_STATIC_LINK( SfxApplication, GlobalBasicErrorHdl_Impl, StarBASIC*, pStarBas
|
||||
if (ErrorStringFactory::CreateString(nErr, aError))
|
||||
{
|
||||
const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
|
||||
std::shared_ptr<weld::MessageDialog> xBox;
|
||||
xBox.reset(Application::CreateMessageDialog(
|
||||
pViewFrame ? pViewFrame->GetFrameWeld() : nullptr,
|
||||
VclMessageType::Error,
|
||||
VclButtonsType::Ok,
|
||||
aError));
|
||||
std::shared_ptr<weld::MessageDialog> xBox = Application::CreateMessageDialog(
|
||||
pViewFrame ? pViewFrame->GetFrameWeld() : nullptr, VclMessageType::Error,
|
||||
VclButtonsType::Ok, aError);
|
||||
|
||||
xBox->runAsync(xBox, [](sal_Int32 /*nResult*/) {});
|
||||
}
|
||||
|
||||
@@ -2076,8 +2076,8 @@ bool SfxObjectShell::PrepareForSigning(weld::Window* pDialogParent)
|
||||
|
||||
if (!bRememberSignature)
|
||||
{
|
||||
xQuestion = std::unique_ptr<weld::MessageDialog>(Application::CreateMessageDialog(pDialogParent,
|
||||
VclMessageType::Question, VclButtonsType::YesNo, sQuestion));
|
||||
xQuestion = Application::CreateMessageDialog(
|
||||
pDialogParent, VclMessageType::Question, VclButtonsType::YesNo, sQuestion);
|
||||
}
|
||||
|
||||
if ( bRememberSignature || ( xQuestion != nullptr && xQuestion->run() == RET_YES ) )
|
||||
|
||||
@@ -76,20 +76,21 @@ executeErrorDialog(
|
||||
switch (eClassification)
|
||||
{
|
||||
case task::InteractionClassification_ERROR:
|
||||
xBox.reset(Application::CreateMessageDialog(pParent,
|
||||
VclMessageType::Error, VclButtonsType::NONE, aText.makeStringAndClear()));
|
||||
xBox = Application::CreateMessageDialog(
|
||||
pParent, VclMessageType::Error, VclButtonsType::NONE, aText.makeStringAndClear());
|
||||
break;
|
||||
case task::InteractionClassification_WARNING:
|
||||
xBox.reset(Application::CreateMessageDialog(pParent,
|
||||
VclMessageType::Warning, VclButtonsType::NONE, aText.makeStringAndClear()));
|
||||
xBox = Application::CreateMessageDialog(
|
||||
pParent, VclMessageType::Warning, VclButtonsType::NONE, aText.makeStringAndClear());
|
||||
break;
|
||||
case task::InteractionClassification_INFO:
|
||||
xBox.reset(Application::CreateMessageDialog(pParent,
|
||||
VclMessageType::Info, VclButtonsType::NONE, aText.makeStringAndClear()));
|
||||
xBox = Application::CreateMessageDialog(
|
||||
pParent, VclMessageType::Info, VclButtonsType::NONE, aText.makeStringAndClear());
|
||||
break;
|
||||
case task::InteractionClassification_QUERY:
|
||||
xBox.reset(Application::CreateMessageDialog(pParent,
|
||||
VclMessageType::Question, VclButtonsType::NONE, aText.makeStringAndClear()));
|
||||
xBox = Application::CreateMessageDialog(pParent, VclMessageType::Question,
|
||||
VclButtonsType::NONE,
|
||||
aText.makeStringAndClear());
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
|
||||
@@ -190,10 +190,9 @@ public:
|
||||
const OUString& rUIRoot,
|
||||
const OUString& rUIFile,
|
||||
bool bAllowCycleFocusOut) override;
|
||||
virtual weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
|
||||
VclMessageType eMessageType,
|
||||
VclButtonsType eButtonType,
|
||||
const OUString& rPrimaryMessage) override;
|
||||
virtual std::unique_ptr<weld::MessageDialog>
|
||||
CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonType, const OUString& rPrimaryMessage) override;
|
||||
virtual std::unique_ptr<weld::ColorChooserDialog>
|
||||
CreateColorChooserDialog(weld::Window* pParent, vcl::ColorPickerMode eMode) override;
|
||||
|
||||
|
||||
+2
-1
@@ -189,7 +189,8 @@ public:
|
||||
const OUString& rUIRoot,
|
||||
const OUString& rUIFile,
|
||||
bool bAllowCycleFocusOut);
|
||||
virtual weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
virtual std::unique_ptr<weld::MessageDialog>
|
||||
CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonType, const OUString& rPrimaryMessage);
|
||||
virtual std::unique_ptr<weld::ColorChooserDialog>
|
||||
CreateColorChooserDialog(weld::Window* pParent, vcl::ColorPickerMode eMode);
|
||||
|
||||
@@ -285,7 +285,9 @@ public:
|
||||
const OUString& rUIRoot,
|
||||
const OUString& rUIFile,
|
||||
bool bAllowCycleFocusOut) override;
|
||||
virtual weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage) override;
|
||||
virtual std::unique_ptr<weld::MessageDialog>
|
||||
CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonType, const OUString& rPrimaryMessage) override;
|
||||
std::unique_ptr<weld::ColorChooserDialog>
|
||||
CreateColorChooserDialog(weld::Window* pParent, vcl::ColorPickerMode eMode) override;
|
||||
virtual weld::Window* GetFrameWeld(const css::uno::Reference<css::awt::XWindow>& rWindow) override;
|
||||
|
||||
@@ -944,15 +944,14 @@ std::unique_ptr<weld::Builder> QtInstance::CreateInterimBuilder(vcl::Window* pPa
|
||||
return std::make_unique<QtInstanceBuilder>(pWidget, rUIRoot, rUIFile);
|
||||
}
|
||||
|
||||
weld::MessageDialog* QtInstance::CreateMessageDialog(weld::Widget* pParent,
|
||||
VclMessageType eMessageType,
|
||||
VclButtonsType eButtonsType,
|
||||
const OUString& rPrimaryMessage)
|
||||
std::unique_ptr<weld::MessageDialog>
|
||||
QtInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonsType, const OUString& rPrimaryMessage)
|
||||
{
|
||||
SolarMutexGuard g;
|
||||
if (!IsMainThread())
|
||||
{
|
||||
weld::MessageDialog* pDialog = nullptr;
|
||||
std::unique_ptr<weld::MessageDialog> pDialog;
|
||||
RunInMainThread([&] {
|
||||
pDialog = CreateMessageDialog(pParent, eMessageType, eButtonsType, rPrimaryMessage);
|
||||
});
|
||||
@@ -971,7 +970,8 @@ weld::MessageDialog* QtInstance::CreateMessageDialog(weld::Widget* pParent,
|
||||
pMessageBox->setText(toQString(rPrimaryMessage));
|
||||
pMessageBox->setIcon(vclMessageTypeToQtIcon(eMessageType));
|
||||
pMessageBox->setWindowTitle(toQString(GetStandardMessageDialogText(eMessageType)));
|
||||
QtInstanceMessageDialog* pDialog = new QtInstanceMessageDialog(pMessageBox);
|
||||
std::unique_ptr<QtInstanceMessageDialog> pDialog
|
||||
= std::make_unique<QtInstanceMessageDialog>(pMessageBox);
|
||||
pDialog->addStandardButtons(eButtonsType);
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
@@ -92,16 +92,15 @@ std::unique_ptr<weld::Builder> SalInstance::CreateInterimBuilder(vcl::Window* pP
|
||||
return std::make_unique<SalInstanceBuilder>(pParent, rUIRoot, rUIFile);
|
||||
}
|
||||
|
||||
weld::MessageDialog* SalInstance::CreateMessageDialog(weld::Widget* pParent,
|
||||
VclMessageType eMessageType,
|
||||
VclButtonsType eButtonsType,
|
||||
const OUString& rPrimaryMessage)
|
||||
std::unique_ptr<weld::MessageDialog>
|
||||
SalInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonsType, const OUString& rPrimaryMessage)
|
||||
{
|
||||
SalInstanceWidget* pParentInstance = dynamic_cast<SalInstanceWidget*>(pParent);
|
||||
SystemWindow* pParentWidget = pParentInstance ? pParentInstance->getSystemWindow() : nullptr;
|
||||
VclPtrInstance<MessageDialog> xMessageDialog(pParentWidget, rPrimaryMessage, eMessageType,
|
||||
eButtonsType);
|
||||
return new SalInstanceMessageDialog(xMessageDialog, nullptr, true);
|
||||
return std::make_unique<SalInstanceMessageDialog>(xMessageDialog, nullptr, true);
|
||||
}
|
||||
|
||||
std::unique_ptr<weld::ColorChooserDialog>
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include <vcl/settings.hxx>
|
||||
#include <slider.hxx>
|
||||
#include <vcl/weld/Builder.hxx>
|
||||
#include <vcl/weld/MessageDialog.hxx>
|
||||
#include <vcl/weld/weldutils.hxx>
|
||||
#include <vcl/commandinfoprovider.hxx>
|
||||
#include <iconview.hxx>
|
||||
@@ -199,7 +200,8 @@ std::unique_ptr<weld::Builder> Application::CreateInterimBuilder(vcl::Window* pP
|
||||
bAllowCycleFocusOut);
|
||||
}
|
||||
|
||||
weld::MessageDialog* Application::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
std::unique_ptr<weld::MessageDialog>
|
||||
Application::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonType, const OUString& rPrimaryMessage)
|
||||
{
|
||||
return GetSalInstance()->CreateMessageDialog(pParent, eMessageType, eButtonType, rPrimaryMessage);
|
||||
|
||||
@@ -24296,14 +24296,16 @@ std::unique_ptr<weld::Builder> GtkInstance::CreateInterimBuilder(vcl::Window* pP
|
||||
return std::make_unique<GtkInstanceBuilder>(pWindow, rUIRoot, rUIFile, xEmbedWindow.get(), bAllowCycleFocusOut);
|
||||
}
|
||||
|
||||
weld::MessageDialog* GtkInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonsType, const OUString &rPrimaryMessage)
|
||||
std::unique_ptr<weld::MessageDialog>
|
||||
GtkInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
|
||||
VclButtonsType eButtonsType, const OUString& rPrimaryMessage)
|
||||
{
|
||||
GtkInstanceWidget* pParentInstance = dynamic_cast<GtkInstanceWidget*>(pParent);
|
||||
GtkWindow* pParentWindow = pParentInstance ? pParentInstance->getWindow() : nullptr;
|
||||
GtkMessageDialog* pMessageDialog = GTK_MESSAGE_DIALOG(gtk_message_dialog_new(pParentWindow, GTK_DIALOG_MODAL,
|
||||
VclToGtk(eMessageType), VclToGtk(eButtonsType), "%s",
|
||||
OUStringToOString(rPrimaryMessage, RTL_TEXTENCODING_UTF8).getStr()));
|
||||
return new GtkInstanceMessageDialog(pMessageDialog, nullptr, true);
|
||||
return std::make_unique<GtkInstanceMessageDialog>(pMessageDialog, nullptr, true);
|
||||
}
|
||||
|
||||
std::unique_ptr<weld::ColorChooserDialog>
|
||||
|
||||
Reference in New Issue
Block a user