tdf#121180: close Options dialog when restart is confirmed
Change-Id: Ieb6e62ca83921abed6b6432d70c6717dadfaaa34
Reviewed-on: https://gerrit.libreoffice.org/65090
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 0fa14d58457e9418ff756a0efd66e365c4403a67)
Reviewed-on: https://gerrit.libreoffice.org/65184
Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index a0ced4f..cebb553 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -697,8 +697,9 @@ IMPL_LINK_NOARG(OfaTreeOptionsDialog, ApplyHdl_Impl, Button*, void)
if ( bNeedsRestart )
{
SolarMutexGuard aGuard;
::svtools::executeRestartDialog(comphelper::getProcessComponentContext(),
GetFrameWeld(), eRestartReason);
if (svtools::executeRestartDialog(comphelper::getProcessComponentContext(),
GetFrameWeld(), eRestartReason))
EndDialog(RET_OK);
}
}
diff --git a/include/svtools/restartdialog.hxx b/include/svtools/restartdialog.hxx
index 750542a..f29366c 100644
--- a/include/svtools/restartdialog.hxx
+++ b/include/svtools/restartdialog.hxx
@@ -58,8 +58,8 @@ enum RestartReason {
RESTART_REASON_NONE
};
// Must be called with the solar mutex locked:
SVT_DLLPUBLIC void executeRestartDialog(
// Must be called with the solar mutex locked; returns if restart was initiated:
SVT_DLLPUBLIC bool executeRestartDialog(
css::uno::Reference< css::uno::XComponentContext > const & context,
weld::Window* parent, RestartReason reason);
diff --git a/svtools/source/dialogs/restartdialog.cxx b/svtools/source/dialogs/restartdialog.cxx
index 1de2e09..079cc5e 100644
--- a/svtools/source/dialogs/restartdialog.cxx
+++ b/svtools/source/dialogs/restartdialog.cxx
@@ -90,18 +90,20 @@ IMPL_LINK_NOARG(RestartDialog, hdlNo, weld::Button&, void)
}
void svtools::executeRestartDialog(
bool svtools::executeRestartDialog(
css::uno::Reference< css::uno::XComponentContext > const & context,
weld::Window* parent, RestartReason reason)
{
auto xRestartManager = css::task::OfficeRestartManager::get(context);
if (xRestartManager->isRestartRequested(false))
return; // don't try to show another dialog when restart is already in progress
return true; // don't try to show another dialog when restart is already in progress
RestartDialog aDlg(parent, reason);
if (aDlg.run()) {
xRestartManager->requestRestart(
css::uno::Reference< css::task::XInteractionHandler >());
return true;
}
return false;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */