summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/source/uielement/menubarmanager.cxx5
-rw-r--r--framework/source/uielement/menubarwrapper.cxx4
-rw-r--r--vcl/inc/vcl/menu.hxx4
-rw-r--r--vcl/source/window/menu.cxx33
4 files changed, 45 insertions, 1 deletions
diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index 5afca6a5d874..66a34671fae3 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -1047,6 +1047,9 @@ IMPL_LINK( MenuBarManager, Deactivate, AbstractMenu *, pMenu )
}
}
+// pMenu->Freeze();
+ m_pVCLMenu->Freeze();
+
return 1;
}
@@ -1726,7 +1729,7 @@ void MenuBarManager::FillMenu(
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::FillMenu" );
// Fill menu bar with container contents
- for ( sal_Int32 n = 0; n < rItemContainer->getCount(); n++ )
+ for ( sal_Int32 n = 0; n < rItemContainer->getCount(); n++ )
{
Sequence< PropertyValue > aProp;
rtl::OUString aCommandURL;
diff --git a/framework/source/uielement/menubarwrapper.cxx b/framework/source/uielement/menubarwrapper.cxx
index cc7032a37bec..302ab7200412 100644
--- a/framework/source/uielement/menubarwrapper.cxx
+++ b/framework/source/uielement/menubarwrapper.cxx
@@ -167,6 +167,7 @@ void SAL_CALL MenuBarWrapper::initialize( const Sequence< Any >& aArguments ) th
// Fill menubar with container contents
sal_uInt16 nId = 1;
MenuBarManager::FillMenuWithConfiguration( nId, pVCLMenuBar, aModuleIdentifier, m_xConfigData, xTrans );
+// pVCLMenuBar->Freeze();
}
}
catch ( const NoSuchElementException& )
@@ -208,6 +209,9 @@ void SAL_CALL MenuBarWrapper::initialize( const Sequence< Any >& aArguments ) th
// Don't use this toolkit menu bar or one of its functions. It is only used as a data container!
pAwtMenuBar = new VCLXMenuBar( pVCLMenuBar );
m_xMenuBar = Reference< XMenuBar >( static_cast< OWeakObject *>( pAwtMenuBar ), UNO_QUERY );
+
+ // Freeze the menubar
+ pVCLMenuBar->Freeze();
}
}
}
diff --git a/vcl/inc/vcl/menu.hxx b/vcl/inc/vcl/menu.hxx
index 6a7558e6f9b7..187019d69f09 100644
--- a/vcl/inc/vcl/menu.hxx
+++ b/vcl/inc/vcl/menu.hxx
@@ -188,6 +188,8 @@ public:
// Returns the system's menu handle if native menus are supported
// pData must point to a SystemMenuData structure
virtual sal_Bool GetSystemMenuData( SystemMenuData* pData ) const = 0;
+
+ virtual void Freeze(void) = 0;
};
// --------
@@ -446,6 +448,8 @@ public:
void HighlightItem( sal_uInt16 nItemPos );
void DeHighlight() { HighlightItem( 0xFFFF ); } // MENUITEMPOS_INVALID
+
+ void Freeze();
};
// -----------
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index c272df3fa104..a759dfe03727 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -6039,4 +6039,37 @@ ImplMenuDelData::~ImplMenuDelData()
const_cast< Menu* >( mpMenu )->ImplRemoveDel( *this );
}
+#include <iostream>
+using namespace std;
+
+void printMenu( AbstractMenu* pMenu ) {
+ if ( pMenu ) {
+ sal_uInt16 itemCount = pMenu->GetItemCount();
+ MenuItemList *items = ((Menu*)pMenu)->GetItemList();
+
+ for (int i=0; i < itemCount; i++) {
+ MenuItemData *itemData = items->GetDataFromPos(i);
+ sal_uInt16 itemId = pMenu->GetItemId(i);
+
+ if (itemData->eType == MENUITEM_SEPARATOR) {
+ cout << "---------------" << endl;
+ } else {
+ rtl::OUString itemText = itemData->aText;
+ rtl::OUString cmdString = itemData->aCommandStr;
+ cout << "Item ID: " << itemId << " Text: " << itemText << " CMD: " << cmdString << endl;
+
+ if (itemData->pSubMenu) {
+ cout << ">> SUBMENU <<" << endl;
+ printMenu( itemData->pSubMenu );
+ }
+ }
+ }
+ }
+}
+
+void Menu::Freeze() {
+ printMenu( this );
+ cout << "============================================================" << endl;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */