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 differnt 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 hightlight 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: Fixe 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 arguement 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 intances 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
  heirarchy 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 heirarchy 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 CButtonArrary, 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-xx-xx Gregory Nutt <gnutt@nuttx.org>
