
MGUI Release history

************** Release 1.4.0

* First distributed release (only Windows)


************** Release 1.4.1

* Porting done to DJGPP 2.0 with GRX 2.0
* Porting started to Linux GRX 2.0/svgalib
* Added support to SVGA BGI 5.5 (up to 64K colors)
* Operative environment switch macros changed. The old values WINDOWS,
  BORLANDC are set but could not be supported in future releases:

  - DJGGP       ->      DJGPP_MGUI
  - WINDOWS     ->      WIN_MGUI, WINDOWS
  - BORLANDC    ->      BC_MGUI, BORLANDC
  - UNIX        ->      X11_MGUI

* Fixed a bug in reading some 24 planes bitmaps.
* Fixed a bug in opening the subpulldown of the first pulldown item.


*************** Release 1.4.2

* Window resize feature implemented (with Alt-Drag) in BGI/GRX.
* Fixed a bug in the pixmap data allocation function (X-Window only)


*************** Release 1.4.3

* Fixed another bug in reading some bitmaps (all platforms).


*************** Release 1.4.4

* Macro name changes (due to a mistake):
	WS_HATCHED_IN	-> WS_ETCHED_IN
	WS_HATCHED_OUT	-> WS_ETCHED_OUT
  Old names are also present for backwards compatibility
* Added function: MObjectGetSensitivity()


*************** Release 1.4.5

* Fixed a bug in the Text Cut & Paste feature (BGI & GRX only)
* Environment variable GRXFONT is now defaulted to MGUIDIR (GRX only)
* Added in 'mgui/sys' the static font files for GRX


**************** Release 1.5.0

* First registerable release
* Added push buttons for closing and maximizing/restoring windows (BGI/GRX)
* Added function MObjectGetFont()
* Added function:
	MPullDownSetItemAccel()
  It overrides the old:
	MPullDownSetItemAcc()
  which does not set the acceleration text. A macro is present in mgui.h for
  backwards compatibility.
* Fixed some bugs in function:
	MEditChangeText()
  Now correctly redraws the Object and resets the scrollbars (Multi Line Edit).
* File Selection Dialog no longer changes the program's current directory
  (DOS and Windows).
* Menu bar and title bar should no longer move down when resizing.
* Added macro MGUI_RELEASE in file 'mgui.h' (value 150 for 1.5.0).
* Fixed some bugs in the Cut, Copy and Paste features using
  <Ctrl+X>, <Ctrl+C> and <Ctrl+V> keystrokes.
* Added the system call 'signal(SIGINT, SIG_IGN);' in the GRX implementation to
  prevent program termination due to a <Ctrl+C> (DJGPP and Linux console).



**************** Release 1.5.1

* Changes in the mouse event report
  Macros for the 'button' member:
  - Button1	-> Left   Button
  - Button2	-> Middle Button (3-buttons mouse)
		-> Right  Button (2-buttons mouse) in X-Window
  - Button3	-> Right  Button
  BitMasks for mouse buttons and key modifiers in the 'state' member:
  - ShiftMask
  - ControlMask
  - AltMask
  - Button1Mask
  - Button2Mask
  - Button3Mask

* SCROLLBAR mouse action changes:
  - A page scrolling is achived by pressing the left mouse button outside the
    slider.
  - Dragging the slider with the left mouse button no longer centers the slider
    to the mouse cursor position.
  - By pressing the right or the middle mouse button, the slider is centered to
    the mouse cursor position.


**************** Release 1.5.2

* Fixed a bug in function MEditGetSubString()
* MFileSelection() no longer operates floppy disk seek in Win32 version
* Edit cursor should no longer overwrite the '_' character.
* Changes in Windows static fonts:
  - SMALL_FONT	from 'Courier New' height 15 to 'Courier New' height 16
  - LARGE_FONT	from 'Courier New' height 22 bold to 'Courier' height 20
* Added function:
	void MEditSetAutoIndent(OBJECT *edit, int on_off);
  It sets/resets the auto-indent option for the multi-line EDIT
* Modal windows are now realized, by default, centered on the window
  that loses the input focus. (All platforms)
* Modal windows are realized 'transient for' the window that loses
  the input focus, rather than the last created one. (X-Window only)
* Macro MGUI_RELEASE is moved in file 'mguidefs.h' and is now in hex (0x152).


**************** Release 1.5.3

* Default line spacing changes from 1 to 0 in the EDIT Object.
* Edit cursor blinking no longer causes mouse pointer to blink (Windows with
  no hardware cursor support)
* Fixed a bug in file printing within a Windows 16 bit application running
  under Win 95.
* Printing is now possible under the Borland Win32 version
* First Win 95 version (Visual C 4.0)


**************** Release 1.6.0

* Word selection via a double click on the EDIT Object now only includes
  digits, alpha and '_'.
* EDIT Object now accepts characters in the range 1-254 via the
  <Alt + 3-digits> input sequence. For example <Alt+0+2+7>
  (decimal 27) inserts the Escape character code in the EDIT.
* Second and third mouse button press acts as a shortcut for the Paste function
  in the EDIT Object
* Menu item acceleration text is now left-aligned
* Centering Modal windows no longer puts them outside the screen (when
  possible)
* Bug Fix in MObjectSetBackgroundRGB() and MObjectSetForegroundRGB()
* Bug Fix in the EDIT Object resize method
* Bug Fix in the cursor drawing method for the EDIT Object
* Bug Fix in MShellConfigure() method (DOS BGI and DJGPP only)
* Bug Fix in text drawing alignment (DOS GRX and DJGPP only)
* Bug Fix in Pulldown positioning (Win32 only)
* Added functions MEditSetTabSize() and MEditSetClipWindow()
* Long and case sensitive filename support in the file selection dialog box
  in the DJGPP version
* MCreatePixmapFromFile() returns an empty Pixmap Object rather than a NULL
  if it fails to load the specified file.
* Added function MPixmapSetImageFile()


**************** Release 1.6.1

* RS232 experimental support removed
* The space bar now activates the selected button
* Directory separator macro changes:
	SLASH	->	DIR_SEP
* mguidefs.h no longer includes windows.h when compiling under Windows.
  This dramatically boosts the compiling process for Win32 target.
  Compiling mguitest on a 133 MHz AMD 486 PC with Borland C 4.52 now requires:
  - 56,741 lines compiled in 16 sec
    in previous release:
  - 4,913,000 lines compiled in 213 sec


**************** Release 1.6.2

* Fixed a bug in the EDIT text drawing when text is changed within the validate
  callback
* Fixed a bug in the MENU item activation callback calling:
  the second argument (the calling item) is now correct even if the
  callback is called due to the accelerator key pressing.
* MSListGetElement() and MSListGetSelected() now return (LIST_ACT *) rather
  than (char *)
* Added function MSListAddElement()



**************** Release 1.6.3

* Mouse events catched with the EventNotify callback now correctly report
  x and y members as relative to the Object, when it's a SHELL.
* Added function MSListSetSelectionCallback() which sets a
  callback invoked when:
	- a mouse button press occurs in the list
	- the focused item changes due to a Arrow/Page/Home/End
	  key press.
	- the Ins key toggles the selection status of an item
	  in the MultiSelection List
	- deleting an item from the list the focused item
	  changes (position or content)
	- the focused item is changed via MSListChangeElement()
	  and MSListChangeItem().
   The structure reported as second argument by the callback is 
   type (LIST_SEL *), which includes all fields in LIST_ACT and adds the
   field 'pe'. This field points to the Event that causes the callback
   calling. When the callback is called due to item deletion or
   modification, the 'pe' field is NULL. Both KeyEvent and MouseEvent
   include the 'state' field which contains a bit mask of the modifier
   keys state: (AltMask, ShiftMask, ControlMask).
   For MouseEvent only, the 'state' field includes mouse button mask
   (Button1Mask, Button2Mask and Button3Mask). The 'pos' field is -1
   when the list becomes empty.
* Added function MGetKeyboardState() which returns a bitmask
  containing the possible OR-ed values: AltMask, ShiftMask, ControlMask.
* Fixed a bug occurring when children are added to an Unmapped parent.
* Fixed a bug occurring when children are deleted from an Unmapped parent.
* Unsensitive buttons and menu items now look like in Windows 95
* Push Buttons now accept a null shadow.


**************** Release 1.7.0

* Porting to Watcom DOS 4G started.
* Fixed a bug in MCharWidth() (DOS BGI only)
* Optimized the AutoSize/Resize/Position methods of the FORM Object
* Optimized the Default Object Color setting
* Added automatic menu titles and items mnemonics. For example:
	<Alt+F> opens the 'File' pulldown
	<o>	selects the 'Open' item


**************** Release 1.7.1

* Some functions and type name regarding pixamp are changed to eliminate
  confusion between the PIXMAP as an Object and the PIXMAP as an image:

   MPIXMAP			-> MIMAGE
   MInstallPixmap()		-> MInstallImage()
   MUninstallPixmap()		-> MUninstallImage()
   MDrawPixmap()		-> MDrawImage()
   MReadPixmapFile()		-> MReadBMPFile()
   MFreePixmap()		-> MFreeImage()
   MCreatePixmapPButton()	-> MCreateImagePButton()
   MPButtonSetPixmap()		-> MPButtonSetImage()
   MCreatePixmapRButton()	-> MCreateImageRButton()
   MRButtonSetPixmap()		-> MRButtonSetImage()
   MCreatePixmapTButton()	-> MCreateImageTButton()
   MTButtonSetPixmap()		-> MTButtonSetImage()

  Macros are however activated in mgui.h (under #ifdef OLD_MGUI) for
  backwards compatibility.

* Added support for 24 bit TIFF files in Linux (requires libtiff by Sam Leffler
  downloadable from sunsite)
* New functions:
   MIMAGE MAllocImage(int img_w, int img_h, int nplanes);
   	Allocates memory for an image 'img_w'*'img_h' with 'nplanes'
   	valid 'nplanes' values: 1, 4, 8, 24 (2, 16, 256, 16M colors).
   MIMAGE MReadTIFFFile(char *fname);
   	Reads a tiff image file as a 24 planes image.
   void MImageGetInfo(MIMAGE pm, int *pw, int *ph, int *pnplanes);
   	Returns image width, height and number of planes.
   void MImageGetPixelRGB(MIMAGE pm, int x, int y, int *pr, int *pg, int *pb);
   	Returns R-G-B values for the pixel at position x,y in the image.
   void MImageSetPixelRGB(MIMAGE pm, int x, int y, int r, int g, int b);
   	Sets R-G-B values for the pixel at position x,y in the image.
   	Inefficient for 1/4/8 planes images.


**************** Release 1.7.2

* Fixed a bug in computing the bytes/row in 2 and 16 color Bitmaps.
* TIFF support now includes: black & white, 256 gray scale, colormapped
  16 and 256 colors (with 16 bit palette)
* TIFF support is extended to DJGPP and Win32.
* New functions:
   void MImageGetCMapEntry(MIMAGE pmi, int i, int *pr, int *pg, int *pb);
   	Returns the R-G-B values for the colormap entry 'i'.
   	For 1/4/8 planes images only.
   void MImageSetCMapEntry(MIMAGE pmi, int i, int r, int g, int b);
   	Sets the R-G-B values for the colormap entry 'i'.
   	For 1/4/8 planes images only.
   int  MImageGetPixelIndex(MIMAGE pmi, int x, int y);
   	Returns the index in the colormap corresponding to the image pixel
   	at position x,y.
   	For 1/4/8 planes images only.
   void MImageSetPixelIndex(MIMAGE pmi, int x, int y, int i);
   	Sets the image pixel at position x,y the index 'i' in the colormap.
   	For 1/4/8 planes images only.


**************** Release 1.7.3

* Support for GIF images added for all platforms (no additional lib required).
* Support for JPEG images added for Linux, DJGPP and Win32.
  The JPEG support requires the free library libjpeg 6a by IJG
  (downloadable from sunsite)
* New functions:
   MIMAGE MReadJPEGFile(char *fname);
   MIMAGE MReadGIFFile(char *fname);
* File Selection Dialog now supports multiple file filtering specification
  (example: "*.bmp,*.gif;*.tif *.jpg"). Valid separators are characters: ',' ';'
  and ' '
* If the filter argument in the call to MFileSelection() is a NULL pointer
  or a null string, then the last user selected filter is used.
* The mnemonic character in a menu item or a menu title can now be forced
  by placing '&' before the desired character in the item or title text.
  For example, "E&xit" will activate the 'x' character as mnemonic.
* Character insertion in the EDIT Object via <Alt + 3-digits> input sequence
  now works also under Linux.
* Changes made to mgui.h for C++ compatibility
* Fixed a bug in getting extended ASCII characters (Unix only).
* Numeric Keypad characters now are correctly handled (Unix only).


**************** Release 1.8.0

* Added support for mouse cursor assigning to Objects
    MTCursor MCreateCursor(MIMAGE bits, int xs, int ys);
	bits is the image (colormapped) describing the cursor.
	black will be used as color for index 0 and white
	for index 1. All pixels in the image with color index
	other than 0 and 1 will not be part of the cursor.
	mask is a 1 plane image used to mask the image bits.
	BEWARE: currently does'nt work in Windows.
    void MObjectSetCursor(MOBJECT obj, MTCursor cursor);
* Added support for popup or label help when the mouse enters the Object
  window
    void MObjectSetPopupHelp(MOBJECT obj, char *str, int delay, int duration);
          The text in the string 'str' will appear in a popup window
        when the mouse pointer enters the Object 'obj'.
          'delay' specifies the time in millisecond to wait before opening
        the popup window when the cursor stops into the Object. Valid range
        is 0 - 32000. Default (delay < 0) is 500.
          'duration' specifies the maximun time the popup stays open (in msec).
        Valid range is 1000 - 32000. Default (delay < 1000) is 5000.
    void MObjectSetLabelHelp(MOBJECT obj, char *str, MOBJECT label);
        The text in the string 'str' will appear in the Object 'label'
        when the mouse pointer enters the Object 'obj'.
    void MObjectChangePopupHelpText(MOBJECT obj, char *str);
    void MObjectChangeLabelHelpText(MOBJECT obj, char *str);
    MIMAGE MPixmapGetImage(MOBJECT pixmap)
* Added support for popup menu handling.
  New functions:
    MOBJECT MCreatePopupPullDown(MTFont font);
    	Creates a pulldown menu not linked to a menu bar. Items or subpulldowns
    	can be added with MPullDownAddItem() and MCreateSubPullDown().
    	Item accelerators are not permitted.
    void MPopupPullDown(MOBJECT pm, int x, int y);
    	Pops up a pulldown menu created with MCreatePopupPullDown() or
    	a pulldown already linked to a menu bar at screen position (x,y).

* The E_MOTION, E_WINDOW_ENTER, E_WINDOW_LEAVE events are now despatched
  even if the destination Object hasn't grabbed the mouse.
  E_WINDOW_ENTER and E_WINDOW_EXIT are not despatched to the SHELL
  Object in Windows.
* Mouse position report is now in the range 0 - (ObjectWidth-1)
  previuosly: 1 - ObjectWidth
* Now it's possible to set multiple user callbacks to get notification
  of Object events.
  The functions:
     MObjectSetEventNotifyCallback()
     MObjectSetDestroyCallback()
  are replaced by
     MObjectAddEventNotifyCallback()
     MObjectAddDestroyCallback()
  Macros are however activated in mgui.h (under #ifdef OLD_MGUI) for
  backwards compatibility.
  New functions to remove the above callbacks:
  void MObjectRemoveEventNotifyCallback(MOBJECT obj, OBJ_EVENT_CB cb, void *ad);
  void MObjectRemoveDestroyCallback(MOBJECT obj, MGUI_CB cb, void *ad);
* Fixed a bug in scrolling areas under Windows (when the scrolling window is
  partially obscured by another window)
* Fixed a bug in navigating with the mouse in menu items when pulldown and
  subpulldown are open in locations other than the natural ones
* Fixed a bug in Timeout setting. Values greater than 36 minutes now work.
* Fixed a bug in restoring the window area obscured by a popup window.
  Present only in console versions (BGI, DJGPP, SVGALIB)


**************** Release 1.8.1

* Corrected event masks for codes higher than 'E_PARENT_UNMAP'
* Fixed a bug occurring when a new window is open within a timeout callback
  if the mouse is grabbed (for example by an open menu).
* Fixed a bug occurring when a new window is open within a timeout callback
  if another window is being moved (BGI, DJGPP and Linux SVGAlib versions).
* A new event (E_GRAB_LOSE) is added to notify the Object owning the mouse
  (and keyboard) grab, that it is about to lose it, due to a new window
  opening.
  This event is notified to the InputCallback for a DRAWAREA Object.
* The '\r' character is now filtered by the EDIT Object when followed by
  '\n'. This makes it possible to correctly handle DOS text in EDIT
  Objects under Unix.


**************** Release 1.8.2

* MObjectShell(obj) now returns NULL if the ancestor of obj is not a SHELL.
  This happens if the object (or a parent of it in the hierarchy) has been
  deleted from the hierarchy (with MDeleteObject()) or it has been created
  with a NULL parent.

* MObjectResize() now only forces needed resize.


**************** Release 1.8.3

* New macros for static fonts:
	- FIXED_SMALL	(replaces SMALL_FONT)
	- FIXED_MEDIUM	(replaces MEDIUM_FONT)
	- FIXED_LARGE	(replaces LARGE_FONT)
	- TIMES_SMALL	(replaces TIMES_N_FONT)
	- TIMES_MEDIUM	(replaces TIMES_L_FONT)
	- TIMES_LARGE	(new)
	- HELV_SMALL	(replaces HELV_N_FONT)
	- HELV_MEDIUM	(replaces HELV_L_FONT)
	- HELV_LARGE	(new)

* Automatic font size selection with regard to the screen resolution.


**************** Release 1.9.0

* Object and system resources handling (Windows and X11 only)
* New functions:

  - char *MGetStringOption(char *name, char *opt_name);
  - char *MGetTextOption(char *name);
  - int MGetIntOption(char *name, char *opt_name, int *ret);
  - int MGetFontOption(char *name, MTFont *ret);
  - int MGetBGColorOption(char *name, int *pr, int *pg, int *pb);
  - int MGetFGColorOption(char *name, int *pr, int *pg, int *pb);
  - int MGetShadowOption(char *name, int *shadow, int *i_t, int *o_t);

  - void MSetTextOption(char *name, char *text);
  - void MSetIntOption(char *name, char *rname, int val);
  - void MSetFGColorOption(char *name, int r, int g, int b);
  - void MSetBGColorOption(char *name, int r, int g, int b);
  - void MSetShadowOption(char *name, int shadow, int in_t, int out_t);
  - void MSetFontOption(char *name, MTFont font);
  - void MSaveOptions(void);
  - void MObjectEnableOptions(MOBJECT obj, char *name, CARD32 mask);
  - void MObjectSaveOptions(MOBJECT obj);


**************** Release 1.9.1

* Run time Object options setting with store in the application resource
  file
* New functions:

  - void MEnableCustomizing(void);
  - void MObjectGetShadow(MOBJECT obj, int *shadow, int *i_t, int *o_t);


**************** Release 1.9.2

* Object and system resources handling now works for DOS too.
* MFileSelection() now uses the dir parameter to set the starting directory
  (with optional drive for DOS & Windows).
* <Control+Tab> & <Shift+Tab> now work in GRX version of MGUI.


**************** Release 1.9.3

* Fixed a bug in the SCROLLBAR drawing when the slider size grows.
* Fixed a bug in functions:
	- MImageGetCMapEntry()
	- MImageSetPixelIndex()
	- MImageSetPixelRGB()
	- MImageGetPixelRGB()
* New function (useful for password entry):
	MOBJECT MCreateHiddenEdit(MOBJECT, char *, int, MTFont, char);
* arcs in MDrawArc() and MDrawFilledArc() are now expressed in tenth of
  degrees (range 0-3600).
* New function for deactivating the activated radio button:
	void MRButtonDeactivate(OBJECT *o)


**************** Release 1.9.4

* Fixed a bug in the MFileSelection() multiple filter. Now files are
  inserted in the list only once.
* Fixed a bug occurring when drawing in xor mode (GRX only)
* Desktop background and active window title font/color can now be
  specified in the resource files (DOS versions only)
  
  
**************** Release 1.9.5

* Porting to Watcom Windows, Win32 and DOS/4GW done.
* Fixed a bug occurring when the OPTIONEDIT popup list is closed via
  the ESC key press.
* The Return and Enter keys now generates same effects in all objects.
* Iconifying a window under Windows no longer resizes it to null.
  This is related to a bug in MGUI Designer for Windows, fixed in release
  2.1.1, occurring when a project session with iconified shell windows
  was saved.
* MEditGetSelection(MOBJECT ed, int *start, int *end) now correctly
  returns *start < *end.
* Fixed a bug in retrieving resources (DOS only).
* Fixed a bug in MFormAddKeyCallback() when applied to a SHELL (DOS only).


**************** Release 1.9.6

* Automatic Push buttons mnemonic support.
  By setting the '&' character in the button text, the next character is
  automatically used as an accelerator (using <Ctrl+char>).
  For example, if you set the text "&Quit" as the button text, then
  the string "Quit" is displayed and <Ctrl+Q> is set as accelerator.
  Otherwise, if you set the accelerator key via MPButtonSetAccelerator()
  using <Alt+letter> or <Ctrl+letter> (A_? or C_?) or the letter itself
  (case unsensitive), then the proper character in the button text (if any)
  will be displayed underlined.


**************** Release 1.9.7

* Added support for CGA/EGA/VGA fonts under DOS BGI and 4GW.
  new font file names: pc8x8.mfn, pc8x14.mfn, pc8x16.mfn
* Support for Linux GRX22/svgalib added.
* The LABEL text is now correctly centered even if the label shadow is
  increased.
* Drawing in Xor mode now is correctly handled in Unix X-Window when the
  display works in high or true color mode.
* The OptionEdit list now changes its color according to that set in
  the main edit object (by using MObjectSetColor().
* The list head font now changes when the list font is changed.
* The behaviour of EDIT, LIST and OPTION EDIT objects is slightly changed
  to better conform to other standard GUIs.
* New function:
  void MSListSetPickCallback(MOBJECT obj, LIST_ACT_CB cb, void *value);
  The callback 'cb' is called by the object when a single mouse button
  press/release event occurs.
  This function sets a new callback, so it's possible to set both the
  pick (single mouse click) and the activation (double mouse click or
  Enter key) callbacks.
* The text of Radio and Toggle buttons is now correctly displayed when
  the object is unsensitive and activated.
* The cursor position in the HiddenEdit is no longer locked at x=0,
  unless the hidden char is the null character.
* Fixed a bug in loading large BMP files under Borland BGI DPMI16


**************** Release 2.0.0

* New function:
	void MShellRaise(MOBJECT shell);
	Puts a realized shell on top, deiconifying it if necessary, and
	tansfers the input focus to it.

* MShellRealize() now calls MShellRaise() if the SHELL has been realized
  previously.

* New flags for SHELL creation
	SF_NO_CLOSE             No close button in the title bar
	SF_NO_MAXIMIZE          No maximize button in the title bar
	SF_NO_MINIMIZE          No minimize button in the title bar
	SF_NO_RESIZE            Resize disabled
* Added resource support handling for MENU text (titles and items).
* New scrollbar functions:
	void MScrollBarSetValues(MOBJECT p, long max, long n, long pos);
* Fixed a bug in the MultiLine EDIT under Unix occurring when dealing
  with DOS style text files ('\r' + '\n' as line separator).
* New EDIT functions (work on both single and multi-line):
    void MEditHide(MOBJECT edit, char shown_char);
    void MEditUnhide(MOBJECT edit);
* Added mguisys and ..\mguisys in the searching path for MGUIDIR. They
  are checked for immediately after the MGUIDIR environment variable.
* The return path of MGetCurrentDirectory() now includes the ending
  directory separator in Win32 too.
* Slight changes in the MFileSelection() utility function:
  - the filename is now keeped when changing drive and/or directory
  - a single mouse click now stores the picked name in the filename field
* MGetSelectedObject() now works with the SHELL Object too.
* New functions for getting the object's position relative to parent.
  Shell's position is returned relative to the screen display.
	int MObjectX(MOBJECT obj);
	int MObjectY(MOBJECT obj);
* Fixed a bug occurring when trying to scroll images outside the screen
  (all DOS and Linux/GRX versions).
* New look provided for radio and toggle buttons.
* Revision of the menu API:
  - Support added for displaying a separation line between menu items
  - Toggle and Radio items are introduced
  - Item checking is now automatic (including Radio behaviour)
  - A new prototype is introduced for the item callback to notify
    the item's checking status.
  - The old menu API is fully supported if the OLD_MGUI macro is defined.
  - Naming convention changes:

  PULLDOWN_ITEM	->	MENU_ITEM
  OT_MENU	->	OT_MENUBAR
  OT_PULLDOWN	->	OT_MENU

  MCreatePullDown(menubar, text) -> MCreateMenu(menubar, text)
  MCreateSubPullDown(pd, item)   -> MCreateSubMenu(item)
  MCreatePopupPullDown(font)     -> MCreatePopupMenu(font)
  MPullDownAddItem(pm, t, c, d)  -> MMenuAddItemObsolete(pm, t, c, d)
  MPopupPullDown(pm, x, y)       -> MPopupMenu(pm, x, y)
  MPullDownSetTitleText(pd, text)-> MMenuSetTitleText(pd, text)
  MPullDownSetItemText(pd, item, text) -> MMenuItemSetText(item, text)
  MPullDownSetItemAccel(pd, it, acc, at)->MMenuItemSetAccel(it, acc, at)
  MPullDownSetItemSensitive(pd, item) -> MMenuItemSetSensitive(item)
  MPullDownSetItemUnsensitive(pd, it)-> MMenuItemSetUnsensitive(it)
  MPullDownSetItemSelectCB(p, cb, ad)-> MMenuSetItemSelectCB(p, cb, ad)
  MMenuSetAcc(menu, acc)	     -> MMenuBarSetAcc(menu, acc)
  MPullDownSetItemCallback(pdm, id, cb, ad) -> MMenuItemSetCallback(id, cb, ad)
  MPullDownGetItemText(pd, item) -> MMenuItemGetText(item)
  MPullDownGetTitleText(obj) -> MMenuGetTitleText(obj)
  MSetItemCheckStatus(pd, it, status) -> MMenuItemSetCheckStatus(it, status)
  MGetItemCheckStatus(pd, item) -> MMenuItemGetCheckStatus(item)
  MToggleItemCheckStatus(pd, item) -> MMenuItemToggleCheckStatus(item)
  MDestroyPullDown(pd) -> MDestroyMenu(pd)

  New functions:

  MOBJECT MMenuItemGetMenu(MENU_ITEM item);
  MENU_ITEM MMenuAddItemObsolete(MOBJECT pd, char *it, MGUI_CB cb, void *ad);
  MENU_ITEM MMenuAddRadioItem(MOBJECT pd, char *it, MENU_ITEM_CB cb, void *ad);
  MENU_ITEM MMenuAddToggleItem(MOBJECT pd, char *it, MENU_ITEM_CB cb, void *ad);
  MENU_ITEM MMenuAddSeparator(MOBJECT pd);


**************** Release 2.0.1

* Fixed a bug in Sub-menu positioning.
* Fixed a bug in function MNextEvent() under Windows.
* Added missing function MProcessEvent() under Unix.
* Added function prototype in mgui.h:
	void MShellConfigure(MOBJECT obj, int x, int y, int w, int h);


**************** Release 2.0.2

* Significant bug fixes in MGUI Designer (now release 2.3.1)
* New Functions:
	int MEditListAddItemFromEdits(MOBJECT p, void *u_data);
		Adds an item in the EditList using the values in its
		EditField objects.
	void MEditListGetEditText(MOBJECT p, int n, char *buff);
		Gets the text currently stored in the n-th EditField and
		stores it in the buffer pointed to by 'buff'
	void MEditListSetEditText(MOBJECT p, int n, char *buff);
		Sets the text in the buffer 'buff' in the n-th EditField 
* The 'const' keyword has been added in many 'char *' argument types for
  functions' prototype.
* Fixed a bug in functions MFormGetFirstChild() and MFormGetNextChild().
  Now composite objects are correctly handled.
* Added methods:
	CmObject *getFirstObject(void);
	CmObject *getNextObject(void);
	int	  getNChildren(void);
  in the CmContainer class of the C++ MGUI API
* Added function MSBLGetHead() which retrieves the head text of a SList
  The method getHead() is added to the CmAbsList class.
* Fixed a bug in changing an item's text: now a redrawing occurs.


**************** Release 2.1.0

* Added new object TableForm
* MObjectSetCursor() now works with SHELL objects too.
* Fixed a bug in MSetDefaultBackgroundRGB(). Now the dark shadow is
  60% the brightness of the base color.
* Added functions:
	void MObjectSetWidth(MOBJECT obj, int w);
	void MObjectSetHeight(MOBJECT obj, int h);
	void MTableFormSetRowHeight(MOBJECT form, int row, int h);
	void MTableFormSetColWidth(MOBJECT form, int col, int w);
* Added graphics print support (Windows ONLY) with the following API:
	DOC_ID MOpenPrintDoc(char *doc_name, int open_dialog, int orientation, MPAGE_OPTIONS *pages);
	void MClosePrintDoc(DOC_ID id);
	void MPrintDocNextPage(DOC_ID id);
	void MPrintObject(MOBJECT obj, DOC_ID id, MPRINT_OPTIONS *po);
	void MPrintImage(MIMAGE mpm, int full);
	int MPrintSetup(int orientation, int *xres, int *yres, int *pwidth, int *pheight, int *nplanes);


**************** Release 2.1.1

* Fixed a bug in the TableForm's destroy function.
* Added new function:
  - MObjectAlign(MOBJECT obj, int h_align, int v_align);
	It sets the preferred alignment for non resizable objects when the
	container's size grows. By default the container centers the object in
	a virtual resizeable box.
	If the container is a TableForm then the object is aligned inside
	its cell's boundaries.
	Valid values for h_align (horizontal alignment) are:
	- LEFT_ALIGN
	- RIGHT_ALIGN
	- CENTER_ALIGN
	Valid values for v_align (vertical alignment) are:
	- CENTER_ALIGN
	- TOP_ALIGN
	- BOTTOM_ALIGN
* Fixed a bug in handling popup menus under Windows
* Improved MODAL dialog windows handling under Windows
* Fixed a bug in handling russian bios fonts under BGI.


**************** Release 2.1.2

* Activating a menu item with the accelerator key now closes the menu
  window if was open.
* Fixed a bug in FileSelection dialog due to compatibility problem among
  different glibc versions (LINUX ONLY).
* Menu windows opening no longer add blank buttons in the Windows 95
  taskbar (only Visual C++, RSXNTDJ and LCC-Win32).
