diff --git a/mozilla/widget/macbuild/widget.xml b/mozilla/widget/macbuild/widget.xml index e02f9b91def..ad614d7c270 100644 --- a/mozilla/widget/macbuild/widget.xml +++ b/mozilla/widget/macbuild/widget.xml @@ -3261,6 +3261,16 @@ FrameworkPathfalse HostFlagsAll + + SearchPath + Path:MacOS Support:(Third Party Support):Carbonized Menu Sharing: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + SystemSearchPaths @@ -4444,6 +4454,13 @@ Library Debug + + Name + MenuSharing.c + MacOS + Text + Debug + @@ -4716,6 +4733,11 @@ WidgetSupportDebug.shlb MacOS + + Name + MenuSharing.c + MacOS + @@ -4800,6 +4822,16 @@ FrameworkPathfalse HostFlagsAll + + SearchPath + Path:MacOS Support:(Third Party Support):Carbonized Menu Sharing: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + SystemSearchPaths @@ -5983,6 +6015,13 @@ Library Debug + + Name + MenuSharing.c + MacOS + Text + Debug + @@ -6255,6 +6294,11 @@ WidgetSupport.shlb MacOS + + Name + MenuSharing.c + MacOS + @@ -6311,6 +6355,12 @@ nsTSMStrategy.cpp MacOS + + widgetCarbonDebug.shlb + Name + MenuSharing.c + MacOS + Mac Apps diff --git a/mozilla/widget/src/mac/nsMacMessagePump.cpp b/mozilla/widget/src/mac/nsMacMessagePump.cpp index 9de9fb17750..454cc9b9cd8 100644 --- a/mozilla/widget/src/mac/nsMacMessagePump.cpp +++ b/mozilla/widget/src/mac/nsMacMessagePump.cpp @@ -86,6 +86,9 @@ #include "nsISocketTransportService.h" #include "nsIFileTransportService.h" +#if TARGET_CARBON && !XP_MACOSX +#include "MenuSharing.h" +#endif #ifndef topLeft #define topLeft(r) (((Point *) &(r))[0]) @@ -189,6 +192,22 @@ static long ConvertOSMenuResultToPPMenuResult(long menuResult) } #pragma mark - +#if TARGET_CARBON && !XP_MACOSX +#pragma mark MenuSharingToolkitSupport +//================================================================= +static pascal void ErrorDialog (Str255 s) +{ + //ParamText (s, "\p", "\p", "\p"); + //Alert (kMenuSharingAlertID, nil); +} + +//================================================================= +static pascal void EventFilter (EventRecord *ev) +{ + // Hrm, prolly should do _something_ here +} +#pragma mark - +#endif static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); @@ -214,6 +233,11 @@ nsMacMessagePump::nsMacMessagePump(nsToolkit *aToolkit) // startup the watch cursor idle time vbl task nsWatchTask::GetTask().Start(); + +#if TARGET_CARBON && !XP_MACOSX + // added to support Menu Sharing API. Initializes the Menu Sharing API. + InitSharedMenus (ErrorDialog, EventFilter); +#endif } //================================================================= @@ -983,6 +1007,14 @@ void nsMacMessagePump::DoIdle(EventRecord &anEvent) // send mouseMove event static Point lastWhere = {0, 0}; +#if TARGET_CARBON && !XP_MACOSX + if ( nsToolkit::IsAppInForeground() ) + { + // Shared Menu support - note we hardcode first menu ID available as 31000 + CheckSharedMenus(31000); + } +#endif + if (*(long*)&lastWhere == *(long*)&anEvent.where) return; diff --git a/mozilla/widget/src/mac/nsMenuBarX.cpp b/mozilla/widget/src/mac/nsMenuBarX.cpp index 063a480edcf..e0dc8559f64 100644 --- a/mozilla/widget/src/mac/nsMenuBarX.cpp +++ b/mozilla/widget/src/mac/nsMenuBarX.cpp @@ -70,6 +70,10 @@ #include "nsGUIEvent.h" +#if !XP_MACOSX +#include "MenuSharing.h" +#endif + // CIDs #include "nsWidgetsCID.h" static NS_DEFINE_CID(kMenuBarCID, NS_MENUBAR_CID); @@ -351,6 +355,20 @@ nsMenuBarX :: CommandEventHandler ( EventHandlerCallRef inHandlerChain, EventRef break; } +#if !XP_MACOSX + case 'SHMN': + { // Shared menu support + MenuItemIndex index = command.menu.menuItemIndex; + if (index) + { + (void)SharedMenuHit(GetMenuID(command.menu.menuRef), command.menu.menuItemIndex); + ::HiliteMenu(0); + handled = noErr; + } + break; + } +#endif + default: { // given the commandID, look it up in our hashtable and dispatch to