summaryrefslogtreecommitdiff
path: root/framework/source/uielement/menubarmanager.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/source/uielement/menubarmanager.cxx')
-rw-r--r--framework/source/uielement/menubarmanager.cxx26
1 files changed, 22 insertions, 4 deletions
diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index 0b26f96829d2..fd42de48ae84 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -74,6 +74,7 @@
#include <com/sun/star/frame/XModuleManager.hpp>
#include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp>
#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp>
+#include <com/sun/star/ui/ItemStyle.hpp>
#include <com/sun/star/frame/status/Visibility.hpp>
//_________________________________________________________________________________________________________________
@@ -136,6 +137,7 @@ static const char ITEM_DESCRIPTOR_LABEL[] = "Label";
static const char ITEM_DESCRIPTOR_TYPE[] = "Type";
static const char ITEM_DESCRIPTOR_MODULEIDENTIFIER[] = "ModuleIdentifier";
static const char ITEM_DESCRIPTOR_DISPATCHPROVIDER[] = "DispatchProvider";
+static const char ITEM_DESCRIPTOR_STYLE[] = "Style";
const sal_Int32 LEN_DESCRIPTOR_COMMANDURL = 10;
const sal_Int32 LEN_DESCRIPTOR_HELPURL = 7;
@@ -144,6 +146,7 @@ const sal_Int32 LEN_DESCRIPTOR_LABEL = 5;
const sal_Int32 LEN_DESCRIPTOR_TYPE = 4;
const sal_Int32 LEN_DESCRIPTOR_MODULEIDENTIFIER = 16;
const sal_Int32 LEN_DESCRIPTOR_DISPATCHPROVIDER = 16;
+static const sal_Int32 ITEM_DESCRIPTOR_STYLE_LEN = 5;
const sal_uInt16 ADDONMENU_MERGE_ITEMID_START = 1500;
@@ -1327,6 +1330,11 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF
Reference< XDispatch > xDispatch;
Reference< XStatusListener > xStatusListener;
PopupMenu* pPopup = pMenu->GetPopupMenu( nItemId );
+ bool bItemShowMenuImages = m_bShowMenuImages;
+ MenuItemBits nBits = pMenu->GetItemBits( nItemId );
+ // overwrite the show icons on menu option?
+ if ( nBits )
+ bItemShowMenuImages = ( ( nBits & MIB_ICON ) == MIB_ICON );
if ( pPopup )
{
// Retrieve module identifier from Help Command entry
@@ -1422,7 +1430,7 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF
pSubMenuManager->m_aMenuItemCommand = ::rtl::OUString();
// Set image for the addon popup menu item
- if ( m_bShowMenuImages && !pPopup->GetItemImage( ITEMID_ADDONLIST ))
+ if ( bItemShowMenuImages && !pPopup->GetItemImage( ITEMID_ADDONLIST ))
{
Reference< XFrame > xTemp( rFrame );
Image aImage = GetImageFromURL( xTemp, aItemCommand, FALSE, m_bWasHiContrast );
@@ -1441,7 +1449,7 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF
}
else if ( pMenu->GetItemType( i ) != MENUITEM_SEPARATOR )
{
- if ( m_bShowMenuImages )
+ if ( bItemShowMenuImages )
{
if ( AddonMenuManager::IsAddonMenuId( nItemId ))
{
@@ -1752,7 +1760,7 @@ void MenuBarManager::FillMenu(
sal_uInt16 nType = 0;
Reference< XIndexAccess > xIndexContainer;
Reference< XDispatchProvider > xDispatchProvider( rDispatchProvider );
-
+ sal_Int16 nStyle = 0;
try
{
if ( rItemContainer->getByIndex( n ) >>= aProp )
@@ -1781,6 +1789,8 @@ void MenuBarManager::FillMenu(
else if ( aPropName.equalsAsciiL( ITEM_DESCRIPTOR_DISPATCHPROVIDER,
LEN_DESCRIPTOR_DISPATCHPROVIDER ))
aProp[i].Value >>= xDispatchProvider;
+ else if ( aProp[i].Name.equalsAsciiL( ITEM_DESCRIPTOR_STYLE, ITEM_DESCRIPTOR_STYLE_LEN ))
+ aProp[i].Value >>= nStyle;
}
if ( nType == ::com::sun::star::ui::ItemType::DEFAULT )
@@ -1791,7 +1801,15 @@ void MenuBarManager::FillMenu(
sal_Int32 nHelpId = aHelpURL.toInt32();
if ( nHelpId > 0 )
pMenu->SetHelpId( nId, (USHORT)nHelpId );
-
+ if ( nStyle )
+ {
+ MenuItemBits nBits = pMenu->GetItemBits( nId );
+ if ( nStyle & ::com::sun::star::ui::ItemStyle::ICON )
+ nBits |= MIB_ICON;
+ if ( nStyle & ::com::sun::star::ui::ItemStyle::TEXT )
+ nBits |= MIB_TEXT;
+ pMenu->SetItemBits( nId, nBits );
+ }
if ( xIndexContainer.is() )
{
PopupMenu* pNewPopupMenu = new PopupMenu;