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 2.2   (24-Aug-24)

- Change: Updated documentation
- New [Android]: HTMLview class also supports JavaScript now (requested by Christos Tsaldaris)
- Change [Android]: The Hollywood Player sets the "usesCleartextTraffic" tag to TRUE now in the Android
  manifest so that RapaGUI's HTMLview class can also open non-HTTPS sites (reported by Paul Bloedel)
- New [macOS]: Added support for the macOS arm64 platform (requested by Philipp Lonke)
- Fix [Amiga]: Hollywood class always reacted on all mouse events outside the Hollywood widget; this was
  inconsistent to the behaviour on other platforms so it has been changed to be consistent with Windows/
  macOS/Linux/Android now; if you really need the old behaviour, there's a new (undocumented) attribute
  Hollywood.Legacy [I] now; if you set this to TRUE, Hollywood widgets on Amiga will behave as in previous
  versions
- New: Added Scrollcanvas.ScrollX [G] and Scrollcanvas.ScrollY [G] attributes; these two attributes allow
  you to get the current position of the scrollbar
- New: Added Area.MouseLeft [N], Area.MouseRight [N], Area.MouseMiddle [N], and Area.MouseMove[N] to get
  notified about raw mouse events over widgets; currently, these attributes are only supported by Image
  and Scrollcanvas class; you can use Area.MouseCapture [ISG] to control whether the mouse should be
  captured while a button is down (requested by Sasha Pont and Yannick Buchy)
- Fix [Windows/macOS/Linux]: Crash on exit when using RapaGUI in display adapter mode
- Fix [Windows/macOS/Linux]: Mouse wheel events were not recognized by Hollywood class and when using the
  plugin as a display adapter (reported by Tony Canazza)
- Fix [Windows]: The Treeview widget sometimes sent Listtree.Active notifications when the app was already
  shutting down
- Fix [Amiga]: Removing menu items at runtime didn't always remove their shortcuts correctly (reported by
  Michael Rupp)
- Fix [Amiga]: Some shortcuts of dynamically added menu items triggered twice (reported by Michael Rupp)
- Change [Amiga]: The "Cmd" identifier in Menuitem.Shortcut is now also mapped to the Amiga key, just like
  the "Ctrl" identifier (suggested by Michael Rupp)
- Fix [Amiga]: Getting Menuitem.Title for menu items that use shortcuts trashed memory and corrupted the
  menu item's title (reported by Michael Rupp)
- Fix [OS3/OS4/AROS]: Added workaround for a bug in codesets.library < 6.22 that could cause crashes due
  to memory access faults; the workaround is only used if codesets.library older than 6.22 is installed
  (reported by Bill Borsari)
- Fix [Amiga]: Passing "Active" as the item parameter in Treeview.GetEntry() often didn't work correctly
  (reported by Leo den Hollander)
- Change [MorphOS]: Added a workaround for a bug in MorphOS' listtree class that caused notifications on
  Listtree.Active to return the wrong items (reported by Enrique Mecklenburg)
- Fix: Listview.DoubleClick notification didn't set the trigger value to the active listview item
- Fix [Windows/macOS/Linux]: Adding objects to a framed group within a pageview caused refresh problems
  (reported by Leo den Hollander)
- Fix [Windows/macOS/Linux]: Group.Append(), Group.Prepend(), and Group.Insert() didn't handle hidden
  widgets correctly (reported by Michael Rupp)
- Fix [Windows]: Relayouting windows, e.g. when showing/hiding widgets, didn't work correctly when the
  window was in minimized state (reported by Michael Rupp)
- New: Added Window.ToFront() and Window.ToBack() methods to move a window to the front or to the back of
  the window stack (requested by Michael Rupp)
- New [Amiga]: Added Window.Zoom [SG] attribute; this can be used to programmatically (un)zoom a window 
  and you can also query the current zoom state; additionally, there are the new attributes Window.AltLeft,
  Window.AltTop, Window.AltWidth, and Window.AltHeight (applicability for them all is IG) that allow you
  to set the alternate dimensions and position for the window when it is in zoomed state (requested by
  Michael Rupp) 
- New: Added Window.Move [N] attribute; you can use this attribute to get notified whenever the user moves
  a window
- New: Added Window.Minimize [SGN] attribute; this allows you to programmatically minimize (iconify) your
  window or restore it from minimized state (requested by Michael Rupp)
- New [Windows/macOS/Linux]: Added Window.Maximize [SGN] attribute; this allows you to programmatically
  (de)maximize a window, query the maximize state and get notified when a window is maximized
- Fix: Instead of actual coordinates, getting Window.Left and Window.Top sometimes resulted in special
  constants like "Centered" or "Moused" being returned
- New: The Window.Left, Window.Top, Window.Width, and Window.Height attributes can now also be set so the
  applicability of them is ISG now; note that if you set those attributes, you must always specify a
  numeric value; the special values like "Centered" are only supported at initialization time (requested
  by Valerio Giolitto and Michael Rupp)
- Fix [Amiga]: Dialog.ShowModal() didn't work correctly on non-RTG screen without Plananarama (reported by
  Christos Tsaldaris and Dimitris Panokostas)
- Change [Amiga]: Scrollcanvas class drawing is more efficient now which should prevent flickering when
  the window is resized on systems that support live resizing like MorphOS and AmigaOS 4

Version 2.1   (24-Oct-21)
- Change: Updated documentation
- Fix [macOS/PPC]: Setting Listviewcolumn.Hidden didn't hide the listview column (reported by Michael Rupp)
- Fix [macOS]: Listview.DoubleClick is no longer generated for double clicks on the listview header when
  in dataview mode (reported by Dave C.)
- Fix: Dynamically adding and removing widgets from scrollgroups didn't work; note that when adding new
  widgets to a scrollgroup, you need to pass the scrollgroup as the parent to moai.CreateObject()
  (reported by Sasha Pont)
- Fix [Amiga]: Dialog.EndModal() led to a memory leak when called from the event handler of one of the
  dialog's children, e.g. a button (reported by Michael Rupp)
- Change [Amiga]: For consistency with the other platforms, underline shortcuts are also supported for Text
  class on Amiga systems now (requested by Michael Rupp)
- Fix [Amiga]: Sliders couldn't be controlled via keyboard shortcuts (reported by Michael Rupp)
- Fix [Windows/macOS/Linux]: StringRequest() didn't support the #NUMERICAL mode (reported by Michael Rupp)
- Fix [Windows/macOS/Linux]: Setting Hyperlink.URL didn't automatically update the label in case no custom
  label was set (reported by Michael Rupp)
- Fix [Windows/macOS/Linux]: Group.Remove() didn't work correctly for colgroups (reported by Michael Rupp)
- Fix: moai.CreateObject() didn't accept framed colgroups as the parent (reported by Michael Rupp)
- Fix: Escape sequences like \n and \t weren't converted to the correct character code when the MOAI.I18N
  attribute was set (reported by Michael Rupp)
- Fix [Amiga]: Hollywood versions 7.x and 8.0 crashed when trying to load RapaGUI 2.0 when the script
  was requesting ISO 8859-1 mode (reported by Petteri Valli)
- Fix [Linux]: Setting Popfile.File didn't show the new path in the widget (reported by OffseT)
- Fix [Android]: Textview.Text returned an empty string on Android if Textview.Styled was set to FALSE
  (reported by Petteri Valli)
  
Version 2.0   (17-Jul-21)
- Change: Updated documentation
- New [Examples]: Added ContextMenu, Dynamic5, Fonts, Localization, Sort, Splitter and Weight examples to
  show and test some new features of RapaGUI 2.0
- Change [Examples]: Made most examples DPI-aware by setting Hollywood 9's new "DPIAware" tag to TRUE in
  the @OPTIONS preprocessor command
- Change [Doc]: Applicability is now clickable so that beginners can get a better idea of what it's about
  (requested by Michael Rupp)
- Change: Amiga installer will now also copy the plugins for all platforms to Hollywood's linker plugins
  directory so that they can be easily linked to executables (suggested by kas1e)  
- Change [macOS]: Dropped support for the 32-bit x86 platform; since RapaGUI on Intel Macs requires macOS
  10.10 now it isn't possible to support 32-bit x86 any more because 10.10 doesn't even run on 32-bit x86
  Macs at all
- New: Listview.First has an applicability of SG now (requested by Michael Rupp)  
- Fix [Windows/macOS/Linux/Android]: Group.HorizSpacing now defaults to 4 like on AmigaOS (reported by
  Michael Rupp)  
- Fix [Windows]: Ampersands weren't correctly handled in text class in case Text.Frame was set to FALSE
  (reported by Michael Rupp)
- Fix [Amiga]: Group class handled Group.Padding even when Group.Frame was set to FALSE (reported by
  Michael Rupp)
- Fix [Amiga]: Horizontal rows of buttons weren't layouted correctly in case one or more of them had a
  fixed width or a different weight setting than the others (reported by Michael Rupp)  
- Fix [Windows]: Window.ActiveObject didn't return the correct object in case a listview in dataview mode
  was the active object (reported by Michael Rupp)
- New: Listview.GetEntry() accepts an optional argument now; if this is set to TRUE, Listview.GetEntry()
  will also return the identifier of the brush/icon used for a listview item or -1 if no brush/icon has
  been set for this item; note that the identifier is only returned for columns that have the "Icon" tag
  set to TRUE (requested by Michael Rupp)
- Fix: moai.FreeObject() couldn't free menu objects that had previously been attached as a context menu  
  (reported by Thomas Igracki)
- Change: Area.ContextMenu has an applicability of ISGN now; this means that you can now also set up a
  notification on the attribute; in that case, your event handler will be called immediately before
  RapaGUI shows the context menu; you can then return either FALSE for no context menu or use moai.Set()
  to set the desired context menu to show; this is very useful for customizing the context menu depending
  on where the right mouse button has been clicked; the position will be passed to your event handler; in
  case you are listening to Area.ContextMenu, your event handler will also be passed some additional
  information depending on the context menu's parent widget: for listview widgets, RapaGUI will pass the
  row and column of the item below the mouse pointer; for treeview widgets RapaGUI will pass the id of the
  item below the mouse pointer and for texteditor widgets, the cursor position below the mouse pointer
  will be passed
- Change: The "Sorted" special position identifier for Listview.Insert() is obsolete now; when a listview
  has a column that is used for sorting, all new entries are automatically sort-inserted and the insert
  position is ignored; also, Listview.Move() and Listview.Exchange() can no longer be used for listviews
  that have a sorting column because the order of elements in a listview that has sorting activated is
  solely determined by the sort order and items cannot be positioned at arbitrary indices
- New: Added Listviewcolumn.SortOrder [ISGN] attribute; this can be used to set the sorting order of a
  listview column; it can be set to either "Ascending" (the default) or "Descending"; furthermore, you can
  also listen to this attribute to get notified when the user changes the sorting order by clicking a
  listview column's header
- New: Added Listview.SortColumn [ISGN] attribute; this attribute allows you to set which column should be
  the current sorting column; users can also click on the listview's header to change the current sorting
  column in which case you'll be notified in case you are listening to Listview.SortColumn
- Change: Listviewcolumn.Sortable is no longer restricted to just a single column; you can set it to TRUE
  for as many columns as you wish  
- Fix [Windows/macOS/Linux]: Sortable listviews in dataview mode didn't really work correctly; the item's
  indices were returned and handled in the completely wrong order  
- New: Added Listview.GetColumnID() to find out the identifier of a listview column  
- Change: Listviewcolumn.Icon, Listviewcolumn.Checkbox, and Listviewcolumn.Editable have an applicability
  of IG now instead of just I  
- New: Added Listview.Columns [G] attribute to query the number of columns in a listview  
- New: Added Listview.InsertColumn() and Listview.RemoveColumn() methods to dynamically insert and remove
  listview columns; it's no longer necessary to re-create the whole listview when you need to change its
  number of columns; note that these methods are only available "Listview" and "Dataview" mode; the default
  "Listbox" mode doesn't support multiple columns so you might have to explicitly set Listview.ForceMode
  if you want to add and remove columns on-the-fly
- Fix [Windows/macOS/Linux]: Setting Area.Hide to TRUE didn't hide the horizontal/vertical spacing applied
  by the parent group object (reported by Michael Rupp)
- Fix [Windows]: Area.Tooltip didn't work with Listview and Treeview in dataview mode (reported by Anbjorn
  Myren)  
- Fix [Amiga]: Setting XXX.DropTarget multiple times caused a crash (reported by Paul Bloedel)  
- New: Added Treeview.ClickColumn [GN] attribute; this works in the same way as Listview.ClickColumn and
  can be used to find out the column that the user has last clicked  
- Fix [Windows/macOS/Linux]: Area.ContextMenu didn't work with Treeview class when Treeview.ForceMode was
  set to "Dataview" and with Listview class when Listview.ForceMode was set to "Dataview"; note that
  "Dataview" is also automatically chosen by RapaGUI in case certain features require it, e.g. multiple
  columns in a TreeView widget will automatically activate dataview mode (reported by Thomas Scheller)   
- Fix [macOS]: Listviewcolumn.Hidden didn't work (reported by Michael Rupp)  
- New: Added Radio.GetItem() and Radio.SetItem() methods; these methods can be used to get and set the
  labels of individual radio buttons 
- New: Added Radio.Columns [I] attribute; this allows you to set the number of columns to use when laying
  out the radio buttons (defaults to 1); note that on Android, you cannot have complex radio layouts that
  use columns and rows; you can either have all radio buttons appear in one row (horizontal layout) or in
  one column (vertical layout) (requested by Sandro Barbagelata)
- Change [Windows/macOS/Linux]: The default step size for Slider class is 1 instead of 10 now so that
  Windows/macOS/Linux are consistent with MUI; you can use the new Slider.StepSize attribute to set a
  different step size (reported by Michael Rupp)  
- New [Windows/macOS/Linux]: Added Slider.StepSize [ISG] attribute; this can be used to set the step size
  to use when clicking outside the thumb (requested by Michael Rupp)
- New: Added Slider.Drag [I] notification; this will trigger whenever the user starts to drag a slider's
  thumb; this is the counterpart to the Slider.Release [I] notification (requested by Michael Rupp)
- New [macOS]: Added Application.WindowMenu [I] attribute; this attribute allows you to set the title of
  macOS' standard window menu to a custom one (requested by Michael Rupp)
- New [macOS]: Added new types "About", "Quit", "Help", "Preferences" to the Menuitem.Type attribute; by
  setting a menu item to one of these types, RapaGUI will move it to its appropriate position according to
  the host OS' styleguide (e.g. the "About", "Preferences", and "Quit" menus are part of the program menu
  on macOS); on non-macOS systems, those new types don't have any effect and RapaGUI will just ignore them;
  there's also Menu.Type which can be set to "Help" on macOS to set a menu as the standard help menu
  (requested by Michael Rupp)
- Change [Amiga]: Pageview.PlainBG defaults to TRUE now if Pageview.Mode has been set to "None"; this is
  for consistency with the Windows/Linux/macOS appearance (requested by Michael Rupp)
- New: Radio.Title also has an applicability of ISG now instead of I; the same restrictions as with
  Group.FrameTitle apply (requested by Sandro Barbagelata)
- New: Group.FrameTitle has an applicability of ISG now instead of I; this allows you to change a group's
  frame title anytime; note that this requires a newer MUI version; with MUI 3.8, Area.FrameTitle is only
  I (requested by Michael Rupp)
- New: Added Textentry.ReadOnly [I]; if this is set to TRUE, the text in the widget won't be editable at all
  (requested by Michael Rupp)
- Fix [macOS]: Combobox.Value didn't trigger when selecting an entry of the pre-defined list of entries  
- Fix [macOS]: Listview.AbortEditing and Treeview.AbortEditing were never triggered when aborting editing
- Fix [macOS]: Text in Listview and Treeview columns could get cut off when using columns that automatically
  adapt their width to the largest entry
- Fix [macOS]: Single column listviews often showed a scrollbar when there was nothing to scroll at all  
- New: Added Listview.RowHeight [I] attribute; this allows you to set the row height; this is normally not
  necessary because it is calculated automatically but when using icons in "DataView" mode on Windows and
  macOS it might be necessary to set this attribute because otherwise the icons could get cut off
- Fix [Windows/macOS/Linux]: Crash when calling Area.Redraw() on widgets that can't be drawn like widgets
  of Rectangle class (reported by Samuel Crow)
- Fix [Windows/macOS/Linux]: Treeviewleaf.SetItem() was only able to change the text of items in the first
  column (reported by Sandro Barbagelata)  
- Change: Toolbar.ViewMode defaults to "Gfx" now because this is the standard toolbar look  
- New: Added Window.SizeChange [N] attribute; this allows you to listen to window size changes; whenever
  the event callback is triggered, the "Width" and "Height" member fields will contain the new window size
  (requested by Lazar Zoltan)
- Fix [Windows/macOS/Linux]: When changing the size of a Hollywood widget that was embedded inside a widget
  of type Scrollgroup, the scrollgroup's size was reset to its minimum size (reported by Petr Kaderka)
- Fix [Windows/macOS/Linux]: When listening to Window.Activate, the "TriggerValue" message member was
  always set to TRUE
- Fix [Windows/macOS/Linux]: Listview.Insert() in modes "Listview" and "Dataview" wasn't entirely consisted
  with the Amiga version when inserting entries before the active entry, causing the active entry to be
  shifted down
- New: Hollywood class supports Hollywood's SetPointer(), HidePointer(), ShowPointer(), and MovePointer()
  functions now; this allows you to change the mouse pointer that should be shown when the mouse is over
  a widget of type Hollywood class (requested by Paul Bloedel)  
- New [Windows]: Added Listview.SystemTheme [I] attribute; this can be used to enable the Windows system
  theme for a listview control by setting it to TRUE (default is FALSE); note that this is only supported
  case the listview is operating in "Listview" mode (see Listview.ForceMode for details)  
- New [Windows/macOS/Linux]: Added Application.ContextMenu [I] attribute; this new attribute can be used to
  install a context menu for the application's tray icon; obviously, this will only work if you also use
  SetTrayIcon()
- New [Windows/macOS/Linux]: RapaGUI also supports Hollywood's SetTrayIcon() function now which can be used
  to install an icon in the system tray for your app; in contrast to Hollywood's SetTrayIcon() function,
  RapaGUI's one will also work on macOS and Linux (only if the Linux window manager supports the "System
  Tray Protocol") (requested by Paul Bloedel)
- New: Added Combobox.Popup [N] attribute; this will trigger whenever the combobox's list popup is opened
  or closed; the "TriggerValue" message member will contain the current state of the popup list (either
  TRUE or FALSE) (requested by Paul Bloedel)
- New: Added Combobox.Acknowledge [N] attribute; this will trigger whenever the user presses RETURN in the
  string widget that is part of the combobox (requested by Paul Bloedel)
- New: Added Combobox.Selected [N] attribute; this will trigger whenever the user selects an item from the
  combobox list (requested by Paul Bloedel)
- Fix [Android]: Combobox.Value event handler didn't work  
- New [Android]: Pinch view zooming is now supported for HTMLview class (requested by Paul Bloedel)  
- New: HTMLview.Search() returns a boolean now indicating whether or not the search term was actually found
  (requested by Paul Bloedel)  
- New: Added moai.UpdateImage(); this can be used to update the graphics of an image; note that this is
  currently only supported for images inside Listview or Treeview objects; after calling moai.UpdateImage()
  you also have to make sure that rows that use the image are redrawn, e.g. by using Listview.Rename() to
  update the image information in a row (requested by Jrg Renkert)
- Fix [Amiga]: Pageview widgets weren't in the TAB cycle chain (reported by Thomas Igracki)  
- New [Amiga]: When Text.Frame is set to TRUE, the text inside the text object will be markable; note that
  this requires MUI 4.0 (requested by Ulrich Beckers)
- Fix [Amiga]: Percentage info text wasn't correct in case Progressbar.Max was set to something different
  to 100 (reported by Thomas Igracki)
- Fix [Amiga]: The scale below the progress bar didn't appear in case Progressbar.Max was set to a value
  not equal to 100 (reported by Thomas Igracki)
- Fix [Amiga]: Area.Hide didn't work correctly on Progressbar widgets when used in the XML file (reported
  by Thomas Igracki)
- New: Added convenient internationalization support; all tags that accept a string argument also accept
  a new "i18n" attribute now that allows you to specify a catalog string index that should be used if a
  catalog for the user's system language is available; the string index can either be an absolute numeric
  value or a Hollywood constant; for locale-dependent strings that are passed in tag attributes you can
  use the new "@i18n:" suffix in the string; just append this suffix to the string, followed by a numeric
  value or a Hollywood constant and Hollywood will use the specified catalog string instead if there's a
  catalog for the user's system language available; note that all these internationalization features only
  apply to the XML; all changes that are made at runtime need to be handled manually; also note that it
  will obviously only work if there's an open catalog loaded either via the OpenCatalog() command or via
  the @CATALOG preprocessor command (requested by Sandro Barbagelata)
- Fix [Android]: Texteditor.Text didn't correctly return the escape sequence for resetting the color back
  to its default when part of a text was colored (reported by Paul Bloedel)
- Fix [Android]: Colgroup rows sometimes got cut off (reported by Lazar Zoltan)
- Fix [Android]: Textentry.Acknowledge didn't trigger on Android (reported by Dick Valk)
- New: Added Hyperlink class; this can be used to embed clickable links in your GUIs; note that on Amiga
  this requires Hyperlink.mcc which is part of MUI on MorphOS and MUI 4.0 but it's not part of MUI 3.8
  (requested by Sasha Pont)
- New: Added "HideDisplays" tag to @REQUIRE; if you set this to FALSE, RapaGUI won't hide all Hollywood
  displays automatically on startup; this can be useful when using RapaGUI in Hollywood emulation mode,
  i.e. without using any of RapaGUI's GUI functionality but just to get some features that Hollywood does
  not support by default on some platforms (e.g. menus on Linux, or inter-process communication on Linux
  and macOS)
- New: RapaGUI now supports inter-process communication via Hollywood's CreatePort() and SendMessage()
  functions; this is especially useful on macOS and Linux where Hollywood doesn't have inbuilt IPC support
  yet; you can just use RapaGUI now to workaround this Hollywood limit
- Fix [Amiga]: Window.ActiveObject couldn't be obtained for some widgets like comboboxes, pop objects,
  checkboxes, etc. (reported by Nick S.)
- Fix: Window.ActiveObject sometimes returned trash (reported by Nick S.)
- Fix [Amiga]: Context menus didn't work when used on Treeview widgets (reported by Michael Suther)
- New: RapaGUI now also supports menus attached to normal Hollywood displays using the menu library that
  is part of Hollywood; this can be very useful on Linux because Hollywood doesn't support menus on Linux
  because it is a purely X11 application on Linux; by using RapaGUI, however, your app will be turned into
  a GTK application and GTK apps support menus of course so this is an easy and convenient way to get menu
  support on Linux too! (requested by Juan Carlos Herran Martin)
- New: Added Window.Remember attribute [I]; if this is set to TRUE, the window will remember its position
  and size when the program is restarted (or when dialogs are destroyed and re-created); note that this
  is only possible for windows/dialogs that have an ID; the ID is used to memorize the window's position
  and size in order to restore it later so keep in mind that if you change the window's ID the settings
  will get lost (or they will be transferred to another window in case you re-use an ID previously used
  for a certain window for a new window); also note that this attribute defaults to TRUE on Amiga systems
  because the standard MUI behaviour is to always remember positions; on all other systems it defaults
  to FALSE
- New: Added support for splitter groups; splitter groups can be used to make GUI layouts more dynamic;
  RapaGUI supports <hsplitter> for horizontal splitter groups and <vsplitter> for vertical ones; splitter
  groups must always contain two widgets which will be separated by a sash allowing the user to configure
  the size of both widgets; there are also some attributes to fine-tune the behaviour of splitter groups
- Fix [MorphOS]: Memory leak when creating a Textentry widget without any initial contents
- New: Added Area.FontName [ISG], Area.FontSize [ISG], and Area.FontStyle [ISG]; these can be used to set
  the font family, size, and style to be used by a widget; note that although these are area attributes,
  they are not supported by all widgets; it depends on what the native widgets of the platform RapaGUI is
  running on actually support; e.g. on AmigaOS, Area.FontName and Area.FontSize have an applicability of
  just IG, meaning you can't change the font family and font size attributes after creation because MUI
  doesn't support that; also note that font sizes are always in points and not in pixels so that they can
  automatically adapt to higher DPI displays (requested by Paul Bloedel)
- Change [Windows/macOS/Linux/Android]: Area.Weight is now handled better; it's still not completely the
  same as with MUI but we're pretty close now which should be sufficient for most cases; note that when
  setting Area.Weight you normally shouldn't set specific dimensions via Area.Width/Height; these should
  be determined by the Area.Weight setting
- Fix: Context menus didn't work when they were attached to objects that were created dynamically using
  moai.CreateObject()
- Fix [Amiga]: Nested context menu items triggered twice (reported by Paul Bloedel)
- Fix [Windows/macOS/Linux]: Setting Area.ContextMenu didn't work correctly for context menu which hadn't
  been initialized yet (reported by Jrg Renkert)
- Fix: Plugin is now de-initialized correctly in the rare case that it is loaded several times from
  different locations (reported by Petteri Valli)
- New [Amiga]: Listview.Alternate [I] and Treeview.Alternate [I] are now also supported on Amiga systems;
  requires MUI 5.0; note that you might have to enable the stripes effect in the MUI preferences first
  (requested by Richard Lake)
- Fix [Amiga]: Texteditor.NoWrap didn't show a horizontal scrollbar; since this is now supported by
  TextEditor.mcc, RapaGUI now requires TextEditor.mcc 15.53 in case you want to use Texteditor class
  (reported by Lazar Zoltan)
- Fix [Windows/macOS/Linux]: Listview sorting didn't always work correctly for non-ISO-8859-1 languages
  (reported by Petr Kaderka)
- Fix [Windows/macOS/Linux/Android]: Sorted insert in listview and dataview mode is case-insensitive
  now just like in the Amiga versions of RapaGUI
- Fix [Windows]: Sorted insert didn't work when a listview was in listbox mode
- New: FileRequest() supports extended filters introduced with Hollywood 9.0 now
- Change: RapaGUI requires at least Hollywood 9.0 now
- New: Dropped multi-threaded core and replaced it with a single-threaded one which runs all event
  callbacks instantly; e.g. when setting Listview.Active, the notification callback defined for
  Listview.Active will be run right when setting Listview.Active using moai.Set() instead of at the
  next time WaitEvent() is called; this instant event handling might break some scripts which depend
  on the behaviour of the old asynchronous event dispatcher but the API break was necessary for some
  exciting upcoming features and dispatching events instantly is also much cleaner than the previous
  asynchronous event dispatcher
- Fix [Windows/macOS/Linux]: Listening to Listview.StartEditing led to a memory access fault
- Change: Since modal event loops are no longer supported by RapaGUI, the plugin now disables all
  Hollywood functions which attempt to start a modal event loop, e.g. WaitLeftMouse(), WaitSampleEnd(),
  InKeyStr(), etc.; these can't be used together with RapaGUI any longer
- Change: All RapaGUI projects must use WaitEvent() now; it's no longer acceptable to implement custom
  event handling using CheckEvent() or CheckEvents(); routing normal Hollywood scripts through RapaGUI
  will only work if they use WaitEvent() too
- Change [Examples]: Updated Dialogs.hws example to use RunCallback() instead of a dialog function
- Change: Dialog.ShowModal() no longer supports dialog functions; if you want to open a dialog that
  doesn't block your script, you now have to set Window.Open to TRUE for the dialog (and possibly
  Application.Sleep to TRUE too) and then you can implement the dialog's actual behaviour by repeatedly
  calling a management function either using SetTimeout() or Hollywood 9.0's new RunCallback() function;
  take a look at the updated Dialogs example for a reference implementation
- Fix: Getting Listviewcolumn.Width didn't work (reported by Sasha Pont)
- New: Added support for Finddialog class; this can be used to show the system's standard find dialog;
  the following attributes are supported: Finddialog.Open, Finddialog.ReplaceMode, Finddialog.NoUpDown,
  FindDialog.NoMatchCase, Finddialog.NoWholeWorld, Finddialog.FindString, Finddialog.ReplaceString, 
  Finddialog.Down, Finddialog.MatchCase, Finddialog.WholeWord, Finddialog.Find, Finddialog.FindNext,
  Finddialog.Replace, Finddialog.ReplaceAll; note that the system find dialog must always be modeless
  so you must use Finddialog.Open to show it and not Dialog.ShowModal(); also note that Finddialog class
  is currently not supported on AmigaOS and Android
- New: Added support for online help; Application.HelpFile [ISG] can be used to set a help file for the
  application; on Windows this should point to a CHM file, on Amiga to an AmigaGuide file and on all
  other platforms to a directory which contains all HTML files belonging to the documentation (the
  main file must be called index.html, the index file must be called findex.html) help file; you can then
  use Application.ShowHelp() and Application.ShowHelpNode() to show the online help; note that this is
  not supported on Android
- Change: The behaviour of TextEditor.HasChanged is now defined more precisely: it is not triggered
  when setting TextEditor.Text any more (this is an API change!) and it's also not triggered when
  calling TextEditor.Clear(); instead, those two will cause TextEditor.HasChanged to be set to FALSE
  again, i.e. unmodified; you can also do this manually now, i.e. TextEditor.HasChanged has an
  applicability of SGN now but when setting it, you should always set it to FALSE
- New: Added TextEditor.ScrollToLine() to scroll the specified line into view
- New: Added TextEditor.GetLineLength() to get a line's length (without any trailing line break or
  carriage return characters)
- New: Added TextEditor.GetPosition() to get the index position from row and column values; -1 is
  returned in case the position is out of range
- Fix: TextEditor.GetXY() returns -1 now for both values in case an invalid position was specified
- Fix [Windows/macOS/Linux]: Using the special button string "Cancel" didn't return the correct
  result when it was pressed when using moai.Request() and SystemRequest()
- New: Added Textview.Append() method to append text to the existing text in the view; on AmigaOS
  this requires at least MUI 4.0
- Fix: Setting/getting Group.Title and Group.Icon didn't work for pages that had been dynamically
  added to a pageview using one of the append/prepend/insert page methods
- Change: It is now allowed to create empty <pageview> objects and add pages later
- Change: RapaGUI requires Hollywood 9.0 now because it uses several interfaces only available in
  Hollywood 9 and better
- Change [Amiga]: Optimized main loop for faster event handling
- Change [Examples]: Updated Image example to use a Hollywood 9 image now
- Change [Examples]: Scrollbar example now checks if scrollbar position has changed before drawing;
  this improves performance on slower systems, especially on Android
- New [AROS]: Enabled image support since this is now supported by Zune; requires muimaster.library
  v19.52 or better (reported by Neil Cafferkey)
- New [Android]: Added Window.Orientation [ISGN]; this tag allows you to set the orientation for the
  respective window; this can be either "Device" to keep what is the current device orientation or
  "Portrait" or "Landscape"; you can also set up a notification on this attribute to get notified
  about orientation changes
- New [Android]: Added Listview.ItemStyle [I] tag; this tag allows you to configure the appearance
  of listview items on Android; possible values are "Default", "Normal", and "Big"; the "Normal"
  mode corresponds to android.R.layout.simple_list_item_1 and the "Big" mode corresponds to
  android.R.layout.simple_expandable_list_item_1
- New [Android]: Added Listview.LongClick [N] tag; this notification will be triggered whenever the
  user long clicks a listview item
- New: Added Scrollcanvas.AutoScale [I] tag; this does the same as Scrollbar.AutoScale but for widgets
  of Scrollcanvas class
- New: Added Scrollbar.AutoScale [I] tag; if this is set to FALSE, all values set in Scrollbar.Level,
  Scrollbar.Range, Scrollbar.StepSize, and Scrollbar.Visible are interpreted as raw pixels; if the
  tag is set to TRUE, they are interpreted as density-independent pixels; the default of this tag
  is what has been set to the "ScaleGUI" tag on @REQUIRE (defaults to TRUE)
- New [Android]: Added Window.NoCyclerMenu [I]; if this tag is set to TRUE, RapaGUI won't add a menu
  that allows you to cycle between all open windows automatically; this is useful if you'd like to
  manage window cycling manually
- New [Windows/macOS/Linux]: Core model has been completely rewritten and uses a thread-based design
  now; this is much cleaner than the old design and solves several glitches (especially on macOS
  and Linux) that could appear with the old core which was quite hackish anyway [VOID]
- New: Added Texteditor.Hint [ISG] attribute; this does the same as Textentry.Hint but for RapaGUI's
  Texteditor class; on AmigaOS this requires at least TextEditor 15.51
- New: Added Textentry.Hint [ISG] attribute; this allows you to set hints to be displayed when the
  widget is empty; note that on Amiga platforms this requires MUI 5 from muidev.de; on MorphOS it
  requires MorphOS 3.12
- Change: Adapted the Demo, SongPlayer, TextEditor, HTMLview, and VideoPlayer examples for high dpi
  systems; thanks to Martin "Mason" Merz for the hires icons; they look stunning on high resolutions!
- New: Scrollcanvas also supports high dpi monitors now; by default, the dimensions you specify in
  Scrollcanvas.VirtWidth/Height are in density-independent pixels and RapaGUI will automatically
  apply the system's scale factor to the contents drawn by the paint function; if you want to have
  fine-tuned control, you can set the new Scrollcanvas.AutoScale [I] tag to FALSE; in that case,
  Scrollcanvas.VirtWidth/Height are interpreted as pixels and no auto scaling will be performed so
  that your paint function can draw high resolutions graphics without any quality loss due to
  scaling  
- New: Application.AboutRapaGUI() also uses high resolution graphics on high dpi monitors now 
- Change: moai.FreeImage() accepts an optional parameter now that can be used to tell RapaGUI if
  the function should free a brush (the default) or an icon image
- New: All widgets that support brushes also support Hollywood icons now which were introduced in
  Hollywood 8; the advantage of Hollywood icons is that an icon can contain image data in several
  sizes; this is perfect for adding separate image data for high dpi systems because separate image
  data in a higher resolution of course looks better than scaling low-res graphics; in addition to
  that, Hollywood icons can also use vector graphics in order to be freely scalable; to use Hollywood
  icons in RapaGUI you can either set the new Application.UseIcons [I] tag to TRUE to globally make
  Hollywood icons the default image type instead of brushes; alternatively, you can also configure
  the desired image type individually for each of RapaGUI's widgets by using the following new tags:
  Group.IconType [I], Button.IconType [I], Listviewcolumn.IconType [I], Treeviewcolumn.IconType [I],
  Image.BrushType [I], Toolbarbutton.IconType [I]
- New: All Hollywood displays will automatically be put into Hollywood 8's new "SystemScale" mode now
  which means that they will appear in the correct size even on monitors with a higher dpi setting;
  you can disable this behaviour by setting the new "ScaleHollywood" tag to FALSE when @REQUIREing
  RapaGUI; bilinear interpolation is disabled by default but can be enabled from @REQUIRE by setting
  the new "InterpolateHollywood" tag to TRUE; NB: on Android bilinear interpolation is enabled by
  default because RapaGUI uses hardware-accelerated scaling on Android
- New: RapaGUI will now automatically scale all brushes that are used by widgets (e.g. button images,
  listview icons, etc.) by the host system's content scale factor so that GUI designs look correct
  on systems with a high dpi as well; you can disable this behaviour by setting the new "ScaleGUI"
  tag to FALSE when @REQUIREing RapaGUI; bilinear interpolation is enabled by default but can also
  be disabled from @REQUIRE by setting the "InterpolateGUI" tag to FALSE; automatic scaling of
  UI graphics can also be locally disabled or enabled for certain widgets by using the following
  new tags: Button.IconScale [I], Listviewcolumn.IconScale [I], Treeviewcolumn.IconScale [I],
  Image.BrushScale [I], Toolbarbutton.IconScale [I], Group.IconScale [I]
- New: Added support for high dpi systems; all position and size values are now expected to be in
  density-independent pixels (dip/dp) instead of pixels (px); using pixel values for GUI layouts
  really doesn't make much sense because the user can have an arbitrary scale factor applied to his
  user interface setting; this is especially so on systems whose monitors use a high dpi (e.g.
  4K monitors or Retina systems on the Mac)
- Fix [Windows/macOS/Linux]: Combobox.Value didn't work at initialization time
- Fix [Windows/macOS/Linux]: Textview.Text and Group.Title were falsely handled as texts that could
  contain a keyboard shortcut; the underscore character is now ignored as it should be
- Fix [Windows/macOS/Linux]: Setting Label.Text didn't correctly handle the underscore character
- Change [Examples]: The "Dialogs" examples sets Button.Hint for its dialog buttons now which gives
  it a better look on Android systems
- New [Android]: Added Button.Hint [I]; this allows you to give RapaGUI a hint whether the button is
  the positive, negative, or neutral one in a dialog; this is currently only used in dialogs on
  Android; if you set it for your dialog buttons, RapaGUI will use Android's system dialog buttons
  instead which makes your dialog look more native
- Fix: TextEditor.Color didn't work at all
- Fix [Linux/macOS, 64bit only]: TextEditor.GetSelection() didn't return correct values
- Change [Examples]: All examples declare the GUI's XML file in a @FILE statement now; this will
  automatically link the XML into the applet when compiling the script which makes it easier to test
  the RapaGUI examples on Android
- New [Android/Amiga]: Added Window.Borderless [I] attribute; if this is set, the window won't have
  any border; on Android this means that the action bar won't be shown
- New [Android]: Added Window.Subtitle [ISG]; this allows you to set a string to be shown as the
  action bar's subtitle
- Fix [Windows/macOS/Linux]: Menu.Remove() didn't scan for the item to be removed recursively like
  it is done in the Amiga version
- New [Android]: Added Window.SingleMenu [I]; if this attribute is set to TRUE, only the first menu
  of the menu bar is used and its items will be shown directly when pressing the options button in
  the action bar
- Fix [Windows/macOS/Linux]: Listview.Move() no longer activates the wrong entry when moving entries
- Change [Windows/MacOS/Linux]: Listview.Exchange() no longer scrolls the second item into view
- Fix [Windows/macOS/Linux]: Setting Listview.Active to an item that was already active triggered
  another Listview.Active notification; this behaviour was inconsistent to the behaviour on Amiga
- Fix [Windows/macOS/Linux]: The Listview.Edit() method didn't work at all
- Fix [Windows/macOS/Linux]: Setting Slider.Level didn't clip to Slider.Min as the lower boundary
  but to 0
- Fix [Windows]: Setting Texteditor.Align often didn't change the alignment until the next refresh
- New: Added Combobox.Open() and Combobox.Close() methods; these two allow you to show and hide the
  combobox's list (requested by Paul Bloedel)
- Fix [Windows]: Potential crash on exit when Application.AboutRapaGUI() had been called earlier
- Change [Windows]: RapaGUI no longer requires the Visual C++ Redistributable DLLs; it is completely
  stand-alone now! (but about 200kb bigger because it is now statically linked against MSVCRT)
- New: Added Treeview.Clear() method; this removes all items from a treeview widget; this does the
  same as calling Treeview.Remove() with the special "Root" keyword 
- New: Added special "Root" parameter for Treeview.Remove(); if "Root" is passed in item$, all items
  in the treeview will be removed so that the treeview will be empty (requested by Jean Holzammer)
- Fix: Treeview.Remove() didn't correctly adapt lots of internal state values which could lead to
  the problem that certain MOAI IDs weren't released correctly (reported by Jean Holzammer)
- Fix [Amiga]: TextEditor.HasChanged triggers for every change now, not only for the first one; this
  makes the Amiga version consistent to the behaviour of the Windows, Linux, and Mac OS versions of
  RapaGUI (requested by Lazar Zoltan)
- NEW [Android]: Ported RapaGUI to Android; this took more than 6 months to write but the result
  is stunning; creating GUI applications that run on Windows, macOS, Linux, AmigaOS, MorphOS, AROS
  and Android has never been easier! RapaGUI on Android supports almost everything from the desktop
  versions; the only thing missing entirely is a tree view widget because Android doesn't have one;
  all the other features are pretty much all supported, including dialogs, icons, toolbars, multiple
  windows and the Hollywood widget; it is also possible to combine Hollywood displays and RapaGUI
  windows in the same application, just like on the desktop platforms; since the majority of RapaGUI
  for Android has been implemented in Java with just a small bridge layer written in C/JNI, it's not
  possible to distribute it as a plugin because plugins are just shared objects containing native code;
  instead, RapaGUI on Android is completely built into Hollywood; for compatibility reasons, you
  still need to @REQUIRE it, though, just like you do it on desktop platforms

Version 1.2   (22-Sep-17)
- Change: Updated documentation
- Fix [Amiga]: Changing the text style or text alignment in objects of Texteditor class no longer 
  triggers a Texteditor.HasChanged notification; this fix is for consistency between Amiga and the
  other platforms; requires at least TextEditor.mcc 15.48
- Change: Texteditor.Align is now a global setting on all platforms; previously, the alignment could
  be changed for individual lines but this is no longer possible for cross-platform consistency; the
  alignment setting will now always be a global setting for all lines in the text editor; on AmigaOS
  this feature requires at least TextEditor.mcc 15.48
- Fix [Windows/Linux/MacOS]: Clicking to the left and right of the slider knob to change the knob's
  position didn't trigger a notification (reported by Xabier Payet)
- Fix [Amiga]: Setting MOAI.NoNotify after Slider.Max still caused a notification being triggered
  when the current slider position was higher than the new maximum (reported by Lazar Zoltan)
- Fix [Windows]: Putting a ListView widget into "Dataview" mode often resulted in refresh errors
  that only went away by resizing the parent window
- New: Added moai.FreeImage(); this allows you to free an image in RapaGUI'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 RapaGUI might
  crash; note that normally it isn't necessary to call moai.FreeImage() because all images are
  freed automatically when RapaGUI 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)
- Fix [Windows/Linux/MacOS]: Calling moai.FreeObject() on a listview, treeview or pageview control
  didn't free all images correctly
- Fix [MacOS]: TextEditor.GetXY() didn't work at all
- Fix [Amiga]: TextEditor.GetText() didn't convert style information to the platform-independent
  format used by RapaGUI (reported by Paul Bloedel)
- Fix [Amiga]: Getting TextEditor.Text after changing the alignment to center or right didn't
  work any more (reported by Paul Bloedel)
- Fix [Windows/Linux/MacOS]: TextEditor.Insert() didn't apply style information to the text in
  case TextEditor.Styled was set to true
- Fix [Windows/Linux/MacOS]: TextEditor.GetText() didn't return any style information in case
  TextEditor.Styled was set to true
- New: Added version for the PowerPC version of Mac OS X; note that this version of RapaGUI
  requires OS X 10.5, it won't work on 10.4 (requested by Cameron Kaiser)
- Fix [Windows/Linux/MacOS]: Treeview.GetEntry() didn't work correctly for nodes which were empty
  (reported by Samuel Crow)
- Change [Windows/Linux/MacOS]: Single-select listviews of mode "Listview" don't allow deselection
  of the active item any longer for consistency with MUI; note that listview mode "Dataview"
  still allows the deselection of items but a Listview.Active event will be triggered whenever
  the user deselects the active item so you can act upon it
- Fix: Getting TextEditor.Text didn't work with certain versions of the RichEdit control when
  TextEditor.Styled was set to true and the text contained different styles and ran over
  multiple lines
  
Version 1.1   (09-Apr-17)
- Change: Updated documentation
- New: Added @2x graphics for high resolutions systems on Windows and Mac OS 
- Fix [Windows]: Double-clicking on a listview item crashed the program when using the
  "Dataview" backend and listening to the Listview.DoubleClick notification 
- New: Added support for Listview.AbortEditing [N] and Treeview.AbortEditing [N]; these two
  attributes allow you to get notified when the user cancels item editing by pressing escape
  or clicking outside the edit widget (requested by Lazar Zoltan)
- Fix [Windows]: Size calculation of vertical sliders with label weren't done correctly
  which could lead to several layout problems like sliders overdrawing neighbouring widgets
  (reported by Lazar Zoltan)
- Change: When not specifying Window.Title, RapaGUI will now use the value of @APPTITLE as
  the default title; if @APPTITLE hasn't been specified, "RapaGUI" is used
- New: Group.Title and Group.Icon now have an applicability of ISG instead of just I; this
  allows you to change the title and icon of individual pages at runtime; to remove the
  icon from a page set Group.Icon to -1; note that on AmigaOS for all Pageview.Modes except
  "List" this feature requires at least MUI 4 (requested by Sandro Barbagelata)
- Fix [Amiga]: Accelerator key "ENTER" didn't work (reported by Lazar Zoltan)
- Fix [Windows/MacOS/Linux]: Treeview.GetEntry() segfaulted when used with "Active" for
  item and "Parent" for position on a node/item in the root list (reported by Samuel Crow)
- New: Added help strings for RapaGUI's commands; if you have Hollywood 7, you will now
  get function help with Hollywood's IDE for Windows and you can also press F1 to open
  the RapaGUI reference; note that you need to copy RapaGUI.chm to a directory named
  "PluginHelp" inside the Hollywood installation directory for this to work
- New: Added new methods and attributes for Choice class which make it much more
  flexible; the following new methods are now supported: Choice.Clear(), Choice.GetEntry(),
  Choice.Insert(), Choice.Remove(), and Choice.Rename(); additionally, a Choice.Count [G]
  attribute has been added to allow you to query the number of items in the widget; 
  finally, it is now possible to declare empty choice widgets in XML, i.e. you needn't
  add items in XML any longer but you can simply do this later at runtime using the
  new methods; also note that only Choice.GetEntry() and Choice.Count [G] are compatible
  with MUI 3.8; all other methods need MUI 4 or better (requested by Leo den Hollander)
- New: Added new methods and attributes for Combobox class which make it much more
  flexible; the following new methods are now supported: Combobox.Clear(), Combobox.GetEntry(),
  Combobox.Insert(), Combobox.Remove(), and Combobox.Rename(); additionally, a
  Combobox.Count [G] attribute has been added to allow you to query the number of
  items in a combobox; finally, it is now possible to declare empty combobox widgets in
  XML, i.e. you needn't add items in XML any longer but you can simply do this later at
  runtime using the new methods (requested by Leo den Hollander)
- New: Added new sample called "DragNDrop"; this demonstrates how to support drag
  and drop with RapaGUI
- New [Windows/MacOS/Linux]: Normal displays opened through RapaGUI also support the
  "OnDropFile" event handler now; this feature is only available on Hollywood 7
- New: Listview, Treeview, and Hollywood widgets now support file dropping; to enable
  drop events for these widgets, you have to set the new "DropTarget" attribute [ISG]
  to TRUE and listen to the new "DropFile" [N] attribute; your event callback will
  then receive the file(s) dropped on the widget in a table passed in the "TriggerValue"
  message field; the position of the drop operation will be passed in the "X" and "Y"
  message fields; this position will be relative to the top-left corner of the widget
  (requested by Sandro Barbagelata)
- Fix [Doc]: Listview.DefClickColumn is now correctly documented as Amiga-only
- Fix [Windows/MacOS/Linux]: Listview.ClickColumn wasn't implemented at all (reported
  by Leo den Hollander)
- New: RaiseOnError() works correctly with RapaGUI now but only if you have Hollywood 7
  or better (reported by Paul Bloedel)
- Fix: moai.FreeApp() didn't work correctly (reported by Paul Bloedel)
- Fix [Windows/MacOS/Linux]: FileRequest() filters were laid out in a different way than
  filters in file requesters managed by Hollywood; this inconsistency has now been fixed
  (reported by Dimitris Panokostas)
- Fix [Windows/MacOS/Linux]: "NoClose" and "NoHide" display flags didn't work with RapaGUI
  (reported by Paul Bloedel) 
- Fix: RapaGUI no longer crashes when calling its functions without @REQUIREing it
  (reported by Paul Bloedel)
- Fix [MacOS]: Calling moai.Set() or moai.DoMethod() to change widget attributes or its
  contents often didn't have any effect until the next event came in which led to quite
  a poor responsiveness; I don't remember seeing this problem on Mac OS 10.11 so I think
  it is related to 10.12; nevertheless, it's fixed now
- Fix [Doc]: Treeview.GetEntry() was falsely documented as returning a "Name" item in its
  return table but it returns an "Items" table instead (reported by Lazar Zoltan) 
- New [Windows/MacOS/Linux]: Ported RapaGUI to 64-bit for the upcoming Hollywood 7
- 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; this finally allows you to create fully internationalized
  GUIs with RapaGUI; note that Unicode support requires at least Hollywood 7
  
Version 1.0   (14-May-16)
- First Release
