FixMenus v. 1.1a  April 2, 1992

This is a utility for use with Workbench 2.0.  It will
_not_ work under Workbench 1.3 or earlier.

WHAT IS IT?
===========
FixMenus is a utility to fix the menus of pre-2.0 programs which
create menus connected to a window on the Workbench 2.0 screen.  Prior
to 2.0, a programmer expected the menu font to be eight pixels high.
Because of this, most menu structures were set for all items to
be eight pixels high.  The problem that arises now is that the menus
of such programs will be very difficult to read and use IF YOUR
DEFAULT WORKBENCH SCREEN TEXT FONT IS NOT EIGHT PIXELS TALL.

On my system, the default font is twenty pixels tall, making the menus
of some pre-2.0 programs on the Workbench screen unusable.  The program
where I first noticed this was JR-Comm, where my twenty pixel font
made the menus impossible to use when JR-Comm was on the Workbench
screen.  This problem is present only with menus opened by certain
programs on the Workbench screen, because the menus on a custom
screen will use that screen's default text font, which (presumably)
the pre-2.0 programmer will have set to be an eight pixel tall font.

Therefore, FixMenus will fix menus opened on the Workbench screen
so that the menu items will be set to the correct height for the
default Workbench screen text font which you have set.

USAGE
=====
FixMenus will only work from the CLI.  Type 'FixMenus' to start it
running, and type 'FixMenus' a second time to stop it.  'FixMenus'
will inform you whether it has been installed or removed.  If you
place FixMenus in your startup-sequence (which is a good place to
put it and forget it), you should place it near the end, after the
'Load Workbench' command.  Otherwise, you will not be able to remove
FixMenus, except by removing it from your startup-sequence and rebooting.

HOW DOES IT WORK?
=================
FixMenus patches the SetMenuStrip() function.  It installs itself, and
checks the menu structure of a menu when a program "sets" a menu by
callin the SetMenuStrip() function.  If the menu is not going to be
on the Workbench screen, or if the menu uses the correct height for
the default Workbench text font the user has selected, FixMenu does
nothing to the menu structure, and passes the structure to the
SetMenuStrip() function.  If the menu is on the Workbench screen, and
_does_ _not_ use the correct height for the default font, FixMenus
corrects the height of all items in the menu structure, and passes
the amended structure to the SetMenuStrip() function.  Please note
that this will cause the menu to look strange if the menu is graphical
instead of text.  Also, if FixMenus alters a menu structure, it will
make certain that the menu font will be set to the default screen font.

FixMenus does all of this by installing itself as a system resource.

THANKS
======
Special thanks go to Erwin van Breemen and Raymond Hoving of the Orega
Programming Group of Holland for releasing the code to NoCare v. 1.2.1,
which I used as the basis for the design and coding of FixMenus.

LEGAL STUFF
===========
This program is released to the public domain.  If you find this
program useful (or possibly indispensable), please make a contribution
of U.S.$10 (or the equivalent in local currency) to a recognized charity.
Please do not incorporate FixMenus into a commercial program without
the written permission of the author.

THIS PROGRAM IS PROVIDED "AS IS".

UPDATE HISTORY
==============
v. 1.1a  1.  The resource will now be loaded into the fastest available
         memory, instead of loading into chip memory.
         2.  Added one additional register to those saved.  This register
         was apparently changed intermittently, and resulted in some
         crashes.  Now, FixMenus saves all possible registers.
v. 1.1   1.  Added code to kill references to a custom font in a menu
         structure, so that all Workbench menus will use the user's default
         Workbench screen font.
         2.  Added code to save all registers and restore them when FixMenus
         is finished.  Some programs that are heavily optimized were trashed
         when FixMenus was done, since FixMenus uses several registers which
         SetMenuStrip apparently does not need.

Please send all bug reports, praise, criticism (or money) to the author
at the following addresses:

      Portal:     Counsellor
      BIX:        ben_rich
      Delphi:     BEN_RICH
      Usenet:     Counsellor@cup.portal.com
      U.S. mail:  805 Lincoln Drive
                  Voorhees, NJ  08043

THE AUTHOR
==========
Benjamin Reich
