2.1 History

    Please read the history bottom-up. Note that the history might list some
    features that were implemented in beta versions and removed later but are
    still mentioned here. This history is a log of the programmer so that he
    can look up what has been done/tried/modified. Things that were implemented
    and removed later are marked with [VOID].

    Version 1.7   (01-Oct-17)

    - Change: Updated documentation
    - Fix: Area.ContextMenu didn't work with Group objects (reported by Tony Canazza)
    - Fix: Slider.Stringify didn't work for Numericbutton class (reported by Petteri Valli)
    - New: Added Notify.ExportID [ISG]; this can be used to load and save the states of certain MUI
      gadgets like string, radio, cycle, listview, text, etc. (requested by Artur Ostrowski)
    - New: Added Application.Load() and Application.Save() methods to easily load and save the current
      GUI state configuration (requested by Artur Ostrowski)
    - New: Added mui.FreeImage(); this allows you to free an image in MUI Royale's internal image
      cache; you have to pass the number of the brush you want to free or -1 to free all images;
      note that you must make sure that the image you free is no longer used by any widget or MUI
      Royale might crash; note that normally it isn't necessary to call mui.FreeImage() because all
      images are freed automatically when MUI Royale quits; it's only necessary in case you want
      to reuse the same brush number with a new image or free memory used by an image (requested by
      Lazar Zoltan and Petteri Valli)
    - New: Added mui.HaveObject(); this allows you to check whether the specified MUI object exists
      (requested by Tony Canazza)
      
    Version 1.6   (08-May-17)

    - Change: Updated documentation
    - Fix: Virtual groups didn't work inside scrollgroups (reported by Kai Stegemann)

    Version 1.5   (06-May-17)
    - Change: Updated documentation
    - New: Virtgroup class can now also be used outside of groups managed by Scrollgroup
      class (requested by Tony Canazza)
    - Change: About MUI Royale logo is stored with compression now; saves about 80kb in
      the final executable size
    - New: Added support for Numericbutton MUI class; it uses exactly the same attributes
      as Slider class (requested by Petteri Valli)
    - Fix: Button.HiChar and Text.HiChar were documented and implemented as ISG but their
      real applicability is just I (reported by Petteri Valli)
    - Fix: Application.DoubleStart never triggered (reported by Petteri Valli)
    - New: Added Slider.Pressed [N]; this can be used to listen to mouse clicks on the
      slider knob (requested by Tony Canazza)
    - New: Added Area.ShowSelState; this is only interesting for people wishing to do
      advanced stuff with MUI Royale
    - Change: Moved Button.Pressed and Button.Selected attributes to Area class; this
      is necessary for you to make full use of the new Area.InputMode attribute
    - New: Added Area.InputMode [I]; use this with care as typically this is set by the
      individual MUI gadgets themselves so setting an alternate input mode is potentially
      dangerous (requested by Tony Canazza)
    - New: Added Area.BackgroundBrush [IS] (requested by Tony Canazza)
    - New: Hollywood class supports the "VanillaKey" event handler now if Hollywood 7 is
      available; this event handler allows you to listen to Unicode keys
    - New: Added Unicode support if Hollywood 7 is available; of course, AmigaOS doesn't
      support Unicode itself so you'll always be limited to the system charset but at
      least MUI Royale always uses UTF-8 internally now so as soon as AmigaOS or MUI gets
      full Unicode support MUI Royale can support it too
      
    Version 1.4   (25-Sep-16)
    - Change: Updated documentation
    - Fix: Escape sequences are now filtered from the string gadget created by Poplist class
      (reported by Richard Lake)
    - New: Added Listview.AutoLineHeight [I] and Listtree.AutoLineHeight [I]; these are more
      convenient than xxx.MinLineHeight but they require at least MUI 4.0
    - New: Added support for TextEditor.ImportHook and TextEditor.ExportHook (requested by
      Jean-Noel Roueste)
    - New: Added support for MUI's Busy class; this is useful for indicating progress when
      the total processing time is unknown
    - Fix: Memory access fault in mui.Set() under special, rare circumstances
    - New: Added support for MUI's Scrollbar.mui class; this is a subclass of Prop.mui
    - New: mui.Request() supports an additional argument now which allows you to specify an
      icon to be shown in the requester; this is currently only supported with the MUI4
      maintained by Thore Böckelmann (requested by Jean-Noel Roueste)
    - Fix: Wrong virtgroup layout e.g. in Virtual.hws
    - Fix: Crash in Register.AddPage() in case an error occurred
    - Fix: Crash in mui.CreateObject() in case an error occurred while creating the object
    - Fix: Notify on String.Contents didn't work
    - Change: Removed TextEditor.FlushColors() and TextEditor.Pen; these are superfluous now
      because colored text is no longer pen-based
    - Change: TextEditor.SetColor() and TextEditor.Color use TextEditor.mcc's inbuilt RGB text
      mode now which is a much better solution than the previous pen-based approach; as a result,
      TextEditor.mcc 15.47 is now required by MUI Royale!
    - New: Added Listtree.Quiet [S] which can be used to turn off refresh when adding lots of
      items (requested by Richard Lake)
    - New: Register.InsertPage() allows you to insert tabs into arbitrary position (requested by
      Richard Lake)
    - Fix: Listtree.Insert() and Listtree.Rename() didn't support images using the \33A sequence
      (reported by Richard Lake)
    - New: Listtree.MinLineHeight allows you to set a minimum line height for the Listtree object
    - Fix: In some rare cases mui.Set() didn't report a correct error message
    - Fix: Menuitem.Selected, Poppen.RGB, String/Popfile/Popdrawer/Popfont.Contents, String/
      Popfile/Popdrawer/Popfont.Acknowledge notifications didn't set TriggerValue correctly
    - New: Listview.Jump() can handle the special values "Active", "Top", "Bottom", "Up", and
      "Down" now
    - Fix [AROS]: Hollywood class didn't handle satellite bitmap pixel formats correctly; this
      didn't have any practical consequences for Hollywood versions <= 6.0 because of a bug in
      these Hollywood versions; this bug was fixed in Hollywood 6.1, though, and then prevented
      embedded Hollywood displays from working correctly
    - New: Added support for palette-based screens; when calling @REQUIRE and the front-most screen
      is palette-based, MUI Royale will automatically install a display adapter which supports
      palette-based screens; if you want to open Hollywood displays you also need the Plananarama
      plugin and you need to @REQUIRE the Plananarama plugin *before* MUI Royale!

    Version 1.3   (27-Jun-15)
    - Change: Updated documentation
    - Change: Installer automatically integrates the MUI Royale examples into Hollywood 6.0's example
      tree now so that you can conveniently launch them from the Hollywood GUI
    - Fix: Listtree.Remove() didn't remove the nodes and items from MUI Royale's internal object
      collection which meant that you could still access them through mui.Set() and mui.Get()
    - Fix: Listtree.Insert() returns an error now if the id is already used by another object
    - Fix: Listtree.Insert() didn't make new nodes and items available to MUI Royale's internal
      object collection which meant that you couldn't access newly inserted nodes and items using
      mui.Set() and mui.Get() for example to associate user data with them (reported by Richard Lake)
    - Fix: Getting Listviewcolumn.Hidden didn't work correctly when the user manually hid a column
      using the context menu in the listview's title bar (reported by Rüdiger Solbach)
    - Fix: Getting Group.ActivePage no longer returns "First" for the very first page but numeric
      indices for all pages (reported by Lazar Zoltan)
    - Fix: Qualifiers like shift, alt, command... didn't work with Hollywood 6.0 (reported by
      Jörg Renkert)
    - Fix: Memory access fault when calling mui.Request() before mui.CreateGUI() (reported by
      Simone Monsignori)
    - Fix: Listview.GetEntry() didn't make sure that there is enough stack space for storing the
      return values (reported by Lazar Zoltan)
    - Fix: Read from recently freed memory in mui.FreeObject() and when shutting down the application
      (reported by Thore Böckelmann)
    - New: Menuitem.Title supports text formatting codes now if MUI 4.0 is available; please note
      that text formatting codes only work for context menus, not for screen bar menus (requested
      by Richard Lake)
    - New: Added several new functions to deal with string objects: String.Copy(), String.Cut(),
      String.Paste(), String.Insert(), String.Undo(), String.Redo() as well as the attributes
      String.MarkStart [ISG], String.MarkEnd [ISG] and String.CursorPos [SG]; all of these methods
      and attributes require at least MUI 4.0 (suggested by bitRocky)
    - Fix: Area.Hide didn't work correctly with text editor objects that have a slider attached
      (reported by Lazar Zoltan)
    - Fix [Doc]: PopFile.Pattern was wrongly documented as PopFile.InitialPattern (reported by
      Jörg Renkert)
    - Fix [Doc]: Tutorial code contained a bug concerning the way "ShowWindow" and "HideWindow"
      were handled (reported by Damaso Dominguez)
    - Change: Merged code of muiroyale.hwc into the main plugin; muiroyale.hwc is no longer
      necessary now
    - Fix: Setting Group.Title on a group object that hadn't been attached to a register group
      yet caused a crash
    - Fix: Register.AddPage() ran the text formatter again for the register title which led to
      errors in case embedded images were used (reported by Richard Lake)

    Version 1.2   (02-Jul-14)
    - Change: Updated documentation
    - New: Added 4 examples that show how to use the new functions mui.CreateObject() and
      mui.FreeObject() to dynamically create MUI objects at runtime (Dynamic1.hws, Dynamic2.hws,
      Dynamic3.hws, Dynamic4.hws)
    - Change: TextEditor.hws example script now uses TextEditor.Color instead of TextEditor.Pen to
      guarantee a consistent visual experience on all systems
    - Change [OS3]: Now that MUI 3.9 is also available for OS3, MUI Royale will check on startup
      whether 3.9 is installed and will enable all 3.9 features if it is
    - New: Added TextEditor.ColorMap [G] attribute to retrieve the current color map; you need this to
      parse the text returned by TextEditor.Contents
    - New: Added TextEditor.SetColor() method which allows you to change the color of a text block
    - New: TextEditor.SetBold(), TextEditor.SetItalic(), TextEditor.SetUnderline() and TextEditor.SetAlign()
      support the special values "Min" and "Max" now to conveniently specify the minimum and maximum
      positions available
    - New: Added TextEditor.FlushColors() method which can be used to flush the internal pen mapping
      of a text editor object (in case you're running out of pens)
    - New: Added TextEditor.Color which has an applicability of SGN (requested by Marko)
    - New: Added Area.BackgroundRGB and Area.BackgroundImage (requested by Marko)
    - New: Application.ConfigChange allows you to get notified whenever the user changes the MUI
      settings for your application, e.g. moves it to another screen; this is only supported on
      MUI 4 (requested by Jörg Renkert)
    - Change: Window.PubScreen now always returns the name of the screen the window is currently on
      even if it has been set by the user using the MUI preferences (requested by Jörg Renkert)
    - New: Group.Title now has an applicability of ISG and it can also handle text formatting tags
      now, e.g. it is possible to include images in the tab titles now; both features require MUI 4;
      if MUI 4 is unavailable, Group.Title will have the old applicability of just I
    - New: Group.ChildList attribute can be used to get a list of children that are members of
      the group; Group.ChildList returns a table containing as many elements as the group has
      children; each element contains the fields "ID", "Class", and "MUIClass"
    - New: Added Application.WindowList attribute [G]; this will return a table containing a list
      of all windows currently attached to the application object
    - New: mui.IsVersion4() allows you to check whether the user is running MUI 4
    - New: Added Register.Position [I] and Register.Pages [G] attributes; these require MUI 4.0
    - New: Added Register.Closable [I] and Register.CloseRequest [N] attributes; by using these attributes
      you can add a close gadget to the tabs of your Register object and react to the user pressing
      these gadgets; these attributes require MUI 4.0
    - New: Added Register.GetPageID() method which returns the ID of the group object at the specified
      tab index; this method requires MUI 4.0
    - New: Added Register.AddPage() and Register.ClosePage() which allow you to dynamically add and
      remove tabs from a Register object; these two methods require at least MUI 4.0 (requested by
      Richard Lake)
    - New: All Menustrip methods are also available to Menu class now
    - New: Added Menustrip.AddHead() and Menustrip.AddTail() methods to add menu objects to the head
      or tail of a menu
    - New: Added Application.AddWindow() and Application.RemoveWindow() to dynamically add/remove
      windows to/from the Application object
    - New: Added Group.InitChange(), Group.ExitChange(), Group.AddHead(), Group.AddTail(),
      Group.Insert(), and Group.Remove() methods which can be used to insert dynamically created MUI
      objects into an existing group or remove MUI objects from a group and add them to the loose object
      stock; note that you must not call mui.FreeObject() on objects that have been added to a group
      because they will be freed with the group then; mui.FreeObject() must only be called with loose
      objects which have either been created by mui.CreateObject() or removed from an existing object tree;
      note that Group.ExitChange() accepts an additional argument which can be used to specify whether
      or not MUI should force a refresh
    - New: Added support for dynamic creation of MUI objects: you can create MUI objects at runtime
      now using the new mui.CreateObject() and mui.FreeObject() functions; MUI objects created at
      runtime can then be added to existing objects using new methods (see above)
    - New: Added Listview.SortFunc attribute; this allows you to specify a custom callback function
      that will be called whenever your listview requires sorting; this allows you to customize
      listview sorting, e.g. implement reverse alphabetical sorting or other customized criteria;
      your callback needs to return "-1" if entry 1 should be placed before entry 2 or "1" if it
      is to be placed after entry 2; if the two entries are the same, return "0" (requested by
      Richard Lake)
    - Fix [Doc]: ISGN applicability of Slider.Stringify() wasn't documented
    - Fix: Slider.Stringify didn't work with mui.Get()
    - New: Added Listview.Quiet attribute which allows you to temporarily disable listview refresh
      to quickly add/remove multiple items (requested by Richard Lake)

    Version 1.1   (07-May-14)
    - Change: Updated documentation
    - New: VideoPlayer example allows you to switch between antialias interpolation and simple
      scaling
    - Fix: Fixed a bug in the Slider.Stringify; it didn't block Hollywood's refresh server which
      could lead to a deadlock, for example in the VideoPlayer.hws example; this fix requires a
      Hollywood version newer than 5.3
    - New: Added Texteditor.GetText method; this allows you to get the partial contents from
      a text editor gadget (requested by Richard Lake)
    - New: Window.PubScreen allows you to open windows on all public screens; use this only if
      you have good reasons because normally this is something that the user should decide
      (requested by Richard Lake)
    - Fix: Window.Borderless didn't work because MUI Royale enforced a window title (reported by
      Jörg Renkert)
    - New: Popfile, Popdrawer, Popfont, and Poplist classes support the AdvanceOnCR attribute now
      for their string gadgets (requested by Richard Lake)
    - New: Window.ActiveObject can also be used as a notification attribute now (requested by
      Richard Lake)
    - Fix: Application.AboutMUIRoyale() didn't work when MUIRoyale.hwp was in a folder that contained
      spaces (reported by Achim Kern)
    - New: All of the Column class attributes have an applicability of ISG now which means that
      you can also change them during runtime
    - New: Added Listviewcolumn.Hidden attribute which can be used to show/hide single columns;
      this requires at least MUI 3.9 (requested by Richard Lake)
    - New: Added Listview.Rename() method that allows you to rename entries in a listview row
      (requested by Richard Lake)
    - Fix: Listview.Sort() didn't work correctly; it now accepts an additional argument which
      tells according to which column the list view should be sorted (reported by Richard Lake)
    - New: Area.ContextMenu can be used with mui.Set() now to change the context menu of a MUI
      object; to remove the context menu from an object completely, pass the special constant
      "(none)" in mui.Set() (requested by Richard Lake)
    - New [OS4/MorphOS]: Listview.TitleClick allows you to get notified about clicks on the title
      bars of a listview (requested by Richard Lake)
    - Fix [AROS]: MUI Royale uses relative search paths now when looking for TextEditor.mcc and
      TheBar.mcc custom classes (reported by Nigel Tromans)
    - Fix: Area.ContextMenuTrigger didn't set the TriggerValue correctly (reported by Richard Lake)
    - Fix: When using Listview.GetEntry together with "Active" on a Dirlist object in which no entry
      was active, MUI Royale crashed (reported by Richard Lake)
    - New [OS4]: Pixel-exact virtgroup resizing now possible because it is now supported by OS4's
      MUI now, too
    - Fix: "Selected" attribute in class <button> did not work when used with "True" or "False"
      (reported by Matthias Rustler)
    - Fix: Installer didn't work with paths that had spaces in them (reported by Richard Lake)

    Version 1.0   (30-Dec-12)
    - First Release


Show TOC