[Libreoffice-commits] core.git: dbaccess/uiconfig framework/inc framework/Library_fwl.mk framework/source framework/util include/vcl officecfg/Configuration_officecfg.mk officecfg/files.mk officecfg/registry postprocess/CustomTarget_registry.mk sc/uiconfig sd/uiconfig sfx2/source solenv/clang-format starmath/uiconfig sw/uiconfig vcl/source

Kshitij Pathania kshitijpathania at gmail.com
Mon Apr 2 07:27:31 UTC 2018


 dbaccess/uiconfig/dbapp/menubar/menubar.xml                          |    1 
 framework/Library_fwl.mk                                             |    1 
 framework/inc/services.h                                             |    1 
 framework/source/register/registertemp.cxx                           |    1 
 framework/source/uielement/notebookbarmenucontroller.cxx             |  323 -------
 framework/source/uielement/toolbarmodemenucontroller.cxx             |   41 
 framework/util/fwl.component                                         |    3 
 include/vcl/EnumContext.hxx                                          |    2 
 officecfg/Configuration_officecfg.mk                                 |    1 
 officecfg/files.mk                                                   |    1 
 officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu      |    2 
 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu |    2 
 officecfg/registry/data/org/openoffice/Office/UI/Notebookbar.xcu     |  181 ----
 officecfg/registry/data/org/openoffice/Office/UI/ToolbarMode.xcu     |  452 +++++++++-
 officecfg/registry/schema/org/openoffice/Office/UI/Notebookbar.xcs   |   78 -
 officecfg/registry/schema/org/openoffice/Office/UI/ToolbarMode.xcs   |   21 
 postprocess/CustomTarget_registry.mk                                 |    2 
 sc/uiconfig/scalc/menubar/menubar.xml                                |    1 
 sd/uiconfig/sdraw/menubar/menubar.xml                                |    1 
 sd/uiconfig/simpress/menubar/menubar.xml                             |    1 
 sfx2/source/appl/appserv.cxx                                         |    6 
 sfx2/source/notebookbar/SfxNotebookBar.cxx                           |   20 
 solenv/clang-format/blacklist                                        |    2 
 starmath/uiconfig/smath/menubar/menubar.xml                          |    1 
 sw/uiconfig/sglobal/menubar/menubar.xml                              |    1 
 sw/uiconfig/swriter/menubar/menubar.xml                              |    1 
 vcl/source/window/EnumContext.cxx                                    |    3 
 27 files changed, 525 insertions(+), 625 deletions(-)

New commits:
commit 5c573a2f7473bae7bb965ca36557cd1b0bf7b9c9
Author: Kshitij Pathania <kshitijpathania at gmail.com>
Date:   Mon Feb 12 03:27:50 2018 +0530

    tdf#115131 made a common submenu for toolbars and notebookbars
    
    Also added the submenu in base, maths and draw
    
    Change-Id: I94850c09c08fd3848eabe2597679634f30fbc735
    Reviewed-on: https://gerrit.libreoffice.org/49575
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: andreas_kainz <kainz.a at gmail.com>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>

diff --git a/dbaccess/uiconfig/dbapp/menubar/menubar.xml b/dbaccess/uiconfig/dbapp/menubar/menubar.xml
index d57aa9ce21da..480926d4e22a 100644
--- a/dbaccess/uiconfig/dbapp/menubar/menubar.xml
+++ b/dbaccess/uiconfig/dbapp/menubar/menubar.xml
@@ -86,6 +86,7 @@
                 </menu:menupopup>
             </menu:menu>
             <menu:menuseparator/>
+            <menu:menuitem menu:id=".uno:ToolbarMode"/>
             <menu:menuitem menu:id=".uno:AvailableToolbars"/>
             <menu:menuitem menu:id=".uno:StatusBarVisible"/>
             <menu:menuitem menu:id=".uno:DBPreview"/>
diff --git a/framework/Library_fwl.mk b/framework/Library_fwl.mk
index bb683abf9f75..58e2864c4296 100644
--- a/framework/Library_fwl.mk
+++ b/framework/Library_fwl.mk
@@ -70,7 +70,6 @@ $(eval $(call gb_Library_add_exception_objects,fwl,\
     framework/source/uielement/newmenucontroller \
     framework/source/uielement/toolbarmodemenucontroller \
     framework/source/uielement/toolbarsmenucontroller \
-    framework/source/uielement/notebookbarmenucontroller \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/framework/inc/services.h b/framework/inc/services.h
index 7e1166d81907..5c780c0c0adb 100644
--- a/framework/inc/services.h
+++ b/framework/inc/services.h
@@ -53,7 +53,6 @@ namespace framework{
 #define IMPLEMENTATIONNAME_NEWMENUCONTROLLER                    "com.sun.star.comp.framework.NewMenuController"
 #define IMPLEMENTATIONNAME_TOOLBARMODEMENUCONTROLLER            "com.sun.star.comp.framework.ToolbarModeMenuController"
 #define IMPLEMENTATIONNAME_TOOLBARSMENUCONTROLLER               "com.sun.star.comp.framework.ToolBarsMenuController"
-#define IMPLEMENTATIONNAME_NOTEBOOKBARMENUCONTROLLER            "com.sun.star.comp.framework.NotebookbarMenuController"
 #define IMPLEMENTATIONNAME_HELPONSTARTUP                        "com.sun.star.comp.framework.HelpOnStartup"
 #define IMPLEMENTATIONNAME_SHELLJOB                             "com.sun.star.comp.framework.ShellJob"
 #define IMPLEMENTATIONNAME_FWK_TASKCREATOR                      "com.sun.star.comp.framework.TaskCreator"
diff --git a/framework/source/register/registertemp.cxx b/framework/source/register/registertemp.cxx
index 80ca3da5ac77..c7a6000acbbc 100644
--- a/framework/source/register/registertemp.cxx
+++ b/framework/source/register/registertemp.cxx
@@ -64,7 +64,6 @@ COMPONENTGETFACTORY ( fwl,
                         IFFACTORY( ::framework::DispatchRecorderSupplier                )   else
                         IFFACTORY( ::framework::ToolbarModeMenuController               )   else
                         IFFACTORY( ::framework::ToolbarsMenuController                  )   else
-                        IFFACTORY( ::framework::NotebookbarMenuController               )   else
                         IFFACTORY( ::framework::FontMenuController                      )   else
                         IFFACTORY( ::framework::MacrosMenuController                    )   else
                         IFFACTORY( ::framework::NewMenuController                       )   else
diff --git a/framework/source/uielement/notebookbarmenucontroller.cxx b/framework/source/uielement/notebookbarmenucontroller.cxx
deleted file mode 100644
index 60e59c9b10d7..000000000000
--- a/framework/source/uielement/notebookbarmenucontroller.cxx
+++ /dev/null
@@ -1,323 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <uielement/notebookbarmenucontroller.hxx>
-
-#include <services.h>
-#include <framework/sfxhelperfunctions.hxx>
-
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/awt/MenuItemStyle.hpp>
-#include <com/sun/star/frame/XDispatchProvider.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/ui/UIElementType.hpp>
-#include <officecfg/Office/UI/Notebookbar.hxx>
-#include <officecfg/Office/UI/ToolbarMode.hxx>
-#include <com/sun/star/frame/XModuleManager.hpp>
-#include <com/sun/star/frame/ModuleManager.hpp>
-
-#include <vcl/menu.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/settings.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <vcl/window.hxx>
-#include <svtools/menuoptions.hxx>
-#include <svtools/miscopt.hxx>
-#include <unotools/confignode.hxx>
-
-//  Defines
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::ui;
-
-namespace framework
-{
-
-DEFINE_XSERVICEINFO_MULTISERVICE_2      (   NotebookbarMenuController                  ,
-                                            OWeakObject                             ,
-                                            SERVICENAME_POPUPMENUCONTROLLER         ,
-                                            IMPLEMENTATIONNAME_NOTEBOOKBARMENUCONTROLLER
-                                        )
-
-DEFINE_INIT_SERVICE                     (   NotebookbarMenuController, {} )
-
-NotebookbarMenuController::NotebookbarMenuController( const css::uno::Reference< css::uno::XComponentContext >& xContext ) :
-    svt::PopupMenuControllerBase( xContext ),
-    m_xContext( xContext )
-{
-}
-
-NotebookbarMenuController::~NotebookbarMenuController()
-{
-}
-
-void NotebookbarMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > const & rPopupMenu )
-{
-    if ( SvtMiscOptions().DisableUICustomization() )
-        return;
-
-    SolarMutexGuard aSolarMutexGuard;
-    resetPopupMenu( rPopupMenu );
-
-    const Reference<frame::XModuleManager> xModuleManager  = frame::ModuleManager::create( m_xContext );
-    vcl::EnumContext::Application eApp = vcl::EnumContext::GetApplicationEnum(xModuleManager->identify(m_xFrame));
-
-    OUStringBuffer aPath("org.openoffice.Office.UI.Notebookbar/Applications/");
-    switch ( eApp )
-    {
-        case vcl::EnumContext::Application::Writer:
-            aPath.append("Writer");
-            break;
-        case vcl::EnumContext::Application::Calc:
-            aPath.append("Calc");
-            break;
-        case vcl::EnumContext::Application::Impress:
-            aPath.append("Impress");
-            break;
-        default:
-            break;
-    }
-    aPath.append("/Implementations");
-
-    const utl::OConfigurationTreeRoot aImplementationsNode(
-                                        m_xContext,
-                                        aPath.makeStringAndClear(),
-                                        false);
-    if ( !aImplementationsNode.isValid() )
-        return;
-
-    const Sequence<OUString> aImplNodeNames (aImplementationsNode.getNodeNames());
-    const sal_Int32 nCount(aImplNodeNames.getLength());
-
-    for ( sal_Int32 nReadIndex = 0; nReadIndex < nCount; ++nReadIndex )
-    {
-        const utl::OConfigurationNode aImplNode(aImplementationsNode.openNode(aImplNodeNames[nReadIndex]));
-        if ( !aImplNode.isValid() )
-            continue;
-
-        OUString aLabel = comphelper::getString( aImplNode.getNodeValue( "Label" ) );
-        OUString aFile = comphelper::getString( aImplNode.getNodeValue( "File" ) );
-        m_xPopupMenu->insertItem( nReadIndex+1, aLabel, css::awt::MenuItemStyle::RADIOCHECK, m_xPopupMenu->getItemCount() );
-        rPopupMenu->setCommand( nReadIndex+1, aFile );
-    }
-}
-
-// XEventListener
-void SAL_CALL NotebookbarMenuController::disposing( const EventObject& )
-{
-    Reference< css::awt::XMenuListener > xHolder(static_cast<OWeakObject *>(this), UNO_QUERY );
-
-    osl::MutexGuard aLock( m_aMutex );
-    m_xFrame.clear();
-    m_xDispatch.clear();
-
-    if ( m_xPopupMenu.is() )
-        m_xPopupMenu->removeMenuListener( Reference< css::awt::XMenuListener >(static_cast<OWeakObject *>(this), UNO_QUERY ));
-    m_xPopupMenu.clear();
-}
-
-// XStatusListener
-void SAL_CALL NotebookbarMenuController::statusChanged( const FeatureStateEvent& Event )
-{
-    OUString aFeatureURL( Event.FeatureURL.Complete );
-
-    // All other status events will be processed here
-    osl::ClearableMutexGuard aLock( m_aMutex );
-    Reference< css::awt::XPopupMenu > xPopupMenu( m_xPopupMenu );
-    aLock.clear();
-
-    if ( xPopupMenu.is() )
-    {
-        SolarMutexGuard aGuard;
-        VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(VCLXMenu::GetImplementation( xPopupMenu ));
-        PopupMenu*     pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr;
-
-        SAL_WARN_IF(!pVCLPopupMenu, "fwk.uielement", "worrying lack of popup menu");
-        if (!pVCLPopupMenu)
-            return;
-
-        bool bSetCheckmark      = false;
-        bool bCheckmark         = false;
-        for ( sal_uInt16 i = 0; i < pVCLPopupMenu->GetItemCount(); i++ )
-        {
-            sal_uInt16 nId = pVCLPopupMenu->GetItemId( i );
-            if ( nId == 0 )
-                continue;
-
-            OUString aCmd = pVCLPopupMenu->GetItemCommand( nId );
-            if ( aCmd == aFeatureURL )
-            {
-                // Enable/disable item
-                pVCLPopupMenu->EnableItem( nId, Event.IsEnabled );
-
-                // Checkmark
-                if ( Event.State >>= bCheckmark )
-                    bSetCheckmark = true;
-
-                if ( bSetCheckmark )
-                    pVCLPopupMenu->CheckItem( nId, bCheckmark );
-                else
-                {
-                    OUString aItemText;
-
-                    if ( Event.State >>= aItemText )
-                        pVCLPopupMenu->SetItemText( nId, aItemText );
-                }
-            }
-        }
-    }
-}
-
-// XMenuListener
-void SAL_CALL NotebookbarMenuController::itemSelected( const css::awt::MenuEvent& rEvent )
-{
-    Reference< css::awt::XPopupMenu >   xPopupMenu;
-    Reference< XURLTransformer >        xURLTransformer;
-    Reference< XFrame >                 xFrame;
-
-    osl::ClearableMutexGuard aLock( m_aMutex );
-    xPopupMenu             = m_xPopupMenu;
-    xURLTransformer        = m_xURLTransformer;
-    xFrame                 = m_xFrame;
-    aLock.clear();
-
-    if ( xPopupMenu.is() )
-    {
-        VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(VCLXPopupMenu::GetImplementation( xPopupMenu ));
-        if ( pPopupMenu )
-        {
-            SolarMutexGuard aSolarMutexGuard;
-            PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu());
-
-            OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId ));
-            URL aTargetURL;
-            Sequence<PropertyValue> aArgs;
-
-            OUStringBuffer aBuf(".uno:Notebookbar?File:string=");
-            aBuf.append( aCmd );
-            aTargetURL.Complete = aBuf.makeStringAndClear();
-
-            xURLTransformer->parseStrict( aTargetURL );
-            Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
-            if ( xDispatchProvider.is() )
-            {
-                Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch(
-                                                        aTargetURL, OUString(), 0 );
-
-                ExecuteInfo* pExecuteInfo = new ExecuteInfo;
-                pExecuteInfo->xDispatch     = xDispatch;
-                pExecuteInfo->aTargetURL    = aTargetURL;
-                pExecuteInfo->aArgs         = aArgs;
-                Application::PostUserEvent( LINK(nullptr, NotebookbarMenuController, ExecuteHdl_Impl), pExecuteInfo );
-            }
-        }
-    }
-}
-
-void SAL_CALL NotebookbarMenuController::itemActivated( const css::awt::MenuEvent& )
-{
-    OUString aActive;
-
-    const Reference<frame::XModuleManager> xModuleManager  = frame::ModuleManager::create( m_xContext );
-    vcl::EnumContext::Application eApp = vcl::EnumContext::GetApplicationEnum(xModuleManager->identify(m_xFrame));
-
-    OUStringBuffer aPath("org.openoffice.Office.UI.ToolbarMode/Applications/");
-    switch ( eApp )
-    {
-        case vcl::EnumContext::Application::Writer:
-            aPath.append("Writer");
-            aActive = officecfg::Office::UI::Notebookbar::ActiveWriter::get( m_xContext );
-            break;
-        case vcl::EnumContext::Application::Calc:
-            aPath.append("Calc");
-            aActive = officecfg::Office::UI::Notebookbar::ActiveCalc::get( m_xContext );
-            break;
-        case vcl::EnumContext::Application::Impress:
-            aPath.append("Impress");
-            aActive = officecfg::Office::UI::Notebookbar::ActiveImpress::get( m_xContext );
-            break;
-        default:
-            break;
-    }
-
-    const utl::OConfigurationTreeRoot aModesNode(
-                                        m_xContext,
-                                        aPath.makeStringAndClear(),
-                                        false);
-    if ( !aModesNode.isValid() )
-        return;
-
-    // Entries are enabled only when Notebookbar mode is active
-    bool bActive = comphelper::getString( aModesNode.getNodeValue( "Active" ) ) == "Notebookbar";
-
-    for ( int i = 0; i < m_xPopupMenu->getItemCount(); ++i )
-    {
-        m_xPopupMenu->checkItem( i+1, aActive == m_xPopupMenu->getCommand( i+1 ) );
-        m_xPopupMenu->enableItem( i+1, bActive );
-    }
-}
-
-// XPopupMenuController
-void SAL_CALL NotebookbarMenuController::setPopupMenu( const Reference< css::awt::XPopupMenu >& xPopupMenu )
-{
-    osl::MutexGuard aLock( m_aMutex );
-
-    throwIfDisposed();
-
-    if ( m_xFrame.is() && !m_xPopupMenu.is() )
-    {
-        // Create popup menu on demand
-        SolarMutexGuard aSolarMutexGuard;
-
-        m_xPopupMenu = xPopupMenu;
-        m_xPopupMenu->addMenuListener( Reference< css::awt::XMenuListener >( static_cast<OWeakObject*>(this), UNO_QUERY ));
-        fillPopupMenu( m_xPopupMenu );
-    }
-}
-
-IMPL_STATIC_LINK( NotebookbarMenuController, ExecuteHdl_Impl, void*, p, void )
-{
-    ExecuteInfo* pExecuteInfo = static_cast<ExecuteInfo*>(p);
-    try
-    {
-        // Asynchronous execution as this can lead to our own destruction!
-        // Framework can recycle our current frame and the layout manager disposes all user interface
-        // elements if a component gets detached from its frame!
-        if ( pExecuteInfo->xDispatch.is() )
-        {
-            pExecuteInfo->xDispatch->dispatch( pExecuteInfo->aTargetURL, pExecuteInfo->aArgs );
-        }
-    }
-    catch ( const Exception& )
-    {
-    }
-
-    delete pExecuteInfo;
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/uielement/toolbarmodemenucontroller.cxx b/framework/source/uielement/toolbarmodemenucontroller.cxx
index 300d386855a8..ff8c0596aa98 100644
--- a/framework/source/uielement/toolbarmodemenucontroller.cxx
+++ b/framework/source/uielement/toolbarmodemenucontroller.cxx
@@ -18,7 +18,6 @@
  */
 
 #include <uielement/toolbarmodemenucontroller.hxx>
-
 #include <services.h>
 #include <framework/sfxhelperfunctions.hxx>
 
@@ -101,6 +100,12 @@ void ToolbarModeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >
         case vcl::EnumContext::Application::Draw:
             aPath.append("Draw");
             break;
+        case vcl::EnumContext::Application::Formula:
+            aPath.append("Formula");
+            break;
+        case vcl::EnumContext::Application::Base:
+            aPath.append("Base");
+            break;
         default:
             break;
     }
@@ -116,6 +121,7 @@ void ToolbarModeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >
     const Sequence<OUString> aModeNodeNames (aModesNode.getNodeNames());
     const sal_Int32 nCount(aModeNodeNames.getLength());
     SvtMiscOptions aMiscOptions;
+    long nCountToolbar = 0;
 
     for ( sal_Int32 nReadIndex = 0; nReadIndex < nCount; ++nReadIndex )
     {
@@ -131,10 +137,13 @@ void ToolbarModeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >
         // Allow Notebookbar only in experimental mode
         if ( isExperimental && !aMiscOptions.IsExperimentalMode() )
             continue;
+        if ( !isExperimental )
+            nCountToolbar++;
 
         m_xPopupMenu->insertItem( nReadIndex+1, aLabel, css::awt::MenuItemStyle::RADIOCHECK, nPosition );
         rPopupMenu->setCommand( nReadIndex+1, aCommandArg );
     }
+    rPopupMenu->insertSeparator(nCountToolbar);
 }
 
 // XEventListener
@@ -223,8 +232,30 @@ void SAL_CALL ToolbarModeMenuController::itemSelected( const css::awt::MenuEvent
         {
             SolarMutexGuard aSolarMutexGuard;
             PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu());
-
             OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId ));
+
+            {
+                OUStringBuffer aBuf(".uno:Notebookbar?File:string=");
+                aBuf.append( aCmd );
+                URL aTargetURL;
+                Sequence<PropertyValue> aArgs;
+
+                aTargetURL.Complete = aBuf.makeStringAndClear();
+                xURLTransformer->parseStrict( aTargetURL );
+                Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
+                if ( xDispatchProvider.is() )
+                {
+                    Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch(
+                                                        aTargetURL, OUString(), 0 );
+
+                    ExecuteInfo* pExecuteInfo = new ExecuteInfo;
+                    pExecuteInfo->xDispatch     = xDispatch;
+                    pExecuteInfo->aTargetURL    = aTargetURL;
+                    pExecuteInfo->aArgs         = aArgs;
+                    Application::PostUserEvent( LINK(nullptr,ToolbarModeMenuController, ExecuteHdl_Impl), pExecuteInfo );
+                }
+            }
+
             OUStringBuffer aBuf(".uno:ToolbarMode?Mode:string=");
             aBuf.append( aCmd );
             URL aTargetURL;
@@ -268,6 +299,12 @@ void SAL_CALL ToolbarModeMenuController::itemActivated( const css::awt::MenuEven
         case vcl::EnumContext::Application::Draw:
             aPath.append("Draw");
             break;
+        case vcl::EnumContext::Application::Formula:
+            aPath.append("Formula");
+            break;
+        case vcl::EnumContext::Application::Base:
+            aPath.append("Base");
+            break;
         default:
             break;
     }
diff --git a/framework/util/fwl.component b/framework/util/fwl.component
index b7a56dc96f7a..75e10b9c1b6f 100644
--- a/framework/util/fwl.component
+++ b/framework/util/fwl.component
@@ -67,9 +67,6 @@
   <implementation name="com.sun.star.comp.framework.ToolBarsMenuController">
     <service name="com.sun.star.frame.PopupMenuController"/>
   </implementation>
-  <implementation name="com.sun.star.comp.framework.NotebookbarMenuController">
-    <service name="com.sun.star.frame.PopupMenuController"/>
-  </implementation>
   <implementation name="com.sun.star.comp.framework.UriAbbreviation">
     <service name="com.sun.star.util.UriAbbreviation"/>
   </implementation>
diff --git a/include/vcl/EnumContext.hxx b/include/vcl/EnumContext.hxx
index f96265c27278..fb64302ccf4d 100644
--- a/include/vcl/EnumContext.hxx
+++ b/include/vcl/EnumContext.hxx
@@ -43,6 +43,8 @@ public:
         Chart,
         Draw,
         Impress,
+        Formula,
+        Base,
 
         // For your convenience to avoid duplicate code in the common
         // case that Draw and Impress use identical context configurations.
diff --git a/officecfg/Configuration_officecfg.mk b/officecfg/Configuration_officecfg.mk
index aea750cb5b90..20c7e0a2be2a 100644
--- a/officecfg/Configuration_officecfg.mk
+++ b/officecfg/Configuration_officecfg.mk
@@ -164,7 +164,6 @@ $(eval $(call gb_Configuration_add_localized_datas,registry,officecfg/registry/d
 	org/openoffice/Office/UI/DrawWindowState.xcu \
 	org/openoffice/Office/UI/ImpressWindowState.xcu \
 	org/openoffice/Office/UI/MathWindowState.xcu \
-	org/openoffice/Office/UI/Notebookbar.xcu \
 	org/openoffice/Office/UI/ReportCommands.xcu \
 	org/openoffice/Office/UI/Sidebar.xcu \
 	org/openoffice/Office/UI/StartModuleWindowState.xcu \
diff --git a/officecfg/files.mk b/officecfg/files.mk
index 1e364ade8c98..3d3a5079f622 100644
--- a/officecfg/files.mk
+++ b/officecfg/files.mk
@@ -79,7 +79,6 @@ officecfg_XCSFILES := \
     Office/UI/ImpressWindowState \
     Office/UI/MathCommands \
     Office/UI/MathWindowState \
-    Office/UI/Notebookbar \
     Office/UI/ReportCommands \
     Office/UI/Sidebar \
     Office/UI/StartModuleCommands \
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
index 12d7ccd3de91..9f82a294fb3b 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -355,7 +355,7 @@
           <value/>
         </prop>
         <prop oor:name="Controller">
-          <value>com.sun.star.comp.framework.NotebookbarMenuController</value>
+          <value>com.sun.star.comp.framework.ToolbarModeMenuController</value>
         </prop>
       </node>
       <node oor:name="c30" oor:op="replace">
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index c55e8687f7e2..74215c11eb89 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -5937,7 +5937,7 @@
       </node>
       <node oor:name=".uno:ToolbarMode" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">Toolbar ~Layout</value>
+          <value xml:lang="en-US">User ~Interface</value>
         </prop>
       </node>
       <node oor:name=".uno:AvailableToolbars" oor:op="replace">
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Notebookbar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Notebookbar.xcu
deleted file mode 100644
index 4ca9a78f9687..000000000000
--- a/officecfg/registry/data/org/openoffice/Office/UI/Notebookbar.xcu
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE oor:component-data SYSTEM "../../../../../component-update.dtd">
-<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:install="http://openoffice.org/2004/installation" oor:name="Notebookbar" oor:package="org.openoffice.Office.UI">
-  <prop oor:name="ActiveWriter">
-    <value>notebookbar.ui</value>
-  </prop>
-  <prop oor:name="ActiveCalc">
-    <value>notebookbar.ui</value>
-  </prop>
-  <prop oor:name="ActiveImpress">
-    <value>notebookbar.ui</value>
-  </prop>
-  <node oor:name="Applications">
-    <node oor:name="Writer" oor:op="replace">
-      <node oor:name="Implementations">
-        <node oor:name="Tabbed" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Tabbed</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="TabbedCompact" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Tabbed Compact</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_compact.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="GroupedbarCompact" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Groupedbar Compact</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groupedbar_compact.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="GroupedbarFull" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Groupedbar Full</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groupedbar_full.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="Groups" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Contextual groups</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groups.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>true</value>
-          </prop>
-        </node>
-        <node oor:name="Single" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Contextual single</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_single.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>true</value>
-          </prop>
-        </node>
-      </node>
-    </node>
-    <node oor:name="Calc" oor:op="replace">
-      <node oor:name="Implementations">
-        <node oor:name="Tabbed" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Tabbed</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="GroupedbarCompact" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Groupedbar Compact</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groupedbar_compact.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="GroupedbarFull" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Groupedbar Full</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groupedbar_full.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="Groups" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Contextual groups</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groups.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>true</value>
-          </prop>
-        </node>
-      </node>
-    </node>
-    <node oor:name="Impress" oor:op="replace">
-      <node oor:name="Implementations">
-        <node oor:name="Tabbed" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Tabbed</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="Groups" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Contextual groups</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groups.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>true</value>
-          </prop>
-        </node>
-        <node oor:name="GroupedbarCompact" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Groupedbar Compact</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groupedbar_compact.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-        <node oor:name="GroupedbarFull" oor:op="replace">
-          <prop oor:name="Label">
-            <value xml:lang="en-US">Groupedbar Full</value>
-          </prop>
-          <prop oor:name="File">
-            <value>notebookbar_groupedbar_full.ui</value>
-          </prop>
-          <prop oor:name="HasMenubar">
-            <value>false</value>
-          </prop>
-        </node>
-      </node>
-    </node>
-  </node>
-</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ToolbarMode.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ToolbarMode.xcu
index 4ee4b4fbcb44..64959d508520 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ToolbarMode.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ToolbarMode.xcu
@@ -1,6 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE oor:component-data SYSTEM "../../../../../component-update.dtd">
 <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:install="http://openoffice.org/2004/installation" oor:name="ToolbarMode" oor:package="org.openoffice.Office.UI">
+  <prop oor:name="ActiveWriter">
+    <value>notebookbar.ui</value>
+  </prop>
+  <prop oor:name="ActiveCalc">
+    <value>notebookbar.ui</value>
+  </prop>
+  <prop oor:name="ActiveImpress">
+    <value>notebookbar.ui</value>
+  </prop>
   <node oor:name="Applications">
     <node oor:name="Writer" oor:op="replace">
       <prop oor:name="Active">
@@ -9,7 +18,7 @@
       <node oor:name="Modes">
         <node oor:name="Default" oor:op="replace">
           <prop oor:name="Label">
-            <value xml:lang="en-US">Default</value>
+            <value xml:lang="en-US">Standard Toolbar</value>
           </prop>
           <prop oor:name="CommandArg">
             <value>Default</value>
@@ -86,9 +95,9 @@
             <value>Opened</value>
           </prop>
         </node>
-        <node oor:name="Notebookbar" oor:op="replace">
+        <node oor:name="ContextualGroups" oor:op="replace">
           <prop oor:name="Label">
-            <value xml:lang="en-US">Notebookbar</value>
+            <value xml:lang="en-US">Contextual groups</value>
           </prop>
           <prop oor:name="HasNotebookbar">
             <value>true</value>
@@ -100,7 +109,153 @@
             <value>3</value>
           </prop>
           <prop oor:name="CommandArg">
-            <value>Notebookbar</value>
+            <value>notebookbar_groups.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+          <prop oor:name="HasMenubar">
+            <value>true</value>
+          </prop>
+        </node>
+        <node oor:name="ContextualSingle" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Contextual Single</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>4</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_single.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+          <prop oor:name="HasMenubar">
+            <value>true</value>
+          </prop>
+        </node>
+        <node oor:name="Tabbed" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Tabbed</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>5</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="TabbedCompact" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Tabbed Compact</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>6</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_compact.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="GroupedbarCompact" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Groupedbar Compact</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>8</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groupedbar_compact.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="GroupedbarFull" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Groupedbar</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>7</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groupedbar_full.ui</value>
           </prop>
           <prop oor:name="Toolbars">
             <value>
@@ -123,7 +278,7 @@
       <node oor:name="Modes">
         <node oor:name="Default" oor:op="replace">
           <prop oor:name="Label">
-            <value xml:lang="en-US">Default</value>
+            <value xml:lang="en-US">Standard Toolbar</value>
           </prop>
           <prop oor:name="CommandArg">
             <value>Default</value>
@@ -200,9 +355,9 @@
             <value>Opened</value>
           </prop>
         </node>
-        <node oor:name="Notebookbar" oor:op="replace">
+        <node oor:name="ContextualGroups" oor:op="replace">
           <prop oor:name="Label">
-            <value xml:lang="en-US">Notebookbar</value>
+            <value xml:lang="en-US">Contextual groups</value>
           </prop>
           <prop oor:name="HasNotebookbar">
             <value>true</value>
@@ -214,7 +369,94 @@
             <value>3</value>
           </prop>
           <prop oor:name="CommandArg">
-            <value>Notebookbar</value>
+            <value>notebookbar_groups.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+          <prop oor:name="HasMenubar">
+            <value>true</value>
+          </prop>
+        </node>
+        <node oor:name="Tabbed" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Tabbed</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>4</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="GroupedbarCompact" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Groupedbar Compact</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>6</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groupedbar_compact.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="GroupedbarFull" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Groupedbar</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>5</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groupedbar_full.ui</value>
           </prop>
           <prop oor:name="Toolbars">
             <value>
@@ -237,7 +479,7 @@
       <node oor:name="Modes">
         <node oor:name="Default" oor:op="replace">
           <prop oor:name="Label">
-            <value xml:lang="en-US">Default</value>
+            <value xml:lang="en-US">Standard Toolbar</value>
           </prop>
           <prop oor:name="CommandArg">
             <value>Default</value>
@@ -289,9 +531,40 @@
             <value>Arrow</value>
           </prop>
         </node>
-        <node oor:name="Notebookbar" oor:op="replace">
+        <node oor:name="ContextualGroups" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Contextual groups</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>2</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groups.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+          <prop oor:name="HasMenubar">
+            <value>true</value>
+          </prop>
+        </node>
+        <node oor:name="Tabbed" oor:op="replace">
           <prop oor:name="Label">
-            <value xml:lang="en-US">Notebookbar</value>
+            <value xml:lang="en-US">Tabbed</value>
           </prop>
           <prop oor:name="HasNotebookbar">
             <value>true</value>
@@ -303,10 +576,165 @@
             <value>3</value>
           </prop>
           <prop oor:name="CommandArg">
-            <value>Notebookbar</value>
+            <value>notebookbar.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="GroupedbarCompact" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Groupedbar Compact</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>5</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groupedbar_compact.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+        <node oor:name="GroupedbarFull" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Groupedbar</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>true</value>
+          </prop>
+          <prop oor:name="IsExperimental">
+            <value>true</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>4</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>notebookbar_groupedbar_full.ui</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+      </node>
+    </node>
+    <node oor:name="Draw" oor:op="replace">
+      <prop oor:name="Active">
+        <value>Default</value>
+      </prop>
+      <node oor:name="Modes">
+        <node oor:name="Default" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Standard Toolbar</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>Default</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>0</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>false</value>
           </prop>
           <prop oor:name="Toolbars">
             <value>
+              <it>private:resource/toolbar/standardbar</it>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+      </node>
+    </node>
+    <node oor:name="Formula" oor:op="replace">
+      <prop oor:name="Active">
+        <value>Default</value>
+      </prop>
+      <node oor:name="Modes">
+        <node oor:name="Default" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Standard Toolbar</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>Default</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>0</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value>false</value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+              <it>private:resource/toolbar/standardbar</it>
+            </value>
+          </prop>
+          <prop oor:name="UserToolbars">
+            <value>
+            </value>
+          </prop>
+          <prop oor:name="Sidebar">
+            <value>Arrow</value>
+          </prop>
+        </node>
+      </node>
+    </node>
+    <node oor:name="Base" oor:op="replace">
+      <prop oor:name="Active">
+        <value>Default</value>
+      </prop>
+      <node oor:name="Modes">
+        <node oor:name="Default" oor:op="replace">
+          <prop oor:name="Label">
+            <value xml:lang="en-US">Standard Toolbar</value>
+          </prop>
+          <prop oor:name="CommandArg">
+            <value>Default</value>
+          </prop>
+          <prop oor:name="MenuPosition">
+            <value>0</value>
+          </prop>
+          <prop oor:name="HasNotebookbar">
+            <value> false </value>
+          </prop>
+          <prop oor:name="Toolbars">
+            <value>
+              <it>private:resource/toolbar/standardbar</it>
             </value>
           </prop>
           <prop oor:name="UserToolbars">
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Notebookbar.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Notebookbar.xcs
deleted file mode 100644
index 658df995b3de..000000000000
--- a/officecfg/registry/schema/org/openoffice/Office/UI/Notebookbar.xcs
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- -->
-<!DOCTYPE oor:component-schema SYSTEM "../../../../../component-schema.dtd">
-<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="Notebookbar" oor:package="org.openoffice.Office.UI" xml:lang="en-US">
-  <info>
-    <desc>Contains information about Notebookbar.</desc>
-  </info>
-  <templates>
-    <group oor:name="Implementation">
-      <info>
-        <desc>The implementation description container.</desc>
-      </info>
-      <prop oor:name="Label" oor:type="xs:string" oor:nillable="false" oor:localized="true">
-        <info>
-          <desc>The implementation name.</desc>
-       </info>
-      </prop>
-      <prop oor:name="File" oor:type="xs:string" oor:nillable="false">
-        <info>
-          <desc>The .ui file name.</desc>
-        </info>
-      </prop>
-      <prop oor:name="HasMenubar" oor:type="xs:boolean" oor:nillable="false">
-        <info>
-          <desc>Determines if menubar is visible.</desc>
-        </info>
-      </prop>
-    </group>
-    <group oor:name="Application">
-      <info>
-        <desc>Describes notebookbar settings for one application.</desc>
-      </info>
-      <set oor:name="Implementations" oor:node-type="Implementation">
-        <info>
-          <desc>List of implementations.</desc>
-        </info>
-      </set>
-    </group>
-  </templates>
-  <component>
-    <prop oor:name="ActiveWriter" oor:type="xs:string" oor:nillable="false">
-      <info>
-        <desc>Contains name of currently used implementation in the Writer module.</desc>
-      </info>
-    </prop>
-    <prop oor:name="ActiveCalc" oor:type="xs:string" oor:nillable="false">
-      <info>
-        <desc>Contains name of currently used implementation in the Calc module.</desc>
-      </info>
-    </prop>
-    <prop oor:name="ActiveImpress" oor:type="xs:string" oor:nillable="false">
-      <info>
-        <desc>Contains name of currently used implementation in the Impress module.</desc>
-      </info>
-    </prop>
-    <set oor:name="Applications" oor:node-type="Application">
-      <info>
-        <desc>List of implementations.</desc>
-      </info>
-    </set>
-  </component>
-</oor:component-schema>
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/ToolbarMode.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/ToolbarMode.xcs
index 5d0f418abd2a..d641e80afb5e 100644
--- a/officecfg/registry/schema/org/openoffice/Office/UI/ToolbarMode.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/UI/ToolbarMode.xcs
@@ -74,6 +74,12 @@
           </desc>
         </info>
       </prop>
+      <prop oor:name="HasMenubar" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>Determines if menubar is visible.</desc>
+        </info>
+        <value>false</value>
+      </prop>
     </group>
     <group oor:name="Application">
       <info>
@@ -92,6 +98,21 @@
     </group>
   </templates>
   <component>
+    <prop oor:name="ActiveWriter" oor:type="xs:string" oor:nillable="false">
+      <info>
+        <desc>Contains name of currently used implementation in the Writer module.</desc>
+      </info>
+    </prop>
+    <prop oor:name="ActiveCalc" oor:type="xs:string" oor:nillable="false">
+      <info>
+        <desc>Contains name of currently used implementation in the Calc module.</desc>
+      </info>
+    </prop>
+    <prop oor:name="ActiveImpress" oor:type="xs:string" oor:nillable="false">
+      <info>
+        <desc>Contains name of currently used implementation in the Impress module.</desc>
+      </info>
+    </prop>
     <set oor:name="Applications" oor:node-type="Application">
       <info>
         <desc>Contains list of toolbar mode settings for each application.</desc>
diff --git a/postprocess/CustomTarget_registry.mk b/postprocess/CustomTarget_registry.mk
index 177558a7c9e4..f89b0b0bd96c 100644
--- a/postprocess/CustomTarget_registry.mk
+++ b/postprocess/CustomTarget_registry.mk
@@ -182,7 +182,6 @@ postprocess_FILES_main := \
 	$(postprocess_XCS)/Office/UI/GenericCategories.xcs \
 	$(postprocess_XCS)/Office/UI/GenericCommands.xcs \
 	$(postprocess_XCS)/Office/UI/GlobalSettings.xcs \
-	$(postprocess_XCS)/Office/UI/Notebookbar.xcs \
 	$(postprocess_XCS)/Office/UI/Sidebar.xcs \
 	$(postprocess_XCS)/Office/UI/StartModuleCommands.xcs \
 	$(postprocess_XCS)/Office/UI/StartModuleWindowState.xcs \
@@ -247,7 +246,6 @@ postprocess_FILES_main := \
 	$(postprocess_XCU)/Office/UI/Factories.xcu \
 	$(postprocess_XCU)/Office/UI/GenericCategories.xcu \
 	$(postprocess_XCU)/Office/UI/GenericCommands.xcu \
-	$(postprocess_XCU)/Office/UI/Notebookbar.xcu \
 	$(postprocess_XCU)/Office/UI/Sidebar.xcu \
 	$(postprocess_XCU)/Office/UI/StartModuleWindowState.xcu \
 	$(postprocess_XCU)/Office/UI/ToolbarMode.xcu \
diff --git a/sc/uiconfig/scalc/menubar/menubar.xml b/sc/uiconfig/scalc/menubar/menubar.xml
index b9a909c2976b..2c3b1d26df2e 100644
--- a/sc/uiconfig/scalc/menubar/menubar.xml
+++ b/sc/uiconfig/scalc/menubar/menubar.xml
@@ -143,7 +143,6 @@
             <menu:menuseparator/>
             <menu:menuitem menu:id=".uno:ToolbarMode"/>
             <menu:menuitem menu:id=".uno:AvailableToolbars"/>
-            <menu:menuitem menu:id=".uno:Notebookbar"/>
             <menu:menuitem menu:id=".uno:InputLineVisible"/>
             <menu:menuitem menu:id=".uno:StatusBarVisible"/>
             <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
diff --git a/sd/uiconfig/sdraw/menubar/menubar.xml b/sd/uiconfig/sdraw/menubar/menubar.xml
index a087af9923a1..f72ab87a2aca 100644
--- a/sd/uiconfig/sdraw/menubar/menubar.xml
+++ b/sd/uiconfig/sdraw/menubar/menubar.xml
@@ -102,6 +102,7 @@
       <menu:menuitem menu:id=".uno:PageMode" menu:style="radio"/>
       <menu:menuitem menu:id=".uno:MasterPage" menu:style="radio"/>
       <menu:menuseparator/>
+      <menu:menuitem menu:id=".uno:ToolbarMode"/>
       <menu:menuitem menu:id=".uno:AvailableToolbars"/>
       <menu:menuitem menu:id=".uno:StatusBarVisible"/>
       <menu:menuitem menu:id=".uno:ShowRuler"/>
diff --git a/sd/uiconfig/simpress/menubar/menubar.xml b/sd/uiconfig/simpress/menubar/menubar.xml
index d1e1c34a484e..227045f76e9d 100644
--- a/sd/uiconfig/simpress/menubar/menubar.xml
+++ b/sd/uiconfig/simpress/menubar/menubar.xml
@@ -114,7 +114,6 @@
             <menu:menuseparator/>
             <menu:menuitem menu:id=".uno:ToolbarMode"/>
             <menu:menuitem menu:id=".uno:AvailableToolbars"/>
-            <menu:menuitem menu:id=".uno:Notebookbar"/>
             <menu:menuitem menu:id=".uno:StatusBarVisible"/>
             <menu:menuitem menu:id=".uno:ShowRuler"/>
             <menu:menuitem menu:id=".uno:LeftPaneImpress"/>
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index d73bc3a61da9..4bdb5ed30c7e 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -165,6 +165,12 @@ namespace
             case vcl::EnumContext::Application::Draw:
                 return OUString( "Draw" );
                 break;
+            case vcl::EnumContext::Application::Formula:
+                return OUString( "Formula" );
+                break;
+            case vcl::EnumContext::Application::Base:
+                return OUString( "Base" );
+                break;
             default:
                 return OUString();
                 break;
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index 450c3c19b915..a341bf3e8858 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -22,7 +22,7 @@
 #include <com/sun/star/ui/XContextChangeEventMultiplexer.hpp>
 #include <com/sun/star/util/URLTransformer.hpp>
 #include <com/sun/star/frame/XLayoutManager.hpp>
-#include <officecfg/Office/UI/Notebookbar.hxx>
+#include <officecfg/Office/UI/ToolbarMode.hxx>
 #include <com/sun/star/frame/XModuleManager.hpp>
 #include <com/sun/star/frame/ModuleManager.hpp>
 #include <unotools/confignode.hxx>
@@ -82,13 +82,13 @@ static void lcl_setNotebookbarFileName( vcl::EnumContext::Application eApp, cons
     switch ( eApp )
     {
         case vcl::EnumContext::Application::Writer:
-            officecfg::Office::UI::Notebookbar::ActiveWriter::set( sFileName, aBatch );
+            officecfg::Office::UI::ToolbarMode::ActiveWriter::set( sFileName, aBatch );
             break;
         case vcl::EnumContext::Application::Calc:
-            officecfg::Office::UI::Notebookbar::ActiveCalc::set( sFileName, aBatch );
+            officecfg::Office::UI::ToolbarMode::ActiveCalc::set( sFileName, aBatch );
             break;
         case vcl::EnumContext::Application::Impress:
-            officecfg::Office::UI::Notebookbar::ActiveImpress::set( sFileName, aBatch );
+            officecfg::Office::UI::ToolbarMode::ActiveImpress::set( sFileName, aBatch );
             break;
         default:
             break;
@@ -101,13 +101,13 @@ static OUString lcl_getNotebookbarFileName( vcl::EnumContext::Application eApp )
     switch ( eApp )
     {
         case vcl::EnumContext::Application::Writer:
-            return officecfg::Office::UI::Notebookbar::ActiveWriter::get();
+            return officecfg::Office::UI::ToolbarMode::ActiveWriter::get();
             break;
         case vcl::EnumContext::Application::Calc:
-            return officecfg::Office::UI::Notebookbar::ActiveCalc::get();
+            return officecfg::Office::UI::ToolbarMode::ActiveCalc::get();
             break;
         case vcl::EnumContext::Application::Impress:
-            return officecfg::Office::UI::Notebookbar::ActiveImpress::get();
+            return officecfg::Office::UI::ToolbarMode::ActiveImpress::get();
             break;
         default:
             break;
@@ -118,7 +118,7 @@ static OUString lcl_getNotebookbarFileName( vcl::EnumContext::Application eApp )
 static utl::OConfigurationTreeRoot lcl_getCurrentImplConfigRoot()
 {
     return utl::OConfigurationTreeRoot(::comphelper::getProcessComponentContext(),
-                                       "org.openoffice.Office.UI.Notebookbar/",
+                                       "org.openoffice.Office.UI.ToolbarMode/",
                                        true);
 }
 
@@ -133,7 +133,7 @@ static const utl::OConfigurationNode lcl_getCurrentImplConfigNode(const Referenc
     vcl::EnumContext::Application eApp = vcl::EnumContext::GetApplicationEnum( xModuleManager->identify( xFrame ) );
     OUString aActive = lcl_getNotebookbarFileName( eApp );
 
-    const utl::OConfigurationNode aImplsNode = rNotebookbarNode.openNode("Applications/" + lcl_getAppName( eApp) + "/Implementations");
+    const utl::OConfigurationNode aImplsNode = rNotebookbarNode.openNode("Applications/" + lcl_getAppName( eApp) + "/Modes");
     const Sequence<OUString> aModeNodeNames( aImplsNode.getNodeNames() );
     const sal_Int32 nCount( aModeNodeNames.getLength() );
 
@@ -143,7 +143,7 @@ static const utl::OConfigurationNode lcl_getCurrentImplConfigNode(const Referenc
         if ( !aImplNode.isValid() )
             continue;
 
-        OUString aCommandArg = comphelper::getString( aImplNode.getNodeValue( "File" ) );
+        OUString aCommandArg = comphelper::getString( aImplNode.getNodeValue( "CommandArg" ) );
 
         if ( aCommandArg == aActive )
         {
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index 407db28b157d..50e828ba480e 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -5282,7 +5282,6 @@ framework/inc/uielement/menubarmanager.hxx
 framework/inc/uielement/menubarmerger.hxx
 framework/inc/uielement/menubarwrapper.hxx
 framework/inc/uielement/newmenucontroller.hxx
-framework/inc/uielement/notebookbarmenucontroller.hxx
 framework/inc/uielement/progressbarwrapper.hxx
 framework/inc/uielement/rootitemcontainer.hxx
 framework/inc/uielement/spinfieldtoolbarcontroller.hxx
@@ -5478,7 +5477,6 @@ framework/source/uielement/menubarmanager.cxx
 framework/source/uielement/menubarmerger.cxx
 framework/source/uielement/menubarwrapper.cxx
 framework/source/uielement/newmenucontroller.cxx
-framework/source/uielement/notebookbarmenucontroller.cxx
 framework/source/uielement/objectmenucontroller.cxx
 framework/source/uielement/popuptoolbarcontroller.cxx
 framework/source/uielement/progressbarwrapper.cxx
diff --git a/starmath/uiconfig/smath/menubar/menubar.xml b/starmath/uiconfig/smath/menubar/menubar.xml
index 9367961a692e..d88de2596201 100644
--- a/starmath/uiconfig/smath/menubar/menubar.xml
+++ b/starmath/uiconfig/smath/menubar/menubar.xml
@@ -77,6 +77,7 @@
       <menu:menuitem menu:id=".uno:Draw"/>
       <menu:menuitem menu:id=".uno:RedrawAutomatic"/>
       <menu:menuseparator/>
+      <menu:menuitem menu:id=".uno:ToolbarMode"/>
       <menu:menuitem menu:id=".uno:AvailableToolbars"/>
       <menu:menuitem menu:id=".uno:StatusBarVisible"/>
       <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xml
index ab133daf836c..9d52c0358415 100644
--- a/sw/uiconfig/sglobal/menubar/menubar.xml
+++ b/sw/uiconfig/sglobal/menubar/menubar.xml
@@ -170,7 +170,6 @@
       <menu:menuseparator/>
       <menu:menuitem menu:id=".uno:ToolbarMode"/>
       <menu:menuitem menu:id=".uno:AvailableToolbars"/>
-      <menu:menuitem menu:id=".uno:Notebookbar"/>
       <menu:menuitem menu:id=".uno:StatusBarVisible"/>
       <menu:menu menu:id=".uno:RulerMenu">
         <menu:menupopup>
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index cfcc9cd1b908..2f35c433ec4e 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -170,7 +170,6 @@
       <menu:menuseparator/>
       <menu:menuitem menu:id=".uno:ToolbarMode"/>
       <menu:menuitem menu:id=".uno:AvailableToolbars"/>
-      <menu:menuitem menu:id=".uno:Notebookbar"/>
       <menu:menuitem menu:id=".uno:StatusBarVisible"/>
       <menu:menu menu:id=".uno:RulerMenu">
         <menu:menupopup>
diff --git a/vcl/source/window/EnumContext.cxx b/vcl/source/window/EnumContext.cxx
index 3e3431412e2d..e6a1543ad6d9 100644
--- a/vcl/source/window/EnumContext.cxx
+++ b/vcl/source/window/EnumContext.cxx
@@ -124,7 +124,8 @@ void EnumContext::ProvideApplicationContainers()
     AddEntry("com.sun.star.chart2.ChartDocument", EnumContext::Application::Chart);
     AddEntry("com.sun.star.drawing.DrawingDocument", EnumContext::Application::Draw);
     AddEntry("com.sun.star.presentation.PresentationDocument", EnumContext::Application::Impress);
-
+    AddEntry("com.sun.star.formula.FormulaProperties", EnumContext::Application::Formula);
+    AddEntry("com.sun.star.sdb.OfficeDatabaseDocument", EnumContext::Application::Base);
     AddEntry("any", EnumContext::Application::Any);
     AddEntry("none", EnumContext::Application::NONE);
 


More information about the Libreoffice-commits mailing list