1.0 2012-03-22 Gregory Nutt <gnutt@nuttx.org>

* The initial release of the NxWidgets package

1.1 2012-05-19 Gregory Nutt <gnutt@nuttx.org>

* Updated and verified the NxWidgets DOxygen documentation.  Contributed
  by Jose Pablo Carballo.
* IBitmap, CRlePalettBitmap:  Extended class to support different LUTs
  for selected and non-selected images.
* CImage: If selected, uses different LUTs based, different borders.
  CImage is now basically a button type.
* CImage: Add logic to highlight an CImage (using the selected LUT).
* nxwm: The tiny NX window manager (NxWM) is being developed in this directory.
* UnitTests/nxwm:  A unit test for the NX window manager.
* CWidgetControl:  Add a semaphore to force clients to wait if the
  size or position of the window is not yet known (multi-user mode only).
* During integration of NxWM, corrected numerous problems with NxWidgets
  running on toolbars and framed windows.  That capability was commented
  out in the 1.0 release but is verfied functional in 1.1.
* CRlePalettBitmap: Fix an error in the text that determines if we
  need to "rewind" to the beginning of the image.
* CRlePalettBitmap: Fix a positioning problem.  It was actually losing
  the last row of every image!
* CNxWidget: Removed support for "shelving" widgets.  I will be removing
  some lesser used feature over time in order to reduce the NxWidgets
  footprint.
* CNxWidget: Removed support for reference constants and close types.
  The goal is to ge the base widget class as small as possible.
* CNxTkWindow:  Fix uninitialized pointer value.
* CNxToolbar:  Need to "fake" the fix position callback to avoid
  deadlock waits for the callback that won't happen.
* CNxTkWindow:  Fix toolbar background color
* CWidgetControl:  Don't declare the the geometry is good until a non-NULL
  window size is received.
* CGraphicsPort and CWidgetControl:  If the underlying graphics device
  is write-only, then we have to render fonts a little differently.
* CNxWidgets, CWidgetControl, and CRectCache:  Big change!  Remove all support
  for widgets in a "vertical" hierarchy.  Now widgets exist in a flat,
  two-dimensional space and should not overlap.  This should greatly
  reduce the memory requirements and, since, NuttX already supports
  a hierarchical windowing system, does not result in loss of functionality.
* CNxWidgets and CWidgetControl.  Remove specific built-in support for
  modal loops.  There are too many different control mechanisms that might
  be needed.  Replace with hooks to control widget events from totally
  external logic.
* CWindowEventHandler, CWindowEventHandlerList, CWidgetControl: New
  callback classes to receive notifications about window events.
* NxWM::CFullScreenWindow and NxWM::CTaskbar:  Add support in NxWM for full
  screen window applications.
* All application windows now use CWindowEventHandler and CWindowEventHandlerList
  to get notifications about mouse and keyboard events.  These class will
  then automatically handle polling (with no need for a modal loop).
* NxWM::CTouchscreen and NxWM::CCalibration: Add touchscreen support (still a long
  way to go).
* NxWM::g_playBitmp: Change the play icon again.  These tiny touch icons
  must be very simple.
* NxWM::CCalibration: Beef up touch input handling logic.  Now changes the
  color of the touch circle to yellow when it is touched.
* NxWM::CTouchscreen: Do not read touchscreen data when there is no consumer.
* NxWM::CWindowControl:  Add new class to wrap CWidgetControl and provide
  some special mouse and keyboard input event handling.
* NxWM::CTaskbar: Correct the calculation of the physical size of the
  display.
* NxWM::CCalibration: run method must clear m_stop when returning, or you can
  never restart the Calibration window.
* NxWM::CTaskbar: On a failure to start an application, the application icon
  CImage was being deleted twice.
* NXWidgets::CImage: Now handles mouse click callbacks.  CImage is now really
  a button.  Probably should separate basic imaging functionality as CImage
  and create a new CImageButton.
* NxWM::CStartWindow:  Now ignores any close application button presses
  (You can't close the start window).
* NxWM::CCalibration:  The calibration application now has its own thread.
  This was necessary for a proper integration with the taskbar.
* NxWM::CCalibration and NxWM:CTouchscreen:  Changed the mechanism use
  to report calbration data.  It is now reported directly from CCalibration
  to CTouchscreen.  If external logic needs calibration, it can now get it
  from CTouchscreen instead of CCalibration.  This change was necessary
  to make the termination conditions of CCalibration clean (it used to
  have to persist until some external logic got the Calibration data).
* IApplication, IApplicationWindow, and all classes that inherit from
  these:  Now support method to report if the application is a full-screen
  or a normal application.  This is necessary to prevent CTaskbar from
  displaying a task bar on top of a full-screen window.
* NxWM::CTaskbar:  Ooops... minimizing the wrong application!
* NxWM::CNxConsole:  Add a on_exit() exit handler that will close the
  NxConsole window when the NSH thread exits.  A correct build now depends
  on having CONFIG_SCHED_ONEXIT defined.
* NXWidgets::CNxWidget: Add a new onPreRelease() method.
* NXWidgets::CButton, CButtonArry, CImage now post action event at pre-release time.
* NxWM: ICON touches are now drive by action events instead of click events.
* NXWidgets::CNxTkWindow: Reported size of a framed window must exclude the
  height of the tool bar (if present)
* TODO.txt: Add a file to keep track of issues.
* NxWM::CStartWindow and IApplicationFactory:  This is a substantial
  redesign.  IApplication wraps an application. However, if we want to
  be able to start multiple copies of an application, then we need to
  be able to create multiple IApplication instances from the start window.
  Enter IApplicationFactory.  Icons in the start window now correspond
  to application factories; icons in the task bar no correspond to
  application instances.
* NxWM::CStartWindow and CWindowControl:  The above change necessitated
  another architectural change:  When create applications, it is sometimes
  necessary to wait for windows events.  The above change moved the
  application creation to the window event thread, hence, causing deadlocks
  wheneven the logic tried to wait for a window event.  The solution was
  to create a new thread, called the start window thread, that runs
  asynchronously and can wait for windoew events.
* doc/NxWM-ThreadingModel.ppt:  Documented the now rather complex NxWM
  threading model.

1.2 2012-06-15 Gregory Nutt <gnutt@nuttx.org>

* NXWidgets::CCallback: callback argument is now type CCallback and not
  CWidgetControl;  Added a method to redirect keyboard contacts to either
  the widgets in the window (via CWidgetControl) or to an NxConsole (via
  nxcon_kbdin()).
* NXWidgets::INxWindow, CBgWindow, CNxTkWindow, CNxToolbar, CNxWindow:
  Now pass the CCallback instances as the callback argument instead of
  the CWidgetControl instance.  New method redirectNxConsole() will
  support redirection of any window keyboard input to the NxConsole
  (via CCallback).
* NxWM:CNxConsole:  Configures the NxConsole window to redirection keyboard
  input to the NxConsole; redirects standard input to the NxConsole
  device driver.
* NxWM:CKeyboard:  Add a new class that implements a keyboard listener
  thread.  This thread reads from /dev/console and injects the keyboard
  input into NX.  NX will determine which window is at the top of the
  hierarchy and re-direct the keyboard input to only that top window.
  This solves an important problem with, for example, running multiple
  copies of the NxConsole:  On the copy of the NxConsole at the top of
  the hierarchy should get the keyboard input.
* UnitTests/nxwm/main.cxx: Now starts the keyboard thread if
  CONFIG_NXWM_KEYBOARD is defined.
* NxWM::CTaskbar:  After drawing the task bar, need to raise the
  application window otherwise the taskbar will be on the top and
  keyboard input will not be received by the top application.
* NxWM::CTaskbar:  Bugfix... previous window should not be minimized
  when a new window is started.  It should stay in a maximized state
  so that it will re-appear with the window above it is closed or
  minimized.
* NxWM::CHexCalculator:  Add a hexadecimal/decimal calculator
  example.
* NXWidgets::CNxTkWindow:  Back out height adjustment in the getSize()
  method.  The code was correct as it was before.
* NXWidgets::CButtonArray and NXWidgets::CGraphicsPort:  There is
  a kludge in there to handle the case where we cannot read the
  background data because the LCD does not support read operations.
  In that case, we just use the default background color.  However,
  that doesn't work either for the case where the background color
  changes when the widget is selected.  Then the background color
  in the font is wrong.  Fixed in CButtonArray, but the problem
  probably exists in other places as well.
* NxWM:  Increase default spacing of icons on the Start Window.
* NxWM::CHexCalculator:  Fix some non-standard calculator behavior
  after = is pressed.  Use upper case hex.  Increase font size.
* nxwm/Makefile:  Fix error that creapt in during some other
  recent check-ins.

1.3 2012-09-29 Gregory Nutt <gnutt@nuttx.org>

* UnitTests/*/main.cxx:  Change entry point name to be consistent
  with with entry point naming conventions introduced in NuttX
  6.22.
* Kconfig:  Added a mconfig configuration file.  Eventually, NxWidgets
  needs to get hooked into the NuttX mconf configuration.  Still not
  exactly sure how to do that.
* libnxwidgets/Makefile and NxWidgets/nxwm/Makefile:  Need updates
  for consistency with recent changes to NuttX build system (>= 6.22)
* Kconfig:  Add option to turn on the memory monitor feature of the
  NxWidgets/NxWM unit tests.

1.4 2012-12-20 Gregory Nutt <gnutt@nuttx.org>

* libnxwidgets/Makefile, NxWidgets/nxwm/Makefile, and
  NxWidgets/UnitTests/nxwm/Makefile:  Makefile improvements from
  submitted by Petteri Aimonen.  Other Makefiles in the UnitTests
  directory probably also need these changes.
* libnxwidgets/src/ccallback.cxx: Fix misplaced #endif.  Provided
  by Petteri Aimonen.
* libnxwidgets/src/cnxserver.cxx:  Reduce delay to allow NX server
  to start.  One second was un-necessarily long.  Reduced to 50 MS.
  Reduction suggested by Petteri Aimonen.
* tools/bitmap_converter.py:  This script converts from any image type
  supported by Python imaging library to the RLE-encoded format used by
  NxWidgets.
* NxWidgets/nxwm/src/capplicationwindow.cxx: If the "desktop" is empty,
  users have no need to minimize any windows. If the buttons are small,
  it's easy to hit minimize button accidentally when trying to close an
  application.  Contributed by Petteri Aimonen.
* NxWidgets/nxwm/src/ctaskbar.cxx:  Add an option to eliminate the
  background image.  Contributed by Petteri Aimonen.
* NxWidgets/nxwm/src/chexcalculator.cxx and NxWidgets/nxwm/src/cstartwindow.cxx:
  The config settings CONFIG_NXWM_STARTWINDOW_ICON and CONFIG_NXWM_HEXCALCULATOR_ICON
  allow changing the icons used for these applications. However, to declare symbols
  for these icons user would need to modify NxWidgets header files.
  This commit adds a simple forward declaration to the relevant files, based on the
  configured icon. If the icon does not exist, linker will give an error about it.
  Contributed by Petteri Aimonen.
* NxWidgets::CTaskBar: Highlight the current window in the task bar.
  Contributed by Petteri Aimonen.
* NxWidgets/libnxwidgets/src/glyph_cycle.cxx:  Width of glyph_cycle was wrong;
  Destructor needs to by public.  From Petteri Aimonen.
* NxWidgets::CNumericEdit.  This is basically a label with plus and minus buttons.
  Contributed by Petteri, Aimonen.
* NxWM::CStartWindow:  Fix mq_receive error handling with signal is received.
  From Petteri Aimonen.
* NxWidgets::CNxTimer:  Replace the original (apparently non-functional) signal-
  based solution with a work queue-based solution.  This raises some isses about
  using the internal work queues from user space.  I have decided to implement
  user-space work queues (someday) in order to accomplish that functionality.
  Submitted by Petteri Aimonen.
* NxWidgets:CText and NxWidgets:CNumericEdite:  Fix some memory freeing bugs
  (from Petteri Aimonen).
* NxWidgets::CScrollingPanel:  Usability improvements.  It is borderless for now,
  because there was no easy way to redraw only the required part of the border.
  Contributed by Petteri Aimonen.
* NxWidgets::CNxWidgets and NxWM::CStartWindow: Small changes to make sub-
  classing easier (from Petteri Aimonen).

1.5 2013-02-01 Gregory Nutt <gnutt@nuttx.org>

* NxWidgets::CGraphicsPort::move():  Fix typo bug in bounding rectangle
  calculation (from Petteri Aimonen).
* NxWM::CScrollingPanel::scrollChildren(): Avoid unnecessary redraws in
  CScrollingPanel (contributed by Petteri Aimonen).
* NxWM::CCycleButton:  Remove the separator from CCycleButton. It draws in
  wrong place, and doesn't look very good in the correct place either.
  (from Petteri Aimonen).
* NxWidgets::CGraphicsPort: Many times we only want a constant background.
  In that case the old code fills the background, reads it back, renders
  the text and then writes it back. When used with LCD's (instead of
  framebuffers) this causes unnecessary delay and screen flicker.
  This commit adds a variant of drawText that takes background color,
  so that the background and text can both be rendered at one go.
  The old functions still function as before (Petteri Aimonen).
* NxWidgets::CLabel: The label was drawn as a single rectangular region,
  then a text was added to the on top of this.  The result is that the
  text would flicker when the CLabel was updated. With this change, the
  two step update is replaced with a five step update:  The background
  is updated as four rectangulear regions (leaving the previous text in
  place), then the new text is updated.  This eliminates the flicker
  (Petteri Aimonen).
* Kconfig: Many NxWidgets/NxWM settings do not have meaningful, generic
  default values.  Colors, for example, depend on pixel depth.  Some
  geometry settings depending on other geometry settings.  Font IDs are
  not know-able by the configuration system.  etc.  In these cases, it
  is best if the settings are just not undefined so that the system can
  calculate a reasonable default.  however, if no default is provided
  in the .config file, mconf will complain and generate errors.  So work
  around this, I added several "enabling" settings to override the
  default setting.  This is awkward and I preferred the configuration as
  it was before, but this avoids the mconf errors and warnings.
* UnitTests:  Changed occurrences of lib_rawprintf() and lib_lowprintf()
  to match recent changes to NuttX (will be in NuttX-6.25)
* CGraphicsPort::_drawText:  Renamed from CGraphicsPort::drawText in order
  to eliminate some naming collisions when overloaded in some configurations
  (i.e., when both bool and nx_pixel_t are uint8_t).  From Petteri Aimonen.
* CNxWidgets::drawContents: Change base drawContents from a do-nothing
  function to a function that fills the widget with the background color.
  This is useful when using CNxWidgets as a "panel" , i.e. a container
  for other widgets. Subclasses will override drawContents and decide
  themselves how to draw the background.
* CNxWidgets::CTabPanel:  A new widget contributed by Petteri Aimonen.
  This widget provides a tab panel, which has a button bar at the top
  and panels below it. Pressing a button will select the corresponding
  panel.

1.6 2013-03-15 Gregory Nutt <gnutt@nuttx.org>

* Type of argv[] has changed from const char ** to char * const *
* NXWidgets::CNxWidget:  Add an inline function to get the current style.
* NxWM::CTaskBar: Make a some methods of CTaskbar virtual to allow
  customizations.  From Petteri Aimonen.
* NXWidgets::CCycleButton: Make CCycleButton change state in onPreRelease().
  This way the new value is already available when a listener gets the
  action event.  From Petteri Aimonen.
* NxWidgets/tools/bitmap_converter.py: Fix bitmap_converter.py so that
  it works with indexed input images.
* NxWidgets::CLabel: Fix backward conditional compilation in the
  "flicker free" logic.
* NxWidgets::CNxTimer:  Previously repeated timers were re-enabled after
  the timer action event. Consequently, if the action event handler tried
  to stop the timer, the request would be ignored.  Changes the order
  so that the timer is re-enabled before the callback.  There is still
  no risk of re-entrancy, because everything executes on the USRWORK work
  queue.  From Petteri Aimonen.
* NxWidgets::CMultiLineTestBox: Fix text placement error.  From Petteri
  Aimonen.
* NxWidgets::CWidgetControl:  Added another semaphore, boundssem, which
  is set as soon as the screen bounds are known.  This corrects two
  problems:
  1) Due to the way nxgl_rectsize computes the size, it will never
     be 0,0 like CWidgetControl expects. Therefore the size is considered
     valid even though it has not been set yet.
  2) After the check is fixed to test for > 1, NxWM window creation will
     hang. This is due to the fact that it uses the screen bounds for
     determining window size. This was being blocked on geosem, which
     is only posted after the size has been set.
  From Petteri Aimonen.
* NxWidgets::CImage:  Two enhancements:
  1) Allow changing the bitmap even after the control has been created.
  2) Allow giving 'null' to have the control draw no image at all.
  From Petteri Aimonen.
* NxWM::CTaskBar:  Allow windows with null icon. This makes sense for e.g.
  full screen windows.  From Petteri Aimonen.
* NxWM::CApplicationWindow:  Add config options to override NxWM
  stop/minimize icons.  From Petteri Aimonen.
* NwWM::CStartWindow, NxWM::CWindowMessenger: Get rid of the start window
  thread. Instead, handle all events through the USRWORK work queue.
  For me, this was necessary because I would open some files in button
  handlers and close them in NxTimer handlers. If these belonged to
  different tasks, the close operation would fail.  Further benefits:
  + Gets rid of one task and message queue.
  + Reduces the amount of code required
  + Decouples CStartWindow from everything else - now it is just a window
    with application icons, not an integral part of the event logic.
  + All events come from the same thread, which reduces the possibility of
    multithreading errors in user code.
  + The user code can also send events to USRWORK, so that everything gets
    serialized nicely without having to use so many mutexes.
  Drawbacks:
  - Currently the work state structure is malloc()ed, causing one allocation
    and free per each input event. Could add a memory pool for these later, but
    the speed difference doesn't seem noticeable.
  - The work queue will add ~50 ms latency to input events. This is however
    configurable, and the delay is anyway short enough that it is unnoticeable.
  From Petteri Aimonen.

1.7 2013-04-28 Gregory Nutt <gnutt@nuttx.org>

* NxWidgets bitmap_converter.py: Fix bug when image width > 255.  From
  Petteri Aimonen (2013-4-22).
* NxWM::CScrollbarPanel:  Fix spelling error in class name: CScollbarPanel
  should be CScrollbarPanel.  From Petteri Aimonen (2013-4-22).
* NxWidgets:: CGlyphButton: Generate action event, like CButton does.
  From Petteri Aimonen (2013-4-22).
* NxWidgets:: CGlyphButton:  Prevent drawing outside of the bitmap size.
  From Petteri Aimonen (2013-4-22).
* NxWM::CTaskBar:  Add option CONFIG_NXWM_TASKBAR_NO_BORDER to suppress
  drawing of the border on the taskbar.  From Petteri Aimonen (2013-4-22).
* NxWidgets::CNxTimer:  Add function to check if CNxTimer is running.
  From Petteri Aimonen (2013-4-22).
* NxWidgets::CNxWidgets:  Allow overriding of the checkCollision() method.
  From Petteri Aimonen (2013-4-22).

1.8 2013-06-14 Gregory Nutt <gnutt@nuttx.org>

* NxWM::CMediaPlayer: shell application for an MP3 Media Player with
  Kconfig settings to enable it.  I plan to write this app to help
  develop and test the MP3 codec chip driver.  It really doesn't do
  anything yet except display a text box saying "Coming soon", and I
  need to minimize the icon size a bit.  From Ken Pettit (2013-5-11).
* NxWidgets/nxwm/src/glyph_mediaplayer.cxx:  Smaller version of the
  media player glyph.  From Ken Pettit (2013-5-12).
* NxWidgets/nxwm/include/ccalibration.hxx and src/ccalibration.cxx:
  Fix a race condition that would cause the calibration screen
  to fail to come up when its icon was touched (From Ken Pettit,
  2013-5-12).
* Kconfig:  Default priorities for NxWidget and NxWM threads
  should be 100, not 50, to be consistent with other default priorities.
* NxWidgets::CGlyphSliderHorizontal and NxWidgets::CGlyphSliderHorizontalGrip:
  New widgets added by Ken Pettit (2013-5-15).
* NxWidgets/UnitTests/CGlyphSliderHorizontal:  Adds a unit test for the
  NxWidgets::CGlyphSliderHorizontal class. From Ken Pettit (2013-5-17) .
* NxWidgets::CGlyphSliderHorizontal:  Fix a drawing error.  From Ken
  Pettit (2013-5-17).
* UnitTests/*/Makefile and .gitignore:  Update the way that NSH
  the Unit Tests are registered as built-in NSH applications (2013-5-30).
* NxWidgets::CImage:  Allow a NULL pointer for a bitmap.  Add protection
  to prevent dereferencing the NULL pointer.  From Petteri Aimonen
  (2013-6-4).
* NxWidgets::CNumericEdit:  Delay before auto-incrementing now varies:
  A longer delay is required to start auto-incrementing and speed increases
  while pressed.  From Petteri Aimonen (2013-6-4).
* NxWM::CTaskbar: Add a method to redraw the taskbar and the current
  application.  This should only be necessary if the display loses
  state due to e.g. powerdown or other manual intervention.  From
  Petteri Aimonen (2013-6-4).

1.9 2013-10-28 Gregory Nutt <gnutt@nuttx.org>

* NxWM::CCalibration.cxx/hxx:  If CONFIG_NXWM_CALIBRATION_MESSAGES is
  defined then CCalibration will provide some instructions in the center
  of the display (2013-10-14).
* NxWM::CCalibration.cxx/hxx:  Add options to collect and average
  multiple samples at each location.  Also logic to discard the most
  extreme samples before averaging (2013-10-14).
* NxWidgets::CScaledBitmap:  This new class is a wrapper for an class
  the exports IBitMap.  It will perform scaling via bi-linear interpolation
  so that images can be scaled to any size desired (2013-10-15).
* NxWM::CTaskbar:: Can now be configured to scale taskbar icons using
  NxWidgets::CScaledBitmap (2013-10-15)
* NxWidgets/libnxwidgets/src/glyph_nxlogo320x320.cxx:  Add a big, 320x320
  NuttX logo image.  The older, smaller NuttX logo was renamed from
  nxlogo to nxlogo160x160 in all places (2015-10-15).
* NxWM::CCalibration and NxWM::CTouchscreen:  Add a complex touchscreen
  scaling algorithm to handling the case where the measured X values also
  vary with y position (and vice versa) (2013-10-17).

1.10 2013-12-07 Gregory Nutt <gnutt@nuttx.org>

* Kconfig and UnitTests/nxwm:  Add logic to enable saving and recovering
  touchscreen calibration data.  This depends upon having platform-dependent
  support for storage of configuration data.  Portions suggested by
  Ken Pettit (2013-10-30).
* NxWM:Calibration:  Saving of calibration data must be performed in
  CCalibration, not in UnitTests/nxwm.  Why?  Because the touchscreen
  calibration could also be initiated from other ways other than through
  the one-time, start-up initialization logic (2013-10-30).

1.11 2014-01-30 Gregory Nutt <gnutt@nuttx.org>

* NxWidgets/Kconfig and NxWidgets::CNxServer:  Server initialization can
  now be disabled in the configuration (in fact, it is disabled by default).
  This is because in the kernel build mode, the NX server must be initialized
  in kernel mode by the RTOS before applications using the server run in
  user mode.
* NxWm: Added CONFIG_NXWM_NXTERM that can be used to disable the NxConsole
  window (2013-12-30).
* NxWm::CTouchscreen: Added CONFIG_NXWM_TOUCHSCREEN_DEVINIT that can be used
  to suppress calls to initialize the touchscreen device from the listener
  thread.  This is necessary if the kernel mode build is used: In that case,
  the touchscreen must be initialized in kernel space before NxWM is started
  (2013-12-30).

1.12 2014-08-15 Gregory Nutt <gnutt@nuttx.org>

* libnxwidgets/include/nxconfig.hxx and libnxwidgets/src/cscaledbitmap.cxx:
  Fix typo RBG -> RGB.  This makes NxWidgets incompatible with versions of
  NuttX 7.2 and below.
* nxwm/src/glyph_*.cxx: Rename all ICON glyph files to include the size of the
  ICON as part of the file name.  This is in preparation for supporting a
  set of larger ICONs (2014-7-12).
* nxwm/src/glyph_play48x48.cxx:  Add a larger NxWM play icon (2014-7-12).
* nxwm/src/glyph_caclulator47x49.cxx:  Add a larger NxWM calculator icon
  (2014-7-13).
* nxwm/src/glyph_cmd49x43.cxx: Add a larger NxWM NxConsole icon (2014-7-13).
* nxwm/src/glyph_calibration48x42.cxx:  Add a larger NxWM Calibration icon
  (2014-7-13).
* nxwm/src/glyph_minimize42x42.cxx: Add a larger NxWM minimize icon
  (2014-7-13).
* nxwm/src/glyph_stop42x42.cxx: Add a larger NxWM close icon (2014-8-13).
* nxwm/src/glyph_mediaplayer44x50.cxx: Add a larger NxWM media player icon
  (2014-7-14).
* Kconfig, nxwm/include/nxwmconfig.hxx, nxwm/src/capplicationwindow.cxx:
  Toolbar font ID can now be separately configured (2014-7-14).
* nxwm/src/cmediaplayer.cxx: Will now dynamically position player controls
  based on the display and image sizes (2014-7-14).
* nxwm/src/glyph_mediagrip30x30.cxx and glyph_mplayer_controls43x41.cxx: Add
  larger images for the media player (2014-7-14).
* Kconfig, nxwm/src/cmediaplayer.cxx: Add options to manage spacing of media
  player buttons and borders vs. borderless buttons (2014-7-14).
* NxWidgets::CImage: Fix setImageLeft and setImageTop methods (2014-7-14).
* NxWidget::CImage: Now supports helper methods to align images in the
  widget region (2014-7-14).
* NxWM::CMediaPlayer now uses the new CImage methods to align media controls
  in buttons (2014-7-14).
* NxWidgets::CStickyImage:  A version of CImage that sticks in the selected
  state when clicked (2014-7-15).
* NxMW::CMediaPlayer: Now supports a pause button (2014-7-15).
* NxMW::CMediaPlayer: Fix some memory leaks (2014-7-16).
* NxMW::CMediaPlayer: Change spacing, make text region big enough to support
  a multi-line, scrollable region (2014-7-16).
* NxMW::CMediaPlayer: Correctly catch the volume level change event
  (2014-7-16).
* NxMW::CMediaPlayer: Convert CLabel to a CListBox to support selection of
  one of many media files to play.  This should be a CScrollingTextBox to
  support an indefinitely large number of media files (2014-7-16).
* NxWidgets::CGraphicsPort:  Fix drawBitmapGreyScale method.  Actually drew
  nothing because of several errors in positioning and buffer usage
  (2014-7-17)
* NxWidgets::CImage:  Should not attempt to draw the "empty" regions at the
  top and the bottom of the image box in greyscale (2014-7-17).
* NxWM::CMediaPlayer:  Fix some state-related bugs introduced yesterday.
  Improved state-related button display.  Now correctly catches and
  handles file selection events (2014-7-17).
* NxWidgets::CImage:  Cannot use NxWidgets::CGraphicsPort:drawBitmapGreyScale()
  because it does not respect transparent or background colors in its current
  form.  The end result is that makes the image background grey as well as the
  image (2014-7-17).
* NxWM::CMediaPlayer:  State variable was left in a bad state and caused some
  problems down the road (2014-7-17).
* NxWidgets::CGlyphSliderHorizontal: No longer uses a hard-coded slider
  height; the slider height is now provided as a parameter, replacing the
  widget height which is now calculated from the glip image height
  (2014-7-17).
* NxWM::CMediaPlayer:  Now calculates the volume slider height from the grip
  image height (2014-7-17).
* NxWM::CApplicationWindow:  Created the custom font for the toolbar title,
  but never used it! (2014-7-17).
* NxWidgets::CNxString:  Make destructor virtual.  From Petteri Aimonen
  (2014-7-22).
* NxWidgets::CTaskbar:  Fix type of return value fromopenRawWindow()
  method.  From Petteri Aimonen (2014-7-22).
* NxWidgets::CTabPanel:  Modify behavior in showPage() method.  Eliminate a
  duplicate redraw that caused flickering; re-order some logic so that
  widgets are hidden before operated on.  From Petteri Aimonen (2014-7-22).
* NxWidgets:CTabPanel:  Make CTabPanel raise action event when tab is
  changed.  Also add a function for getting the currently selected tab
  index.  From Petteri Aimonen (2014-7-22).
* NxWidgets::CNxTimer:  Make CNxTimer stop itself before destruction.
  Otherwise a call to an invalid work queue entry may occur.  From Petteri
  Aimonen (2014-7-22).
* NxWidgets/Kconfig: Add configuration options to filter CMediaPlayer files
  based on extension (2014-7-23)
* NxWM::CMediaPlayer:  Add logic to read files from the media mountpoint,
  filter them by extension, and display the file names in the listbox (2014-7-23).
* NxWM::CMediaPlayer:  Beginning integration of NxPlayer into Nxwm::MediaPlayer.
  Gets handle, sets device, and releases handle.  Lots more to be done
  (2014-7-23).
* NxWidgets::CNxString: Add a getAllocSize() method to make it easier to
  convert CNxStrings to NUL-terminated C strings (2014-7-24).
* NxWM::IApplicationFactory: dd a do-nothing, virtual destructor to
  eliminate a warning (2014-7-24).
* NxWM::CMediaPlayer: Lots of changes to integrate with Ken's NxPlayer
  (2014-7-24).
* NxWM::CMediaPlayer: Revise state logic.  We need an additional state for
  the case where a file is selected, but playing has not yet start.  Several
  other state-related fixes (2014-7-25).
* NxWM::CMediaPlayer:  Need to remember last text box selection or else each
  new Value Change event from the volume slider is confused with a new file
  selection (2014-7-27).
* NxWM::CMediaPlayer: Correct handling of increments to sub-sampling rate
  (2014-7-27).
* NxWidgets::CNxWidget: Remove an unused bit field (2014-7-28).
* NxWM::CMediaPlayer: Add a CLabel that show the current fast forward/rewind
  speed (2014-7-28).
* NxWM::CKeyboard: Add support for a USB keyboard as the NxConsole and text
  widget input.  Not fully functional as of this initial check-in.  Basic
  functionality is there, but there are conditions were the keyboard gets
  lost (2014-7-30).

1.13 2014-09-28 Gregory Nutt <gnutt@nuttx.org>

* Change all references to NxConsole to NxTerm.  This introduces an
  incompatibility with versions prior to NuttX-7.5 (2014-9-20).

1.14 2014-11-26 Gregory Nutt <gnutt@nuttx.org>

* Fix all UnitTest/ files to account for the corrected syslog() prototype.
  This change to the NuttX syslog introduces an incompatibility between
  NuttX 7.6 and previous versions of the UnitTest code.

1.15 2015-04-14 Gregory Nutt <gnutt@nuttx.org>

* In NuttX 7.9, the interface arch_tcinitialize() was replaced with the
  boardctl() interface.  Old versions of NxWM will then be incompatible
  with Versions of NuttX at 7.9 and beyond (2015-03-31).
* NxWidgets::CNxServer:  More renaming: up_lcdinitialize->board_lcd_initialize,
  up_lcdgetdev->board_lcd_getdev, up_lcduninitialize->board_lcd_uninitialize
  (2015-04-04).
* NxWidgets:: INxWindow, CNxWindow, CBgWindow, CNxTkWindow, CNxToolbar,
  CGraphicsPort: Add a capped parameter to all drawLine() methods.  Pass on
  to NX nx_drawline() and NXTK nxtk_drawlinetoolbar() and nxtk_drawlinewindow()
  functions (2015-04-05).

1.16 2016-06-01 Gregory Nutt <gnutt@nuttx.org>

* NxWM::CTouchscreen: When boardctl() fails, need to print errno not the
  returned value which will always be -1 (2015-04-16).
* NxWidgets::CNxServer:  Correct use of the BOARDIOC_GRAPHICS_SETUP
  boardctl() call (2015-04-16).
* CListBox unit test:  Should use RAND_MAX, not MAX_RAND (2015-04-16).
* The NxWidgets/ directory has been removed from the NuttX GIT repository
  and now stands alone in its own repository (2015-06-27).
* Framebuffer driver parameters have changed.  This introduces an
  incompatibility with versions of NuttX prior to 7.16 (2016-04-14).
* UnitTests: Add Make.defs files to all UnitTests directories.  This is
  required by the current apps/Makefile.  Hmmm..  This means that no one
  has built the NxWidgets packages in the last several releases!
  (2016-04-23).
* UnitTests: Add some default definitions to handle the (unusual) case
  where 'make clean' is called with no .config or Make.defs file installed
  (2016-05-10).

1.17 2016-07-25 Gregory Nutt <gnutt@nuttx.org>

* UnitTests: Back conditional logic out of UnitTest Make.defs files.  It
  does not belong there and causes link failures like "Cannot find nxwm_main"
  (2016-06-05).
* Change dbg() and vdbg() to err() and info() (2016-06-11).
* Change some *err() message to *info() messages if what was a *dbg()
  message does not indicate and error condition (2016-06-14).
* Add _ to front of debug macros (2016-06-16).
* Unittests:  All Makefiles must provided a (dummy) prefconfig target to be
  compatible with changes to the apps/ configuration system that will be
  be released in NuttX-7.17 (2016-06-29).
* Changes to pre-processor include statements needed to handle reorganization
  of the apps/include directory  (2016-07-01).
* Update include paths to adapt to changes made to apps/ include path logic
  (2016-07-22).

1.18 2016-12-26 Gregory Nutt <gnutt@nuttx.org>

* NxWM needs the path to the apps/include directory (2016-07-28).
* NxWidgets: Fix CListBox crash when clicked below the last item.  From
  Petteri Aimonen (2016-09-22).
* libnxwdigets: Fix memory leak in CNxWindow and make behaviour match
  CNxTkWindow.  From Petteri Aimonen (2016-09-22).
* libnxwidgets: Fix default text colors in NxWidgets::CListBox.  From
  Petteri Aimonen (2016-09-22).
* libnxwidgets: Avoid unnecessary redraw in NxWidgets::CListBox. The
  ListData will raise an event that will cause a redraw anyway.  Redrawing
  in click() caused double redraws.  From Petteri Aimonen (2016-09-22).
* libnxwidgets:  Fix coordinate handling in NxWidgets::CMultiLineTextBox.
  Related to 'Thu Feb 21 16:47:01 2013 Fix text placement in
  CMultiLineTextbox.' There was a few similar bugs remaining in calculating
  of rows to show and in clearing the background.  From Petteri Aimonen
  (2016-09-22).
* libnxwidgets: Allow NxWidgets::CListDataItems subclasses access to text
  and value.  From Petteri Aimonen (2016-09-22).
* Add setting task name via prctl() to NxWidgets::CNxServer and
  NxWM:CTouchScreen.  From Petteri Aimonen (2016-09-22).
* libnxwidgets: In NxWidgets::CText, allow setting negative line spacing.
  This is useful to have text take up less space, as quite many fonts have
  large line spacings built-in.  From Petteri Aimonen (2016-09-22).
* libnxwidgets: Allow setting line spacing in NxWidgets::CMultiLineTextBox.
  From Petteri Aimonen (2016-09-22).
* CNxServer: Remove NX server task.  Now calls nx_start (indirectly through
  boardctrl(BOARDIOC_NX_START) to start the NX Server kernel thread
  (2016-12-01).
* CNxServer: Can't use printf in this context (2016-12-01)

1.19 2018-03-02 Gregory Nutt <gnutt@nuttx.org>

* Correct NX Server message queue names.  Should not be /dev/nx*.  They must
  be relative to /dev/mqueue so "nxabc" will appear at "/var/nxabc"
  (2017-01-08).
* strcasecmp, strncasecmp, bzero, bcmp, and bcopy should be defined in
  strings.h, not string.h.  bzero, bcmp, and bcopy are legacy functions; the
  contemporary counterparts should be used instead (2017-02-16).
* Unitests/nxwm:  Change includes because up_cxxinitialize() is now
  prototyped in apps/include/platfor/cxxinitialize.h (2017-05-13).
* Prototype of nsh_telnetstart() has changed (2017-07-05).
* NxWidgets: fix work_s initialization in cwindowmessenger.hxx. From Sakari
  Kapanen (2017-09-24).
* Remove all support for single user mode (2017-10-14).
* Remove unused CONFIG_NXWIDGETS_EXTERNINIT configuration variable
  (2017-10-15).
* CTaskBar: Fix type checking issue with GCC 6  From Sakari Kapanen
  (2017-11-08).
* nxwm:  Eliminate BOARDIOC_TSCTEST_SETUP (2018-01-17).
* In NxWM unit test, call boardctl(BOARDIOC_INIT) if available and
  appropriate (2018-01-17).
* Fix a dependency in Kconfig:  CONFIG_NXWIDGET_SERVERINIT is definitely
  supported in the PROTECTED and KERNEL build modes (2018-01-18).

After NuttX-7.26, the NxWidgets repository was merged into the apps/
repository.  See the apps/ChangeLot.txt for changes since that time.
