diff -urN ooo_SRC680_m177_src.orig/vcl/aqua/inc/aquavclevents.hxx ooo_SRC680_m177_src/vcl/aqua/inc/aquavclevents.hxx
--- ooo_SRC680_m177_src.orig/vcl/aqua/inc/aquavclevents.hxx	2006-07-22 13:37:51.000000000 +0200
+++ ooo_SRC680_m177_src/vcl/aqua/inc/aquavclevents.hxx	2006-07-22 17:17:42.000000000 +0200
@@ -35,6 +35,10 @@
 const EventTypeSpec cWindowResizeStarted = { kEventClassWindow, kEventWindowResizeStarted };
 const EventTypeSpec cWindowResizeCompleted = { kEventClassWindow, kEventWindowResizeCompleted };
 
-const EventTypeSpec cCommandProcessEvent = { kEventClassCommand, kEventCommandProcess };
+/* Events for native menus */
+const EventTypeSpec cCommandProcessEvent	= { kEventClassCommand,	kEventCommandProcess };
+const EventTypeSpec cMenuPopulateEvent		= { kEventClassMenu,	kEventMenuPopulate };
+const EventTypeSpec cMenuClosedEvent		= { kEventClassMenu,	kEventMenuClosed };
+const EventTypeSpec cMenuTargetItemEvent	= { kEventClassMenu,	kEventMenuTargetItem };
 
 #endif // INCLUDED_AQUAVCLEVENTS_HXX
diff -urN ooo_SRC680_m177_src.orig/vcl/aqua/source/window/salframe.cxx ooo_SRC680_m177_src/vcl/aqua/source/window/salframe.cxx
--- ooo_SRC680_m177_src.orig/vcl/aqua/source/window/salframe.cxx	2006-07-22 13:37:51.000000000 +0200
+++ ooo_SRC680_m177_src/vcl/aqua/source/window/salframe.cxx	2006-07-22 17:22:19.000000000 +0200
@@ -686,15 +686,18 @@
     ImplSalYieldMutexAcquire();
     AquaSalFrame* pSalFrame = reinterpret_cast<AquaSalFrame*>(inUserData);
 
-    fprintf(stderr, "PJ: CommandProcess EVENT!\n");
-
     HICommand commandStruct;
 
     GetEventParameter (inEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &commandStruct);
 
     // If the CommandProcess event is from menu, print its MenuRef and itemidex
-    if ( commandStruct.attributes & kHICommandFromMenu )
-      fprintf(stderr, "PJ: Menu item selected, MenuRef = %p, (%d. item)\n", commandStruct.menu.menuRef, commandStruct.menu.menuItemIndex);
+    if ( commandStruct.attributes & kHICommandFromMenu ) {
+
+      fprintf(stderr, "PJ: CommandProcess, SALEVENT_MENUCOMMAND event!\n");
+
+      fprintf(stderr, "PJ: Menu item selected, MenuRef = %p, (%d. item)\n",
+	      commandStruct.menu.menuRef, commandStruct.menu.menuItemIndex);
+    }
 
     //    pSalFrame->CallCallback(SALEVENT_CLOSE, 0);
     ImplSalYieldMutexRelease();
@@ -702,6 +705,45 @@
     return noErr;
 }
 
+OSStatus HandleMenuPopulateEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void * inUserData)
+{
+
+    ImplSalYieldMutexAcquire();
+    AquaSalFrame* pSalFrame = reinterpret_cast<AquaSalFrame*>(inUserData);
+
+    fprintf(stderr, "PJ: MenuPopulate, SALEVENT_MENUACTIVATE event!\n");
+
+    ImplSalYieldMutexRelease();
+
+    return noErr;
+}
+
+OSStatus HandleMenuClosedEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void * inUserData)
+{
+
+    ImplSalYieldMutexAcquire();
+    AquaSalFrame* pSalFrame = reinterpret_cast<AquaSalFrame*>(inUserData);
+
+    fprintf(stderr, "PJ: MenuClosed, SALEVENT_MENUDEACTIVATE event!\n");
+
+    ImplSalYieldMutexRelease();
+
+    return noErr;
+}
+
+OSStatus HandleMenuTargetItemEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void * inUserData)
+{
+
+    ImplSalYieldMutexAcquire();
+    AquaSalFrame* pSalFrame = reinterpret_cast<AquaSalFrame*>(inUserData);
+
+    fprintf(stderr, "PJ: MenuTargetItem, SALEVENT_MENUHIGHLIGHT event!\n");
+
+    ImplSalYieldMutexRelease();
+
+    return noErr;
+}
+
 OSStatus HandleWindowCloseEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void * inUserData)
 {
     BOOST_ASSERT(GetEventClass(inEvent) == kEventClassWindow && GetEventKind(inEvent) == kEventWindowClose && "Only WindowClose event expected");
@@ -1118,7 +1160,12 @@
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleWindowResizeStarted), 1, &cWindowResizeStarted);
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleWindowResizeCompleted), 1, &cWindowResizeCompleted);
 
+    /* Menu event handlers*/
+
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleCommandProcessEvent), 1, &cCommandProcessEvent);
+    InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMenuPopulateEvent), 1, &cMenuPopulateEvent);
+    InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMenuClosedEvent), 1, &cMenuClosedEvent);
+    InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMenuTargetItemEvent), 1, &cMenuTargetItemEvent);
 }
 
 OSStatus AquaSalFrame::InstallAndRegisterEventHandler(EventHandlerUPP upp, size_t nEvents, const EventTypeSpec* eventSpec)
