Alex,

I haven't tested the OS9 package yet but I would doubt that the problem exists anywhere but in OSX specifically because of how Rev creates the Quit item in the App menu (and ignores the last two items - one being the divider line above Quit - of the File menu you've crafted in the menu builder).

Here's what the docs say (I've added one comment in CAPS):
- - - - - -
Special menu items
A few menu items on Mac OS and OS X are handled directly by the operating system. To accommodate these special menu items while allowing you to create a fully cross-platform menu bar, Revolution treats the last two menu items of the Help menu (for Mac OS and OS X), the File menu (OS X), and the Edit menu (OS X) differently.


By following these guidelines, you can make sure your menus will appear properly on all operating systems without having to write special code or create platform-specific menu bars.

The Help menu and the �About This Application� menu item:
When Revolution sets up the Mac OS menu bar, it automatically makes the last button the Help menu (regardless of the button�s name). The standard Help menu items, such as �About Balloon Help� and �Show Balloons� on Mac OS, are included for you automatically; you don�t need to include them in your Help menu button, and you can�t eliminate them from the Help menu.


Revolution moves the last menu item in the Help menu to the �About This Application� position. (On Mac OS systems, this is the first menu item in the Apple menu. On OS X systems, it�s the first menu item in the Application menu.) Therefore, the last menu item in your Help menu button should be an appropriate �About� item. The menu item above it must be a divider line (a dash), and above that must be at least one menu item to be placed in the Help menu.

The File menu and the �Quit� menu item:
On OS X systems, the �Quit� menu item is normally placed in the Application menu (which is maintained by the operating system) rather than in the File menu as is standard on other platforms. To acccommodate this user-interface standard, Revolution removes the last two menu items of the File menu when a standalone application is running on an OS X system. Therefore, the last menu item in your File menu button should be �Quit�. The menu item above it should be a divider line (a dash).


The Edit menu and the �Preferences� menu item:
On OS X systems, the �Preferences� menu item is also normally placed in the Application menu. To acccommodate this user-interface standard, Revolution removes the last two menu items of the Edit menu when a standalone application is running on an OS X system. Therefore, the last menu item in your Edit menu button should be �Preferences�. The menu item above it should be a divider line (a dash).


Note: The Preferences menu item is treated in this special way only if its name starts with the string �Preferences�.

Choosing the special menu items:
When the user chooses any of these special menu items, a menuPick message is sent to the button that the menu item is contained in. This ensures that your button scripts will work on all platforms, even if Revolution displays a menu item in a different menu to comply with user-interface guidelines. (THIS CONTRADICTS OTHER DOCUMENTATION IN REV; SEE QUOTED TEXT IMMEDIATELY BELOW.)
On OS X systems, the �Quit� menu item is part of the Application menu, which is displayed by the operating system rather than by the application. Because of this, choosing �Quit� on OS X systems does not send a menuPick message, so you cannot handle quitting in a menuPick handler.

Instead, choosing �Quit� sends an Apple Event (class �aevt�, ID �quit�) to the application. If you don�t intercept this Apple Event in an appleEvent handler, Revolution sends a shutdownRequest message in response to the Apple Event. To respond to the user choosing �Quit�, handle either of these messages.

Tip: For easiest cross-platform development, place all the code you want to execute on quitting in a shutdownRequest handler.
(THE PROBLEM IS THAT BOTH THE SHUTDOWNREQUEST HANDLER AND APPLEENVENT HANDLER ARE IGNORED.)
(BACK TO THE DOCS...)
For example, if the user chooses �About This Application� from the Apple menu on a Mac OS system, a menuPick message is sent to the Help menu button, with �About This Application��as its parameter. You handle the message for the About menu item in the Help menu button�s script, even though Revolution displays this menu item in a different menu on the Mac.
- - - - -


So the methodology of supporting OSX's special way of displaying certain menu items has already been defined by Rev; it's just not been done. We don't need any additional means of referring to the menu items to disable them as long as the handlers we've defined for them are called when Rev says they will be (which, currently, they are not).

In my previous post I mentioned that your app's changed data had better be saved before the user selects Quit in OSX because your app will quit without warning of unsaved changes. Your shutDownRequest handler would have, of course, checked a flag to see if a "save changes?" dialog would be necessary but, as we've seen, selecting Quit simply quits without sending a shutDownRequest. When Rev puts in the "hook" from the Quit item to your handler, everything will be fine. Until then, you're screwed.

Again, I want to emphasize that this problem is only due to the way Rev moves the OSX menu items so Windows apps work fine and I would expect OS9 apps to work properly, as well.

Regards,
Barry
On Tuesday, Sep 9, 2003, at 23:06 America/Denver, Alex wrote:

On Tuesday, September 9, 2003, at 10:37 PM, Richard Gaskin wrote:
There may be a way to support OS-specific niceties without losing the
unprecedented platform-independent convenience we've been enjoying for
years.  I would advocate we explore those....

How about: set a property for menu items specifying that should get moved into the App menu on OS X. The property could be an integer: the menu item's number (placement) in the app menu. If the property is empty or zero, it would not get moved to the App menu.

This would be more like other the platform specific features of rev, in
that other platforms don't suffer, developer is not inconvenienced, but
we are not prevented from using it.

Does this same problem apply for Mac OS too, or just OS X?

_______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to