include/sfx2/notebookbar/SfxNotebookBar.hxx |    3 +++
 sfx2/source/notebookbar/SfxNotebookBar.cxx  |   27 ++++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

New commits:
commit 22887ce7b1ea890e06f4b64bafc97686f30ec129
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Tue Feb 22 13:03:24 2022 +0100
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Sun May 1 20:19:23 2022 +0200

    lok: reset ui mode state when switch to notebookbar cancelled
    
    We have to keep state in the register in sync with the view.
    When we cancelled notebookbar usage we need to revert Default state
    so next time we will be able to activate notebookbar.
    
    Change-Id: Ie5f7d0160c9c22c6621aca73b2cdd7197f86ff78
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133325
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133654
    Tested-by: Jenkins

diff --git a/include/sfx2/notebookbar/SfxNotebookBar.hxx 
b/include/sfx2/notebookbar/SfxNotebookBar.hxx
index cbf7f92d3b9b..66286b87cdb9 100644
--- a/include/sfx2/notebookbar/SfxNotebookBar.hxx
+++ b/include/sfx2/notebookbar/SfxNotebookBar.hxx
@@ -13,6 +13,7 @@
 #include <sfx2/dllapi.h>
 #include <rtl/ustring.hxx>
 #include <vcl/WeldedTabbedNotebookbar.hxx>
+#include <vcl/EnumContext.hxx>
 
 #include <map>
 #include <memory>
@@ -76,6 +77,8 @@ private:
     static std::map<const SfxViewShell*, 
std::shared_ptr<WeldedTabbedNotebookbar>>
         m_pNotebookBarWeldedWrapper;
 
+    static void ResetActiveToolbarModeToDefault(vcl::EnumContext::Application 
eApp);
+
     DECL_DLLPRIVATE_STATIC_LINK(SfxNotebookBar, VclDisposeHdl, const 
SfxViewShell*, void);
 };
 
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx 
b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index 3f7bb9863314..58647afe2645 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -288,6 +288,26 @@ bool SfxNotebookBar::IsActive()
     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", makeAny( OUString( "Default" ) ) );
+    aAppNode.commit();
+}
+
 void SfxNotebookBar::ExecMethod(SfxBindings& rBindings, const OUString& 
rUIName)
 {
     // Save active UI file name
@@ -333,9 +353,13 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
         const Reference<frame::XModuleManager> xModuleManager  = 
frame::ModuleManager::create( xContext );
         OUString aModuleName = xModuleManager->identify( xFrame );
         vcl::EnumContext::Application eApp = 
vcl::EnumContext::GetApplicationEnum( aModuleName );
-        OUString sFile = lcl_getNotebookbarFileName( eApp );
+
+        OUString sFile;
         if (comphelper::LibreOfficeKit::isActive())
             sFile = "notebookbar_online.ui";
+        else
+            sFile = lcl_getNotebookbarFileName( eApp );
+
         OUString sNewFile = rUIFile + sFile;
         OUString sCurrentFile;
         VclPtr<NotebookBar> pNotebookBar = pSysWindow->GetNotebookBar();
@@ -357,6 +381,7 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
                 && bSkippedFirstInit.find(pViewShell) == 
bSkippedFirstInit.end())
             {
                 bSkippedFirstInit[pViewShell] = true;
+                ResetActiveToolbarModeToDefault(eApp);
                 return false;
             }
 

Reply via email to