summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2023-09-12 09:02:41 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2023-09-13 08:31:28 +0200
commitb33c175233ef6a9754fc4af647d82b9a51871a22 (patch)
treefb7959c24a455b40c8ec52abbb0f3b60dea88f93 /sfx2
parent3ad4fd34ce1d4ff5f052bee8857c38582ff3e4fd (diff)
lok: fix notebookbar not initialized when switched from classic mode
This is revert of "tdf#155720 remove old skip notebookbar init workaround" This reverts commit f95b5d12c59e612ee4643b385389fc791e31f76d. Mentioned change introduced regression in loading notebookbar. Steps to reproduce bug: 1. be sure cool is in classic/compact mode 2. restart the app so it will load in classic mode 3. switch to tabbed mode Result: notebookbar is not initialized and style previews and font selector are not present Change-Id: I35d6682cdd6c028437b373a748ed9ec36418ac17 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156836 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> (cherry picked from commit c0234520ba9afda5a8b32f7a04c2155cbfbe30ed) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156875 Tested-by: Jenkins
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/notebookbar/SfxNotebookBar.cxx32
1 files changed, 32 insertions, 0 deletions
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index 7a9fef48cfca..3b33ef7dd781 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -290,6 +290,26 @@ bool SfxNotebookBar::IsActive(bool bConsiderSingleToolbar)
return false;
}
+void SfxNotebookBar::ResetActiveToolbarModeToDefault(vcl::EnumContext::Application eApp)
+{
+ const OUString appName( lcl_getAppName( eApp ) );
+
+ if ( appName.isEmpty() )
+ return;
+
+ const OUString aPath = "org.openoffice.Office.UI.ToolbarMode/Applications/" + appName;
+
+ utl::OConfigurationTreeRoot aAppNode(
+ ::comphelper::getProcessComponentContext(),
+ aPath,
+ true);
+ if ( !aAppNode.isValid() )
+ return;
+
+ aAppNode.setNodeValue( "Active", Any( OUString( "Default" ) ) );
+ aAppNode.commit();
+}
+
void SfxNotebookBar::ExecMethod(SfxBindings& rBindings, const OUString& rUIName)
{
// Save active UI file name
@@ -359,6 +379,18 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
{
const SfxViewShell* pViewShell = SfxViewShell::Current();
+ // Notebookbar was loaded too early what caused:
+ // * in LOK: Paste Special feature was incorrectly initialized
+ // Skip first request so Notebookbar will be initialized after document was loaded
+ static std::map<const void*, bool> bSkippedFirstInit;
+ if (comphelper::LibreOfficeKit::isActive() && eApp == vcl::EnumContext::Application::Writer
+ && bSkippedFirstInit.find(pViewShell) == bSkippedFirstInit.end())
+ {
+ bSkippedFirstInit[pViewShell] = true;
+ ResetActiveToolbarModeToDefault(eApp);
+ return false;
+ }
+
RemoveListeners(pSysWindow);
OUString aBuf = rUIFile + sFile;