Digital Alchemy Mercutio MDEF


* Overview
* Inside Mercutio(pdf)
* Internationalization
* Licensing Description
* Software License(pdf)

* Current version: 1.5.1
* Download Now!
* Release Notes
* Known Problems
* Version History

* Register!
* Registered Users

* Technical Support
* Mailing Lists
* Report a Bug


Version History

Version 1.5.1
  • Mercutio now pays attention to the "Use Grayscale Appearance" setting in the Appearance Manager control panel as well as whether or not the application is Appearance-Manager-registered. In particular, registered applications will now use the 3D grayscale bevelled look.
  • Left margin spacing adjusted to more closely match the Appearance Manager MDEF.
  • Left and right margins on menus match Appearance Manager layout.
  • Text color in hilighted items is now white, not gray.
  • Scroll arrows now correctly show grayscale bevel.
  • Mercutio now uses the correct menu hilight color for registered applications under System 7 or when system-wide platinum appearance is off.
  • Mercutio uses correct gray colors for menu background, bevels, and separators under Appearance Manager 1.0.2.
  • Fixed bug where MDEF_MenuKey would recognize hierarhical menus as menu items with "Escape" as key equivalent. Escape is not a valid menu shortcut.
  • Evidently the Apple menu cannot be used as a Mercutio menu: if you pass the Apple menu to MDEF_MenuKey, the MDEF never gets called. Changed MDEF_MenuKey API to try to find Mercutio on its own if the passed menuHandle isn't a Mercutio handle. If it still can't find Mercutio, it beeps and returns 0.
  • Adjusted separator spacing when "System-wide Platinum Appearance" turned off.

Version 1.5
  • Improved support for Appearance Manager 1.0 (right margin spacing, compatibility mode).
  • Clears purgeable flag from MDEFFont NFNT resource, which could lead to misdrawn menu symbols.
  • Fixed popup menu bug that misplaced popup menus when 0 was passed in as the selected item.
  • Fixed bug that unlocked the GDevice handles when a popupmenu was displayed. Could lead to a crash later on, often in StdText. To see the code changes, look here.

Version 1.3.4
  • Added initial MacOS 8 compatibility, including support for Platinum Theme in Appearance Manager (special thanks to Marco Piovanelli).
  • Improved compatibility with Kaleidascope (System 7 and MacOS 8).
  • Changed the semantics of sameAlternateAsLastTime constant to "don't redraw by default". This fixes flickering in menu items whose icons are set by callback routines.
  • Graphical version of spacebar now shows up correctly.
  • Various visual tweaks and minor enhancements.
  • Fixed several documentation errors

Version 1.3.3
  • Fixed several serious visual glitches under Kaleidoscope.
  • Fixed documentation to reflect new codes for arrow keys. This change has been effective since 1.3 but wasn't shown in the documentation.

Version 1.3.2
  • Fixed sample code to correct react to key equivalents in hierarchical menus.
  • Added ksameAlternateAsLastTime and kdontDisposeIcon constants to .h API file. Those flags functioned correctly but were misnamed.
  • Fixed memory leak when scrolling icon suites.
  • Fixed cosmetic glitches when using non-standard System fonts (e.g with Kaleidoscope).
  • Fixed bug in C sample code for dynamic items.
  • Changed some of the color icons in the sample application.

Version 1.3.1
  • Fixed Pascal API bug that gave crash under non GENERATECFM situations.
  • Fixed crash bug that could occur under certain memory move situations.
  • Fixed refresh bug when scrolling very long popup menus without Balloon Help items but with Balloon Help turned on.
  • Updated C sample code to support key equivalents in popup menus.
  • Miscellaneous typo corrections in documentation.
  • Smaller release package (e.g. removed binaries from sample projects)

Version 1.3b15 / Final 1.3 release
  • Fixed pointer arithmetic bug introduced in 1.3b13.

Version 1.3b14
  • Internal release; added memory bounds check for globals.

Version 1.3b13
  • Fixed bug that would occasionally cause Mercutio to overwrite a handle boundary (BlockMove 22 bytes -- QC would catch this).
  • Updated version number for GetCopyright and GetVersion messages.

Version 1.3b12
  • Added support for kDontDisposeIcon flag to stop Mercutio from disposing icon returned by callback routine.
  • Fixed font size bug in non-12pt popup menus.
  • Added 9-pt symbols for non-printing keys to .MDEF Font.
  • Fixed drawing bug that redraws dynamic items using the last modifiers instead of the current ones.
  • Fixed size problem in ResEdit versi of Xmnu TMPL resource (ResEdit seems to ignored Filler fields at the end of TMPL resources).
  • Adopted changes to C API to work under STRICT_MENUS.
  • There is still one memory bug to be resolved before we go final.

Version 1.3b11
  • Added WorldScript support; tested with Japanese, Arabic, Persian language kits and fonts; tested right-to-left text aligned menus.
  • Renumbered some font characters for better internationalization support; if you upgrade to this beta, YOU MUST UPGRADE THE FONT RESOURCES as well.
  • Added missing CalcMenuSize call to MDEF_SetMenuPrefs in C API (fixed "really long blank menu" bug).
  • Fixed MDEF_MenuKey bug that would miss key equivalent matches on certain dynamic menu items.
  • Fixed flicker problem in disabled dynamic menu items.
  • Updated Mercutio Demo application:
    • Added UPP support for callbacks.
    • Added PPC versions of both C and Pascal application.
    • Re-arrange Demo application menus to save menubar space.
    • Added WorldScript demo menus.
    • Simplified PopUpSelectWithWindowFont routine to match DTS sample code ("PopUpSelectWithCurFont").
    • Added Balloon Help example to Color menu in Demo application.
  • Added documentation for compatibility issues to consider when using Mercutio and Apple Guide together.

Version 1.3b10
  • Changed kSmallIcon to kIconIsSmall to avoid conflict with MacOS constant.
  • Support for dontDisposeIcon flag from callback routine; allows you to store icon handles in a global array in your code. The API hasn't been changed yet to reflect this feature (I forgot), but this version maps the "unused0" flag in the "flags" field of the richItemData structure as a "dontDisposeOfIcon" flag.
  • Mercutio now only calls GetKeys to read the modifier keys during the ChooseMsg event.
  • Fixed popup menu drawing code when menu was larger than screen size.
  • Mercutio now catches key equivalents in popup menus.
  • Known Bug: There appears to be a bug in the MenuKey code that causes memory overwrites. I have been unable to reproduce it but several beta sites have reported it. I'm trying to hunt it down now, but any help would be appreciated.

Version 1.3b9
  • Finally fixed sporadic Font-renumbering problem!
  • Somehow the Mercutio API file renaming and multiple-inclusion protection changes didn't make it into b8 -- they are there now.
  • Documentation corrections.

Version 1.3b8
  • Renamed "Mercutio API.[ch]" to "MercutioAPI.[ch]"
  • Added multiple-inclusion protection to MercutioAPI.h.

Version 1.3b7
  • Updated manual and software license.
  • Fixed type in .MDEF Font (delete key).
  • Added explicit SetResLoad(TRUE) before attempting to retrieve .MDEF Font. One beta site reported GetFNum call seemed to be changing the value of ResLoad, which might explain why sometimes Mercutio draws garbage characters instead of the modifier keys. If anyone still encounters this bug, let me know.
  • Moved command-key and letter closer by one pixel to be compatible with 7.5.3 MDEF.

Version 1.3b6
  • Fixed Xmnu TMPL; now correctly places style information in high byte, and uses filler for the low byte. Also removed version number from Xmnu template; you'll need to redo your Xmnus again. Sorry!
  • Updated ResEdit TMPL.
  • Updated C sample code (finally!)
  • Fixed .MDEF Font bug so that Return and Enter display correctly (this was actually fixed in an earlier version).
  • Fixed bug that would ignore Xmnu resources that weren't preloaded.
  • Fixed "Enabled" in "Icons" menu in demo app -- now correctly demonstrates Mercutio's display of disabled menu items.
  • Easier-to-read Mercutio WWW site is at http://www-leland/~felciano/da/mercutio/.
  • Starting with this version, beta release notes will be maintained here.
  • Various typo fixes to the Pascal API so that it compiles with the "Case Sensitive Identifiers" compiler preference on.

Version 1.3b5
  • Changed Xmnu resource. Everyone will need to update their Xmnu resources and use the new API.
  • Fixed bug in display of checked items in color menus.
  • Because these pages are publicly viewable, the beta releases are now password encrypted.
  • In the Sample Code folder, the resource file with the Mercutio MDEF in it will always be called "MercutioMDEF.rsrc". This should allow you to drop it right in to your project folder, replacing any earlier version that is there.
  • NOW Software has released a public beta of NOW Utilities 6.0. I checked it out and found that there is still a NowMenus incompatibility with Mercutio (see bug report below for details). They have stated that they are looking into the problem. If you have users that have complained about this problem, please send NOW a message at -- the more voices, the better.

Version 1.3b4
  • Added spacebar as legal non-printing key equivalent.
  • Fixed selection bug (sometimes didn't deselect when moving the mouse off the menu).
  • Converted some graphic keys to lowercase like on the extended keyboard.
  • Various optimizations (plain text menus are alot faster).
  • IMPORTANT: minor change in Pascal API to give bit-level access to Style records: menuPreference now uses a variant record instead of a plain Style.
  • Fixed (?) low memory Font problem (modifier symbols would be drawn in system font rather than .MDEF font).

Version 1.3b3
  • Added MDEF preference to set the resource ID above which all icons are drawn small size (default is 500).
  • Fixed bug that tried to grow a locked handle.

Version 1.3b2
(not released)
  • Changed copyright callback message number

Version 1.3b1
  • Support for window font/size (e.g. for Geneva 9 pt popup menus)
  • Support for graphic icons for non-printing keys (page up/down, etc.)
  • Fixed bug in popup scrolling.
  • MDEF globals stored in A4 space (Menu-specific globals still stored in menuHandles).

Version 1.2 and earlier
Version 1.2
- Final release of v 1.2 (2/19/95)
- Fixed scroll bug that wouldn't hilight the last item in a menu after
  scrolling down
- Misc. code cleaning
- Added 'Xmnu' menu to demonstrate preference resource
- Removed flicker in dynamic items when they don't change

Version 1.2b24
- Third public release (12/21/94)
- Added support for Dvorak keyboard; should solve some of the
  internationalization problems as well.
- Fixed misc. bugs, including flickering balloon help.
- Documentation revised, and distributed in Acrobat format. Acrobat Reader
  available at:
- First draft of C API (w. UPP) and C sample code
- Known Bugs: 1. Popupmenu sample code not ported yet.
              2. Documentation still a little sketchy in some areas.
              3. Licensing change: credit must be given in documentation
                 as well as the About box.
- Xmnu id 0 as a defaults for all the menus

Version 1.2b20
- Second public release (9/29/94)
- Dynamic items: the modifiers of the default item (the one that shows up
  if no modifiers are pressed) are used as a mask, so any item alternates
  must _at least_ have those modifiers.
- Fixed menu width bug with dynamic items.
- Revised sample code.
- Known Bugs:
      1. Missing API and Sample Code in C (either by porting the API
         code or by providing a library with a C header file)
      2. Implement using PowerPC Universal Headers for C sample code.
      3. Flicker in dynamic items that don't change when modifiers change
      4. Documentation is sketchy

Version 1.2b18
- NEW FEATURE: Dynamic items! They work, too!
- Major internal changes to support new feature.
- Revamped callback structure
- API routines changed to all have "MDEF_" prefix
- Bug fix in drawing color menus
- Still need to do: C sample code, finish documentation

Version 1.2b13
- Slightly revised documentation
- Pseudo-public release to MacDevelop ftp site.

Version 1.2b12
 - integrated all MDEFs into one
 - support for DrawItemMsg and CalcItemSize msg (new in System 7) --
   check out the "Test Popup Menu" window
 - introduced Menu preferences for setting style bit mapping and
   required modifier keys
 - new 'dirty' parameter to Callback avoids unnecessary flicker
 - revamped documentation

Last modified by RMF at 22:59 PM on 05/18/1998. © Copyright 1996-2000, Digital Alchemy, All Rights Reserved.
This site was built on a Macintosh using BBEdit and CometPage.