diff -ur ooo_SRC680_m179_src.orig/vcl/aqua/source/window/salmenu.cxx ooo_SRC680_m179_src/vcl/aqua/source/window/salmenu.cxx --- ooo_SRC680_m179_src.orig/vcl/aqua/source/window/salmenu.cxx 2006-07-28 19:21:42.000000000 +0200 +++ ooo_SRC680_m179_src/vcl/aqua/source/window/salmenu.cxx 2006-07-28 20:38:59.000000000 +0200 @@ -75,7 +75,6 @@ void AquaSalInstance::DestroyMenu( SalMenu* pSalMenu ) { - /* PJ: FIXME: delete mrMenuRef */ delete pSalMenu; } @@ -126,6 +125,12 @@ AquaSalMenu::~AquaSalMenu() { + fprintf(stderr, "PJ: ~AquaSalMenu called for %p\n", this); + + if (this->mrMenuRef) { + fprintf(stderr, "PJ: DisposeMenu (%p)\n", this->mrMenuRef); + DisposeMenu(this->mrMenuRef); + } } BOOL AquaSalMenu::VisibleMenuBar() @@ -172,6 +177,13 @@ void AquaSalMenu::RemoveItem( unsigned nPos ) { + fprintf(stderr, "PJ: RemoveItem (nPos = %d)\n", nPos); + + MenuRef menu = this->mrMenuRef; + + if (menu) + // nPos is 0 based, MenuItemIndex is 1 based + DeleteMenuItem (menu, nPos+1); } void AquaSalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) diff -ur ooo_SRC680_m179_src.orig/vcl/workben/svdem.cxx ooo_SRC680_m179_src/vcl/workben/svdem.cxx --- ooo_SRC680_m179_src.orig/vcl/workben/svdem.cxx 2006-07-28 17:06:14.000000000 +0200 +++ ooo_SRC680_m179_src/vcl/workben/svdem.cxx 2006-07-28 20:24:03.000000000 +0200 @@ -132,8 +132,10 @@ if ( nItemId == 1) fprintf(stderr, "PJ: Search selected\n"); - else if ( nItemId == 2) - fprintf(stderr, "PJ: Replace selected\n"); + else if ( nItemId == 2) { + fprintf(stderr, "PJ: 'Remove itself from menu' selected\n"); + pMenu->RemoveItem (1); + } } // ----------------------------------------------------------------------- @@ -165,7 +167,7 @@ if ( nItemId == 1) fprintf(stderr, "PJ: Search highlighted\n"); else if ( nItemId == 2) - fprintf(stderr, "PJ: Replace highlighted\n"); + fprintf(stderr, "PJ: 'Remove itself from menu' highlighted - will remove itself from the menu!\n"); } // ----------------------------------------------------------------------- @@ -241,7 +243,7 @@ PJ_DEBUG("14"); - aMainWin.aEditMenu.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Replace" ) )); + aMainWin.aEditMenu.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Remove itself from menu" ) )); PJ_DEBUG("15");