framework/inc/classes/resource.hxx            |    9 +++---
 framework/inc/strings.hrc                     |    1 
 framework/inc/uielement/toolbarmanager.hxx    |    1 
 framework/source/uielement/toolbarmanager.cxx |   36 +++++++++++++++++++++++---
 4 files changed, 40 insertions(+), 7 deletions(-)

New commits:
commit 0fb4f2107d08febd4925dce6d96b41da9917e9ae
Author:     Jim Raykowski <rayk...@gmail..com>
AuthorDate: Sat Dec 21 14:54:28 2019 -0900
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Feb 24 08:00:46 2020 +0100

    tdf#130163 Show undock or dock menu item in toolbar menu
    
    This patch removes toolbar menu item 'Dock Toolbar' enable state and
    shows 'Undock Toolbar' menu item when toolbar is docked and 'Dock
    Toolbar' menu item when toolbar is undocked. It also sets the
    accelerator key displayed for these items to Shift+Ctrl+F10
    
    Change-Id: I0e4673529438c42452026602785857066ea7874a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85673
    Tested-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/framework/inc/classes/resource.hxx 
b/framework/inc/classes/resource.hxx
index a9f98e607baa..04f00677c69d 100644
--- a/framework/inc/classes/resource.hxx
+++ b/framework/inc/classes/resource.hxx
@@ -22,10 +22,11 @@
 
 #define MENUITEM_TOOLBAR_VISIBLEBUTTON          1
 #define MENUITEM_TOOLBAR_CUSTOMIZETOOLBAR       2
-#define MENUITEM_TOOLBAR_DOCKTOOLBAR            3
-#define MENUITEM_TOOLBAR_DOCKALLTOOLBAR         4
-#define MENUITEM_TOOLBAR_LOCKTOOLBARPOSITION    5
-#define MENUITEM_TOOLBAR_CLOSE                  6
+#define MENUITEM_TOOLBAR_UNDOCKTOOLBAR          3
+#define MENUITEM_TOOLBAR_DOCKTOOLBAR            4
+#define MENUITEM_TOOLBAR_DOCKALLTOOLBAR         5
+#define MENUITEM_TOOLBAR_LOCKTOOLBARPOSITION    6
+#define MENUITEM_TOOLBAR_CLOSE                  7
 
 #endif
 
diff --git a/framework/inc/strings.hrc b/framework/inc/strings.hrc
index ef3ad73c1956..d3f28fcc9e21 100644
--- a/framework/inc/strings.hrc
+++ b/framework/inc/strings.hrc
@@ -27,6 +27,7 @@
 #define STR_CLOSEDOC_ANDRETURN                      
NC_("STR_CLOSEDOC_ANDRETURN", "~Close & Return to " )
 #define STR_TOOLBAR_VISIBLE_BUTTONS                 
NC_("STR_TOOLBAR_VISIBLE_BUTTONS", "Visible ~Buttons")
 #define STR_TOOLBAR_CUSTOMIZE_TOOLBAR               
NC_("STR_TOOLBAR_CUSTOMIZE_TOOLBAR", "~Customize Toolbar...")
+#define STR_TOOLBAR_UNDOCK_TOOLBAR                  
NC_("STR_TOOLBAR_UNDOCK_TOOLBAR", "U~ndock Toolbar" )
 #define STR_TOOLBAR_DOCK_TOOLBAR                    
NC_("STR_TOOLBAR_DOCK_TOOLBAR", "~Dock Toolbar" )
 #define STR_TOOLBAR_DOCK_ALL_TOOLBARS               
NC_("STR_TOOLBAR_DOCK_ALL_TOOLBARS", "Dock ~All Toolbars" )
 #define STR_TOOLBAR_LOCK_TOOLBAR                    
NC_("STR_TOOLBAR_LOCK_TOOLBAR", "~Lock Toolbar Position" )
diff --git a/framework/inc/uielement/toolbarmanager.hxx 
b/framework/inc/uielement/toolbarmanager.hxx
index f43a3511b85d..8f3eb4c2b2eb 100644
--- a/framework/inc/uielement/toolbarmanager.hxx
+++ b/framework/inc/uielement/toolbarmanager.hxx
@@ -94,6 +94,7 @@ class ToolBarManager : public ToolbarManager_Base
         enum ExecuteCommand
         {
             EXEC_CMD_CLOSETOOLBAR,
+            EXEC_CMD_UNDOCKTOOLBAR,
             EXEC_CMD_DOCKTOOLBAR,
             EXEC_CMD_DOCKALLTOOLBARS
         };
diff --git a/framework/source/uielement/toolbarmanager.cxx 
b/framework/source/uielement/toolbarmanager.cxx
index 78a5c1198584..d224cfc2a955 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -1447,8 +1447,22 @@ void ToolBarManager::AddCustomizeMenuItems(ToolBox const 
* pToolBar)
         nGroupLen = pMenu->GetItemCount();
     }
 
-    if (MenuItemAllowed(MENUITEM_TOOLBAR_DOCKTOOLBAR))
-        pMenu->InsertItem(MENUITEM_TOOLBAR_DOCKTOOLBAR, 
FwkResId(STR_TOOLBAR_DOCK_TOOLBAR));
+    if (pToolBar->IsFloatingMode())
+    {
+        if (MenuItemAllowed(MENUITEM_TOOLBAR_DOCKTOOLBAR))
+        {
+            pMenu->InsertItem(MENUITEM_TOOLBAR_DOCKTOOLBAR, 
FwkResId(STR_TOOLBAR_DOCK_TOOLBAR));
+            pMenu->SetAccelKey(MENUITEM_TOOLBAR_DOCKTOOLBAR, 
vcl::KeyCode(KEY_F10, true, true, false, false));
+        }
+    }
+    else
+    {
+        if (MenuItemAllowed(MENUITEM_TOOLBAR_UNDOCKTOOLBAR))
+        {
+            pMenu->InsertItem(MENUITEM_TOOLBAR_UNDOCKTOOLBAR, 
FwkResId(STR_TOOLBAR_UNDOCK_TOOLBAR));
+            pMenu->SetAccelKey(MENUITEM_TOOLBAR_UNDOCKTOOLBAR, 
vcl::KeyCode(KEY_F10, true, true, false, false));
+        }
+    }
 
     if (MenuItemAllowed(MENUITEM_TOOLBAR_DOCKALLTOOLBAR))
         pMenu->InsertItem(MENUITEM_TOOLBAR_DOCKALLTOOLBAR, 
FwkResId(STR_TOOLBAR_DOCK_ALL_TOOLBARS));
@@ -1475,7 +1489,6 @@ void ToolBarManager::AddCustomizeMenuItems(ToolBox const 
* pToolBar)
 
         if ( !bIsFloating )
         {
-            pMenu->EnableItem(MENUITEM_TOOLBAR_DOCKTOOLBAR, false);
             pMenu->EnableItem(MENUITEM_TOOLBAR_DOCKALLTOOLBAR, false);
             Reference< XDockableWindow > xDockable( 
VCLUnoHelper::GetInterface( m_pToolBar ), UNO_QUERY );
             if( xDockable.is() )
@@ -1647,6 +1660,18 @@ IMPL_LINK( ToolBarManager, MenuSelect, Menu*, pMenu, 
bool )
                 break;
             }
 
+            case MENUITEM_TOOLBAR_UNDOCKTOOLBAR:
+            {
+                ExecuteInfo* pExecuteInfo = new ExecuteInfo;
+
+                pExecuteInfo->aToolbarResName = m_aResourceName;
+                pExecuteInfo->nCmd            = EXEC_CMD_UNDOCKTOOLBAR;
+                pExecuteInfo->xLayoutManager  = getLayoutManagerFromFrame( 
m_xFrame );
+
+                Application::PostUserEvent( LINK(nullptr, ToolBarManager, 
ExecuteHdl_Impl), pExecuteInfo );
+                break;
+            }
+
             case MENUITEM_TOOLBAR_DOCKTOOLBAR:
             {
                 ExecuteInfo* pExecuteInfo = new ExecuteInfo;
@@ -1883,6 +1908,11 @@ IMPL_STATIC_LINK( ToolBarManager, ExecuteHdl_Impl, 
void*, p, void )
             if ( pDockWin )
                 pDockWin->Close();
         }
+        else if (( pExecuteInfo->nCmd == EXEC_CMD_UNDOCKTOOLBAR ) &&
+                 ( pExecuteInfo->xLayoutManager.is() ))
+        {
+            pExecuteInfo->xLayoutManager->floatWindow( 
pExecuteInfo->aToolbarResName );
+        }
         else if (( pExecuteInfo->nCmd == EXEC_CMD_DOCKTOOLBAR ) &&
                  ( pExecuteInfo->xLayoutManager.is() ))
         {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to