diff --git a/basctl/uiconfig/basicide/menubar/menubar.xml b/basctl/uiconfig/basicide/menubar/menubar.xml
index 66bcfa5b6c4c..62c7ded06394 100644
--- a/basctl/uiconfig/basicide/menubar/menubar.xml
+++ b/basctl/uiconfig/basicide/menubar/menubar.xml
@@ -100,6 +100,8 @@
+
+
diff --git a/chart2/uiconfig/menubar/menubar.xml b/chart2/uiconfig/menubar/menubar.xml
index 98c5aabdd54e..ddf7af15bac3 100644
--- a/chart2/uiconfig/menubar/menubar.xml
+++ b/chart2/uiconfig/menubar/menubar.xml
@@ -171,6 +171,8 @@
+
+
diff --git a/dbaccess/uiconfig/dbapp/menubar/menubar.xml b/dbaccess/uiconfig/dbapp/menubar/menubar.xml
index 13da527b2c18..97cad1c753cf 100644
--- a/dbaccess/uiconfig/dbapp/menubar/menubar.xml
+++ b/dbaccess/uiconfig/dbapp/menubar/menubar.xml
@@ -156,6 +156,8 @@
+
+
diff --git a/dbaccess/uiconfig/dbquery/menubar/menubar.xml b/dbaccess/uiconfig/dbquery/menubar/menubar.xml
index 7ee3833a8642..14d1acf6492f 100644
--- a/dbaccess/uiconfig/dbquery/menubar/menubar.xml
+++ b/dbaccess/uiconfig/dbquery/menubar/menubar.xml
@@ -97,6 +97,8 @@
+
+
diff --git a/dbaccess/uiconfig/dbrelation/menubar/menubar.xml b/dbaccess/uiconfig/dbrelation/menubar/menubar.xml
index fc6aaa76e294..3df7607efe87 100644
--- a/dbaccess/uiconfig/dbrelation/menubar/menubar.xml
+++ b/dbaccess/uiconfig/dbrelation/menubar/menubar.xml
@@ -80,6 +80,8 @@
+
+
diff --git a/dbaccess/uiconfig/dbtable/menubar/menubar.xml b/dbaccess/uiconfig/dbtable/menubar/menubar.xml
index 077f4552ea15..fa4aefc47609 100644
--- a/dbaccess/uiconfig/dbtable/menubar/menubar.xml
+++ b/dbaccess/uiconfig/dbtable/menubar/menubar.xml
@@ -81,6 +81,8 @@
+
+
diff --git a/dbaccess/uiconfig/dbtdata/menubar/menubar.xml b/dbaccess/uiconfig/dbtdata/menubar/menubar.xml
index 805e968ce286..9624cc5c0276 100644
--- a/dbaccess/uiconfig/dbtdata/menubar/menubar.xml
+++ b/dbaccess/uiconfig/dbtdata/menubar/menubar.xml
@@ -89,6 +89,8 @@
+
+
diff --git a/extensions/uiconfig/sbibliography/menubar/menubar.xml b/extensions/uiconfig/sbibliography/menubar/menubar.xml
index 3e16a788e65d..f111b1a864fa 100644
--- a/extensions/uiconfig/sbibliography/menubar/menubar.xml
+++ b/extensions/uiconfig/sbibliography/menubar/menubar.xml
@@ -82,6 +82,8 @@
+
+
diff --git a/framework/uiconfig/startmodule/menubar/menubar.xml b/framework/uiconfig/startmodule/menubar/menubar.xml
index 427194dcad5f..2cdff8021552 100644
--- a/framework/uiconfig/startmodule/menubar/menubar.xml
+++ b/framework/uiconfig/startmodule/menubar/menubar.xml
@@ -52,6 +52,8 @@
+
+
diff --git a/include/sfx2/sfxsids.hrc b/include/sfx2/sfxsids.hrc
index f5561feb2ba8..395829b1c7ba 100644
--- a/include/sfx2/sfxsids.hrc
+++ b/include/sfx2/sfxsids.hrc
@@ -44,6 +44,7 @@
#define SID_QUITAPP (SID_SFX_START + 300)
#define SID_ABOUT (SID_SFX_START + 301)
#define SID_SETUPPRINTER (SID_SFX_START + 302)
+#define SID_SAFE_MODE (SID_SFX_START + 303)
#define SID_CONTEXT (SID_SFX_START + 310)
diff --git a/include/svtools/restartdialog.hxx b/include/svtools/restartdialog.hxx
index 74aba87500d1..6b3791ebd282 100644
--- a/include/svtools/restartdialog.hxx
+++ b/include/svtools/restartdialog.hxx
@@ -53,9 +53,10 @@ enum RestartReason {
RESTART_REASON_EXTENSION_INSTALL,
// "For the extension to work properly,
// %PRODUCTNAME must be restarted."
- RESTART_REASON_OPENGL
+ RESTART_REASON_OPENGL,
// "For the OpenGL changes to take effect,
// %PRODUCTNAME must be restarted."
+ RESTART_REASON_SAFE_MODE
};
// Must be called with the solar mutex locked:
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 470daaab96a0..88704174e390 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -6388,6 +6388,11 @@
Description...
+
+
+ Restart in Safe Mode...
+
+
diff --git a/reportdesign/uiconfig/dbreport/menubar/menubar.xml b/reportdesign/uiconfig/dbreport/menubar/menubar.xml
index ce70f4ad9e62..ad19bbd5cc06 100644
--- a/reportdesign/uiconfig/dbreport/menubar/menubar.xml
+++ b/reportdesign/uiconfig/dbreport/menubar/menubar.xml
@@ -286,6 +286,8 @@
+
+
diff --git a/sc/uiconfig/scalc/menubar/menubar.xml b/sc/uiconfig/scalc/menubar/menubar.xml
index 0bbf97cd41b1..216b3c792291 100644
--- a/sc/uiconfig/scalc/menubar/menubar.xml
+++ b/sc/uiconfig/scalc/menubar/menubar.xml
@@ -709,6 +709,8 @@
+
+
diff --git a/sd/uiconfig/sdraw/menubar/menubar.xml b/sd/uiconfig/sdraw/menubar/menubar.xml
index e8f1a06df671..18138a5df5a8 100644
--- a/sd/uiconfig/sdraw/menubar/menubar.xml
+++ b/sd/uiconfig/sdraw/menubar/menubar.xml
@@ -373,6 +373,8 @@
+
+
diff --git a/sd/uiconfig/simpress/menubar/menubar.xml b/sd/uiconfig/simpress/menubar/menubar.xml
index 20c52ccf0494..d8e911f34b16 100644
--- a/sd/uiconfig/simpress/menubar/menubar.xml
+++ b/sd/uiconfig/simpress/menubar/menubar.xml
@@ -611,6 +611,8 @@
+
+
diff --git a/sfx2/UIConfig_sfx.mk b/sfx2/UIConfig_sfx.mk
index c55e3c6fb992..554bf63785ed 100644
--- a/sfx2/UIConfig_sfx.mk
+++ b/sfx2/UIConfig_sfx.mk
@@ -41,6 +41,7 @@ $(eval $(call gb_UIConfig_add_uifiles,sfx,\
sfx2/uiconfig/ui/notebookbarpopup \
sfx2/uiconfig/ui/printeroptionsdialog \
sfx2/uiconfig/ui/querysavedialog \
+ sfx2/uiconfig/ui/safemodequerydialog \
sfx2/uiconfig/ui/searchdialog \
sfx2/uiconfig/ui/securityinfopage \
sfx2/uiconfig/ui/singletabdialog \
diff --git a/sfx2/sdi/appslots.sdi b/sfx2/sdi/appslots.sdi
index 4921f27e0d3e..5df800d52389 100644
--- a/sfx2/sdi/appslots.sdi
+++ b/sfx2/sdi/appslots.sdi
@@ -225,6 +225,11 @@ interface Application
ExecMethod = MiscExec_Impl ;
StateMethod = MiscState_Impl ;
]
+ SID_SAFE_MODE
+ [
+ ExecMethod = MiscExec_Impl ;
+ StateMethod = MiscState_Impl ;
+ ]
}
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index 7c24c75f65d7..edf0ea2b0382 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -5784,3 +5784,20 @@ SfxStringItem Insert3DModel SID_INSERT_3DMODEL
ToolBoxConfig = TRUE,
GroupId = GID_APPLICATION;
]
+
+SfxVoidItem SafeMode SID_SAFE_MODE
+()
+[
+ AutoUpdate = FALSE,
+ FastCall = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_APPLICATION;
+]
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 5adbc7cad70e..b09613e081e6 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -37,6 +37,8 @@
#include
#include
#include
+#include
+#include
#include
#include
#include
@@ -291,6 +293,28 @@ namespace
EndDialog(RET_OK);
showDocument("LICENSE");
}
+
+ class SafeModeQueryDialog : public ModalDialog
+ {
+ private:
+ DECL_LINK(RestartHdl, Button*, void);
+ public:
+ explicit SafeModeQueryDialog();
+ };
+
+ SafeModeQueryDialog::SafeModeQueryDialog()
+ : ModalDialog(nullptr, "SafeModeQueryDialog", "sfx/ui/safemodequerydialog.ui")
+ {
+ get("restart")->SetClickHdl(LINK(this, SafeModeQueryDialog, RestartHdl));
+ }
+
+ IMPL_LINK_NOARG(SafeModeQueryDialog, RestartHdl, Button*, void)
+ {
+ EndDialog(RET_OK);
+ uno::Reference< uno::XComponentContext > xContext = comphelper::getProcessComponentContext();
+ css::task::OfficeRestartManager::get(xContext)->requestRestart(
+ css::uno::Reference< css::task::XInteractionHandler >());
+ }
}
void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
@@ -975,6 +999,12 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
bDone = true;
break;
}
+ case SID_SAFE_MODE:
+ {
+ ScopedVclPtrInstance< SafeModeQueryDialog > aDialog;
+ aDialog->Execute();
+ break;
+ }
default:
break;
@@ -1148,6 +1178,10 @@ void SfxApplication::MiscState_Impl(SfxItemSet &rSet)
}
break;
}
+ case SID_SAFE_MODE:
+ {
+ break;
+ }
default:
break;
diff --git a/sfx2/uiconfig/ui/safemodequerydialog.ui b/sfx2/uiconfig/ui/safemodequerydialog.ui
new file mode 100644
index 000000000000..8a246910dd9f
--- /dev/null
+++ b/sfx2/uiconfig/ui/safemodequerydialog.ui
@@ -0,0 +1,84 @@
+
+
+
+
+
+
diff --git a/starmath/uiconfig/smath/menubar/menubar.xml b/starmath/uiconfig/smath/menubar/menubar.xml
index b7fe639dd8c6..9f273f84a76f 100644
--- a/starmath/uiconfig/smath/menubar/menubar.xml
+++ b/starmath/uiconfig/smath/menubar/menubar.xml
@@ -146,6 +146,8 @@
+
+
diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xml
index 2287f81f96a0..6d2c0509477c 100644
--- a/sw/uiconfig/sglobal/menubar/menubar.xml
+++ b/sw/uiconfig/sglobal/menubar/menubar.xml
@@ -489,6 +489,8 @@
+
+
diff --git a/sw/uiconfig/sweb/menubar/menubar.xml b/sw/uiconfig/sweb/menubar/menubar.xml
index e6b5fed4cd24..cd61f44e464c 100644
--- a/sw/uiconfig/sweb/menubar/menubar.xml
+++ b/sw/uiconfig/sweb/menubar/menubar.xml
@@ -419,6 +419,8 @@
+
+
diff --git a/sw/uiconfig/swform/menubar/menubar.xml b/sw/uiconfig/swform/menubar/menubar.xml
index ae5ac51e8109..ae961e724f38 100644
--- a/sw/uiconfig/swform/menubar/menubar.xml
+++ b/sw/uiconfig/swform/menubar/menubar.xml
@@ -483,6 +483,8 @@
+
+
diff --git a/sw/uiconfig/swreport/menubar/menubar.xml b/sw/uiconfig/swreport/menubar/menubar.xml
index f63c1de5449b..00506298ac2f 100644
--- a/sw/uiconfig/swreport/menubar/menubar.xml
+++ b/sw/uiconfig/swreport/menubar/menubar.xml
@@ -485,6 +485,8 @@
+
+
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index 1a758e396f6f..fefaf80383a2 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -746,6 +746,10 @@
+
+
+
+
diff --git a/sw/uiconfig/swxform/menubar/menubar.xml b/sw/uiconfig/swxform/menubar/menubar.xml
index 1b7a155c195f..c2eb910cb2f0 100644
--- a/sw/uiconfig/swxform/menubar/menubar.xml
+++ b/sw/uiconfig/swxform/menubar/menubar.xml
@@ -485,6 +485,8 @@
+
+