

Version 1.4.16 ( ?-?-2011 )

  Bugs Fixed:

  - SpinCtrl editor generated two steps instead of one when mouse
    was clicked on the spin buttons (bug #3253283, patch by
    Sbastien Gallou).

  - When disabling a property, the currently selected property was
    not disabled properly (patchs #3299415 and #3299921 by
	Sbastien Gallou).



Version 1.4.15 ( Feb-27-2011 )

  Bugs Fixed:

  - Fixed regression which caused text to be pasted twice in
    text editors under some platforms (atleast wxMSW, bug #3164789).

  - wxPGProperty::SetValueImage() didn't work properly with
    images that had transparent background (bug #3187182).



Version 1.4.14 ( Dec-22-2010 )

  New Features:

  - Added new action wxPG_ACTION_EDIT. Triggering it will move focus to
    the selected property's editor. For example, use following code to
    allow user to focus editor on ENTER keypress:

    propgrid->AddActionTrigger( wxPG_ACTION_EDIT, WXK_RETURN );


  Bugs Fixed:

  - It was possible to enter inappropriate characters for wxIntProperty
    and wxUIntProperty (see wxWidgets tickets #12563 and #12564).

  - Clipboard functionality was not working under wxGTK
    (fixed by Julian Smart).

  - wxPG_EX_HELP_AS_TOOLTIPS did not work for the selected property.

  - wxPython Bindings: Custom properties did not properly support wxRect
    as a value.

  - wxPython Bindings: Custom properties did not support lists of types
    other than strings and ints (bug #3076717).

  - Fixed crash when global editor pointers were used from an
    external main loop (bug #3076662).



Version 1.4.13 ( Aug-22-2010 )

  New Features:

  - Added two new validation failure behavior flags:
      wxPG_VFB_SHOW_MESSAGEBOX and
      wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR

    These allow defining exactly how the message display behavior works,
    unlike the old wxPG_VFB_SHOW_MESSAGE which had inconsistent (default)
    behavior (see bug #3024332).

  - wxPython Bindings: Python 2.7 is now supported.


  Bugs Fixed:

  - Linking the library could fail if the program used wxPGProperty::Hide().

  - Property label editor blocked basically all other keyboard activity.

  - Validation failure was not (always) reset when a valid value was
    entered after an invalid one (see bug #3024332).

  - Validation failure message for wxIntProperty's min/max constraints
    was sometimes incorrect (see bug #3024332).

  - Redundant validation failure message boxes should no longer be shown
    (see bug #3024332).

  - wxPython bindings: Fixed DateProperty value conversion. Month was
    off by one and it did not accept datetime.date as input (only accepted
    datetime.datetime).

  - wxPython Bindings: ChildChanged() was not properly implemented, so it was
    not possible to create custom properties with private children (i.e.
    things similar to SizeProperty and FontProperty).



Version 1.4.12 ( May-30-2010 )

  Bugs Fixed:

  - Various bugs in property label editors (some of which were rather fatal).

  - Editing wxFontProperty with unspecified value caused wxPropertyGrid to
    crash (resolves wxWidgets ticket #12086).

  - Hiding property in OnSetValue() caused wxPropertyGrid to crash
    (resolves wxWidgets ticket #11987).

  - Calling wxPGProperty::Hide() crashed for unattached properties.

  - wxPython bindings: Refactored GetValue(), GetPropertyValue()
    (fixes bug #2977923).

  - Some makefile problems introduced by switching to newer version of
    Bakefile (for now, stick with 0.2.6 for everything except Visual Studio
    project files).

  - Always use non-bold font when drawing drop down items (resolves
    wxWidgets ticket #12088).



Version 1.4.11 ( Mar-21-2010 )

  New Features:

  - Columns can now have custom proportions for auto-resize purposes. Use the
    new SetColumnProportion(col, proportion) function.
    wxPG_SPLITTER_AUTO_CENTER style must be used, and naturally it now also
    works when the grid has more than two columns.

  - Much improved Visual Studio project files have now been included, with
    experimental win64 support.


  Changes:

  - Property selection is no longer cleared when adding new properties
    (feature request #2942477).

  - Property removal and deletion will now be postponed to idle time when it
    is done from a wxPropertyGrid event handling (resolves bug #2953675).


  Bugs Fixed:

  - Value cell could be rendered incorrectly for properties with
    'limited editing' enabled.

  - wxPropertyGrid::CanClose() could crash if there was no property selected
    (bug #2951533, fix by Andrey Kuznetsov).

  - wxPropertyGridInterface::Enable/DisableProperty() would crash if called
    for a property which did not belong to any grid (bug #2925499).

  - SetChoices() could crash if called on a selected property (now the
    property selection is cleared).

  - Various bugs when re-positioning editors for columns other than 1 (for
    example, property label editors).

  - Property editors other than text ctrl based ones did not respect
    wxPG_PROP_READONLY flag (bug #2940435).

  - wxPython Bindings: Using validationInfo member functions in
    ValidateValue() implementation of custom properties should no longer
    complain about 'wxPGVFBFlags *' memory leaks.



Version 1.4.10 ( Jan-03-2010 )

  New Features:

  - wxPropertyGrid::SetUnspecifiedValueAppearance() can
    now be used to set exact appearance of an unspecified
    value. Argument is a wxPGCell, so custom text, colours
    and font can be set.


  Changes:

  - Multi-selection now uses Shift and Ctrl keys more like
    a native Windows list box (previously it used Shift for
    selecting individual items).


  Bugs Fixed:

  - Crash on startup on OS X (bug #2915549).

  - Editor focus code was usually not executed. This should
    now be fixed, and for instance, when a wxTextCtrl based
    editor gets a focus, all the contained text will be
    selected.

  - Unspecified value rendering was incorrect for various
    property editors, such as check box.

  - Setting property value to unspecified did not properly
    refresh the editor control.

  - wxPython bindings: setting control name in PropertyGrid
    or PropertyGridManager __init__() or Create() did not
    work.

  - SetColumnCount() could crash if number of columns was
    reduced.



Version 1.4.9.3 ( Dec-10-2009 )

  Bugs Fixed:

  - Fixed regression: wxPropertyGrid could crash if it was
    created in its parent's constructor (bug #2907964).

  - Fixed a possible crash if wxPG was initialized in an uncommon
    manner.



Version 1.4.9.2 ( Nov-29-2009 )

  Bugs Fixed:

  - On some systems (at least Windows Vista) grid's horizontal size
    could be incorrect and a horizontal scroll bar would appear
    unintentionally (bug #2903390).

  - Did not compile with GCC (bug #2905262).

  - Some sample custom properties in test_propgrid.py were partially
    broken (they incorrectly used 'true' instead of 'True').



Version 1.4.9.1 ( Nov-25-2009 )

  Bugs Fixed:

  - Fix to the empty space redraw bug that previous version addressed
    was incomplete.



Version 1.4.9 ( Nov-24-2009 )

  Bugs Fixed:

  - Fixed regression: empty space below properties was rendered
    with garbage when other windows were dragged over it.

  - wxPython Bindings: PropertyGrid.SetPropertyValue() was not
    present in the bindings.



Version 1.4.8 ( Nov-01-2009 )

  New Features:

  * wxPGCell class now has font support. Use SetFont() and GetFont()
    member functions.

  * Added flags argument to wxPropertyGrid member functions
      SetPropertyBackgroundColour() and
      SetPropertyTextColour()

    Default value of this argument is wxPG_RECURSE and omitting it
    will disable recursive colour assignment.


  Bugs Fixed:

  - Fixed serious regression that caused some property expander
    buttons not to be drawn.

  - Fixed various scrolling issues. This is done by changing the
    internal scrollbar calculation to a sizer-based solution
    (patch #2877550 by Josh Faust).

  - Thaw() should no longer moves the scroll bar when reselecting
    property that was selected prior to Freeze() call (bug
    #2877568).

  - wxArrayStringProperty had incorrect backslash escaping
    (bug #2888013, fix by Mathias Dz.)

  - wxPython bindings: various fixes to custom property class
    code. StringToValue() and IntToValue() should now return
    tuple (True, newValue) on success instead of just newValue.

  - wxPython bindings: various fixes to custom property editor
    creation, including code correction in the test_propgrid.py.



Version 1.4.7 ( Oct-04-2009 )

  New Features:

  - Multiple selection of properties. Enable by calling SetExtraStyle()
    with wxPG_EX_MULTIPLE_SELECTION flag. Related new functions are:

      AddToSelection()
      GetSelectedProperties()
      IsPropertySelected()
      RemoveFromSelection()

    In multiple selection mode, GetSelection() will now return
    the property which has editor active (usually the first one
    selected).

  - Label editing is now possible. Related functions are:

      MakeColumnEditable() - call this to allow user edit labels
      BeginLabelEdit() - call this to open label editor manually
      EndLabelEdit()

    Related new events are:

      wxEVT_PG_LABEL_EDIT_BEGIN
      wxEVT_PG_LABEL_EDIT_ENDING

  - Added extra style wxPG_EX_DISABLE_TLP_TRACKING. If you
    experience crashes when using wxPropertyGrid with wxAUI or
    similar system, then it is recommended that you use this
    style.

    Note that this style will be enabled by default in
    wxWidgets 2.9.1 and later. There you will need to
    explicitly set the extra style wxPG_EX_ENABLE_TLP_TRACKING
    if you want the old default behavior.

  - New wxPropertyGridManager flags (patch by Julian Smart):
      wxPG_THEME_BORDER: Show alternative and more thematic border
        around the wxPropertyGrid.
      wxPG_NO_INTERNAL_BORDER: Do not show internal border around
        the wxPropertyGrid.
      wxPG_EX_NO_TOOLBAR_DIVIDER: Eliminate the divider above
        wxPropertyGridManager tool bar on Windows (it may not
        look good if there's already a border).

  - Added wxFONTFAMILY_TELETYPE and wxFONTFAMILY_UNKNOWN support
    for wxFontProperty.


  Changes:

  - Most wxPGProperty choice manipulation functions will now
    show a run-time error if you try to use them with properties
    which do not support choices. Only exception is
    wxPGProperty::GetChoiceCount(), which still works as before.


  Bugs Fixed:

  - Possible crash if property was deleted via a command in
    user-defined context menu.

  - wxMAC: Various UI layout fixes by Julian Smart.

  - wxPGProperty::SetName() crashed if called before property
    was added to a grid.

  - wxPython bindings: wxPropertyGridHitTestResult did not
    work correctly.

  - GCC static linking of the sample app did not work
    (library order was incorrect in configure.ac).

  - Property iterators crashed if iterating through
    'non-interesting' properties at the edges of grid.

  - wxEditEnumProperty's initial string value could not
    be outside the list of choices.

  - There were few severe mistakes in the documentation,
    specifically in custom properties section.



Version 1.4.6 ( Jul-12-2009 )

  New Features:

  - Added wxPGProperty::SetDefaultValue(). Synonymous to
    SetAttribute(wxT("DefaultValue"), value);


  Changes:

  - When re-parenting the wxPropertyGrid indirectly (that is, by
    calling Reparent() of any of its parent window), you are
    recommended to call a new function
    wxPropertyGrid::OnTLPChanging(newTLP). It is not strictly
    necessary though, as there is idle-time detection. However,
    it cannot do perfect job.


  Bugs Fixed:

  - Crashes if re-parented (bug #2802740).

  - Colour property attribute wxPG_COLOUR_ALLOW_CUSTOM did not
    work correctly.

  - wxPython bindings: SWIG was not fully aware how to destroy
    wxColourPropertyValue objects.

  - wxPython bindings: Fixed a possible crash-on-startup scenario
    (which occurred consistently on specific app setups).

  - wxPython bindings: Back ported numerous wxVariant-conversion
    related fixes from wxWidgets 2.9.



Version 1.4.5 ( May-17-2009 )

  New Features:

  - Added wxPropertyGrid::IsEditorFocused().

  - Added wxPGChoices::Copy() for convenient creation of real copies
    (should help to cope with bug #2537131).

  - Included some translations in locale directory. Note that these
    message catalogs are not installed in any way at this time.
    Current translations include:
      Finnish by yours truly
      Italian by Salvatore Isaja
      Polish by AmiArt

  - wxPython bindings for Python 2.6.


  Changes:

  - Property grid and any editor control are now always refreshed by
    default when property value is changed.

  - Property value images are no longer shrinked horizontally.

  - wxPGProperty::AddChild() is now protected, and should (as it should
    always have) be only called from ctor of a derived property class.
    You can use new wxPGProperty member functions AppendChild() and 
    InsertChild() to safely add child properties. Also, there is
    AddPrivatechild() if you really need to call AddChild() outside of
    a property (but only use it if you know what you are doing).


  Bugs Fixed:

  - Splitters were not repainted when other windows were being moved over
    the grid.

  - wxPropertyGridManager description text box was sometimes drawn
    incorrectly when other windows werer being moved over it.

  - Changing SpinCtrl editor value with Page Up and Page Down keys could
    cause grid to scroll (at least under wxGTK).

  - Now when grid client width is reduced, the column which is made more
    narrow is always the last one instead of the widest one, even when
    wxPG_SPLITTER_AUTO_CENTER window style is used (fixes bug #2645749,
    "Splitter moves when changing wxPropertyGrid height").

  - Should now really have fixed problems Vetoing wxEVT_PG_CHANGING with
    Choice or ComboBox editors (issue #1 of bug #2493542).

  - wxPropertyGrid's virtual height given to scroll bar was overestimated,
    roughly by one property (bug #2636552).

  - Overriding wxPropertyGridManager::CreatePropertyGrid() did not work.
    Added note to docs that you may need to use two-stage creation to
    make this work (bug #2543991).

  - Fixed an old wxMac font issue (bug #1396167).

  - wxPropertyGridPage::Clear() and wxPropertyGridManager::Clear() now
    more consistently clear selection before operating (wxTrac ticket
    #10497).

  - wxPGChoices::GetCount() should now work always (bug #2592692).

  - wxPGMultiButton now works even if primary editor control (which
    usually is wxTextCtrl) was not created in wxPGEditor::CreateControls().

  - Fixed some spurious splitter movement if grid size was somehow
    changed too soon after its creation.

  - Reading property name from XRC usually failed (bug #2787863, fix
    by Knut).

  - Disabled properties could not be expanded or collapsed via keyboard.
    (while they still could be expanded/collpsed by clicking the expander
    button).

  - It was possible to cut from and paste into read-only text properties.

  - wxPropertyGrid::GetPropertyBackgroundColour() returned inaccurate
    value for category properties.

  - wxPropertyGridInterface::SetPropertyReadOnly() with wxPG_DONT_RECURSE
    flag didn't do anything.



Version 1.4.4 ( Jan-18-2009 )

  New Features:

  - Added virtual member function wxPGProperty::OnValidationFailure().

  - Added wxPGProperty::DeleteChildren() (fixes bug #2454044).

  - Added wxPropertyGrid::RefreshEditor() (does the same as wxPGProperty
    RefreshEditor()).


  Changes:

  - In unspecified value state, selected check box editor will now appear
    as a faint rectangle.

  - Using wxDP_ALLOWNONE in wxDateProperty's "PickerStyle" attribute
    will now enable additional support for unspecified property value
    (addresses issue #3 presented in bug report #2493542).


  Bugs Fixed:

  - There were various situations where deleting properties left
    the grid in inconsistent state.

  - Fixed crash when expanding/collapsing categories too quickly
    (bug #2462471, fix by biggske).

  - Splitter was not visible for nested categories.

  - Fully conform to the documented statement according to which
    names of properties with non-root, non-category parent are not
    stored in the per-page hash map.

  - Vetoing wxEVT_PG_CHANGING did not really work if editor was
    Choice or ComboBox (issue #1 of bug #2493542).

  - wxPGProperty::RefreshEditor() will now update editor's font
    based on modified-status of a property (bug #2473166).

  - wxPGProperty::RefreshEditor() did not update check box
    editor correctly (bug #2477359).

  - It was not possible to change child bool property by editing
    text of a parent (bug #2479469).

  - Fixed a possible crash in wxPGProperty::StringToValue() that
    could be caused by user editing text value of a property with
    nested children.

  - SetPropertyValueUnspecified(p) was out-of-sync with
    p->SetValue(wxNullVariant) (bug #2490332, also resolves issue
    #2 presented in #2493542).

  - Default Sort function used case-sensitive string comparison.

  - Fixed a bunch of compiler warnings (bug #2473143).



Version 1.4.3 ( Dec-14-2008 )

  New Features:

  - Added RemoveProperty() member function in wxPropertyGridInterface.
    Unlike DeleteProperty(), it does not actually delete the property
    object (feature request #2411896).


  Changes:

  - SpinCtrl's "value change by motion" feature (introduced in previous
    version) is now disabled by default. Enable on a property basis
    by setting "MotionSpin" to 1 or true. Also, due to problems, it is
    now only supported on Windows platforms.


  Bugs Fixed:

  - Critical SpinCtrl bug fix (wxGTK only).



Version 1.4.2 ( Dec-07-2008 )

  New Features:

  - Property sort order can be customized by calling wxPropertyGrid::
    SetSortFunction(). Function has following signature:
        int sortfunc(wxPropertyGrid*, wxPGProperty*, wxPGProperty*);

    (feature request #2397071).

  - wxSpinCtrl editor can now be used to adjust the property value by
    moving mouse vertically when one of the spin buttons is held down
    (patch by Terry Farnham).


  Bugs Fixed:

  - Editor value validation on implicit clear selection has now been
    removed (fixes bug #2221099). It is now application's responsibility
    to call, if needed, CommitChangesFromEditor() before adding or
    removing properties.

  - wxPropertyGrid could crash when created in a wxDialog.

  - DatePickerCtrl editor could crash if property had unspecified or
    otherwise incompatible value (bug #2338976).

  - Background colour of description box static texts should no longer be
    incorrect (bug #2377983, patch by AmiArt).

  - Windows CE build error in advprops.cpp.



Version 1.4.1 ( Nov-02-2008 )

  Bugs Fixed:

  - wxFontProperty == operator was unnecessarily reimplemented
    (bug #2189626).

  - On some platforms (at least wxGTK), changing selected property could
    cause focus to be lost from wxPropertyGrid (bug #2159094).

  - Toggling wxPG_DESCRIPTION window style did not take selected property
    into account (bug #2159069).

  - In wxPropertyGridManager, alphabetic mode is now sorted even if
    wxPG_AUTO_SORT flag is absent (bug #2162053).

  - User should no longer be able to modify disabled or read only child
    properties by editing their parent (bug #2181860).

  - It was not possible to set value of unspecified child by editing
    parent's composite string (bug #2186553).

  - In composed string values, entry for last children was often omitted
    if it was empty (and possibly unspecified, bug #2197916).

  - Proper wxVariantData::Eq() implementation (fixes bug #2190259).

  - Eliminated 64-bit build warnings (bug #2156069).

  - wxPropertyGridIterator can now be copied and assigned to
    wxPropertyGridConstIterator.



Version 1.4.0 ( Oct-5-2008 )

  This is beginning of a new stable branch. wxPropertyGrid API will
  not be changed in any upcoming 1.4.x releases. In addition, new
  features and internal changes will be kept at minimum to improve
  stability.

  NOTE ON WXWIDGETS SVN TRUNK(2.9+) COMPATIBILITY: wxPropertyGrid is
  already part of wxWidgets 2.9 and later. Attempt to use this separate
  component unmodified will result in compilation failures.

  NOTE ON WXWIDGETS 2.6 COMPATIBILITY: This version will not work
  properly with wxWidgets 2.6.x, unless wxVariant is patched to have
  reference counting. See readme in directory 'patch_wx26' for
  details.

  New Features (compared to previous stable version, 1.2.12.
                List of changes compared to latest development
                release, 1.3.8, are at the bottom):

  - You can set cell text, bitmap, and colours, of any column of any
    property (including category captions), using wxPropertyGrid::SetPropertyCell().

  - You can now have more than two columns.

  - Property attribute names are now strings instead of ints. Old
    attribute defines will work however, as they have been properly
    adjusted. Also, arbitrary attributes can now be added to
    properties.

  - You can specify default values on property-basis by setting
    "DefaultValue" attribute.

  - New event: wxEVT_PG_CHANGING. It is dispatched just before a
    property value is about to change, and can be Veto()ed to abort
    the change. Pending value can be acquired using
    wxPropertyGridEvent::GetValue().

  - wxPGChoices now supports bitmaps, text colour and background
    colour. They can be set by calling wxPGChoiceEntry::SetBitmap()
    etc.

  - wxIntProperty now supports and automatically uses wxLongLong,
    when necessary.

  - wxUIntProperty now supports and automatically uses wxULongLong,
    when necessary.

  - Editors can have multiple buttons (an arbitrary mix of wxButtons
    and wxBitmapButtons is possible).

  - XRC support. You need to link samples/xh_propgrid.cpp with your
    app. Also requires wxWidgets 2.8.0+. Note that xh_propgrid.h is
    located in include/wx/propgrid.

  - Added ability to save and restore user-editable state
    (selection, scroll position, splitter position, set of expanded
    properties, and current page). Use SaveEditableState() and
    RestoreEditableState(), which both work with wxString value.

  - Added wxPropertyGrid::SetValidationFailureBehavior(), for
    setting behavior when user enters an invalid value in property.
    New validation failure behavior includes beep, marking cell
    red, and displaying text message.

  - New extra window style wxPG_EX_UNFOCUS_ON_ENTER. Using it causes
    keyboard focus to be released from text editor when enter is
    pressed.

  - wxIntProperty, wxUIntProperty and wxFloatProperty now support
    attributes "Min" and "Max" (long, double, and longlong values
    are supported). SpinCtrl editor recognizes these attributes.

  - SpinCtrl editor supports "Step" attribute, which controls how
    much value changes when arrow buttons are pressed.

  - SpinCtrl editor supports "Wrap" attribute, which when set to
    true will cause value to wrap around at "Min" and "Max".

  - Added inline help attribute, which displays given text in value
    cell when text is otherwise empty. To use, set "InlineHelp"
    attribute, with string value, to a property.

  - Added "Units" attribute. This string is displayed behind
    displayed property value, or in third column, if enabled.

  - Added wxPropertyGrid::ChangePropertyValue(), which is similar
    to SetPropertyValue() but also runs validation process and
    sends property change event.

  - Added extra style wxPG_EX_HIDE_PAGE_BUTTONS which allows hiding
    page selector buttons on wxPropertyGridManager toolbar.

  - For true/false values, properties in general now support bools
    in addition to integer ones.

  - SpinCtrl editor supports up, down, pageup and pagedown keys.

  - GetPropertiesWithFlags() and SetPropertiesFlags() for getting
    and setting specific flag of many properties at once. Useful, eg.,
    for acquiring list of all expanded properties. However, using
    them directly is not necessary as utility functions
    GetExpandedProperties() and SetExpandedProperties() have also
    been added.

  - Added wxPGProperty::GetFullName() (patch #1774780 by Viacheslav
    Tararin).

  - AddActionTrigger(), ClearActionTriggers(), to add keyboard
    event to action triggers (SetActionTrigger() is removed).

  - Displayed value of property without text ctrl is copied
    when Ctrl-C or Ctrl-Insert is pressed (you can also add
    or set your own triggers using feature mentioned above).

  - Added FitColumns() member function, which minimizes
    column sizes based on size of cell contents.

  - Added wxPropertyGrid methods SetEmptySpaceColour() and
    GetEmptySpaceColour().


  Changes (compared to 1.2.12):

  - Various internal changes have been made to reduce library code
    size, simplify creation of user properties, and to have graphics
    update in more consistent manner.

  - The excellent wxCode build system is now used. As a result,
    wxPropertyGrid can now be built stand alone on both Windows
    and Linux.

  - Factory functions are no longer used to instantiate properties.
    Instead, property class names now lack 'Class' and new instances
    are created with 'new' operator. For instance:

    1.2.x:
        pg->Append( wxStringProperty(wxT("Label"), wxT("Name"),
                                     wxT("Value")) );

    1.3.0:
        pg->Append( new wxStringProperty(wxT("Label"), wxT("Name"),
                                         wxT("Value")) );

    Class bodies of all usable properties are now found in props.h
    and advprops.h.

  - wxVariant is now used internally to store property values.

  - wxPGProperty now inherits from wxObject. Also, it is now an
    abstract class.

  - wxPGId is now a simply a typedef of wxPGProperty*. This means,
    for instance, that to check if "id" is ok, you only need to
    check if the pointer is not NULL.

  - wxAdv library is now a dependency.

  - In wxWidgets 2.8.0 and newer, built-in wxOwnerDrawnComboBox is
    now used.

  - wxPropertyContainerMethods is now wxPropertyGridInterface. Typedef has
    been added to improve backwards compatibility.

  - Deprecated 'target' page manipulating functions in wxPropertyGridManager.
    Instead, you should use GetPage() and functions of resulting
    wxPropertyGridPage object. wxPropertyGridManager's methods that
    only affect single page now affect the selected page.

  - wxColour cannot be retrieved using GetPropertyValueAsWxObjectPtr!!!
    (atleast not in wxWidgets 2.8.x).
    Instead use code like this:
       wxVariant variant = pg->GetPropertyValue();
       wxColour colour << variant;

  - Setting property value programmatically now updates the editor
    control, if active (bug #1774793).

  - New class wxPGEditorDialogAdapter and virtual wxPGProperty::GetEditorDialog()
    help in using same dialog generation code with properties with
    different base classes.

  - In wxPropertyGridManager, each page tracks its own splitter
    positions.

  - Wherever possible, GetValue functions return actual type instead
    of reference.

  - Appearance of expand/collapse buttons can be customized by
    implementing wxPropertyGrid::DrawExpanderButton() in a derived
    class.

  - Intermediate "canvas" wxPanel is used in the wxScrolledWindow.
    This should eliminate pretty much all remaining graphics glitches
    that could occur when resizing the control.

  - Iteration of properties should new be more consistent with
    somewhat STL'ish wxPropertyGridIterator classes.

  - Properties no longer cannot have empty names.

  - Some item iteration functions replaced with a version that accepts
    iterator flags as argument (for instance, GetLastProperty is now
    GetLastItem, but not all names have changed).

  - wxPGProperty::GetAttributes() now simply returns reference to
    m_attributes member (which of type wxPGAttributeStorage).

  - wxPropertyGrid::GetPropertyValues() can now also return property
    attributes (if flag wxPG_INC_ATTRIBUTES is provided). They are
    returned as list variants with name "@<propname>@attr".

  - New extra style: wxPG_EX_TRADITIONAL_VALIDATORS. When used,
    validators will work with editor controls like they do in
    wxWidgets itself.

  - wxPropertyGridPopulator has been completely rearranged for maximum
    usability with wxPropertyGridXmlHandler.

  - Removed compactor button and property priority system.

  - Delete() -> DeleteProperty().

  - SetPropertyUnspecified() -> SetPropertyValueUnspecified()

  - wxPG_EX_GREY_LABEL_WHEN_DISABLED is always enabled. The actual
    macro define is now zero and deprecated.

  - wxPG_EX_PROCESS_EVENTS_IMMEDIATELY is always enabled. The actual
    macro define is now zero and deprecated.

  - wxPG_INCLUDE_ADVPROPS can now be defined as 0 in project options
    or command-line to exclude "advanced" properties such as
    wxFontProperty and wxCursorProperty from compilation.

  - wxPG_INCLUDE_MANAGER can now be defined as 0 in project options
    or command-line to exclude wxPropertyGridManager from compilation.

  - wxPG_VERSION replaced with wxCode-style version macros (ie. you
    can now use wxCHECK_PROPGRID_VERSION).

  - wxPG_EX_TRADITIONAL_VALIDATORS is now default behavior. Use new
    extra style wxPG_EX_LEGACY_VALIDATORS to revert to wxPG 1.2
    validator usage.

  - wxMultiChoiceProperty now uses wxArrayString as value type.
    You can still acquire list of values by calling
    wxMultiChoiceProperty::GetValueAsArrayInt().

  - wxMultiChoiceProperty now supports attribute "UserStringMode".
    Default is 0, but if set to 1 or 2, user can enter arbitrary
    strings in addition to those in the list of choices.

  - wxBoolProperty's string representation is now '[not]label'
    instead of 'true/false' when in composite strings. This
    should be more readable.

  - wxBoolProperty's string representation is now empty string
    when false, in composite strings of uneditable (ie. readonly)
    properties. This is demonstrated in new 'wxWidgets traits'
    sample property on third page of sample app.

  - Added GetProperty() as alias for GetPropertyByName().

  - Auto unspecified now works on a property basis. Use code
    like this to enable:
       pg->GetProperty(propName)->SetFlag(wxPG_PROP_AUTO_UNSPECIFIED);

  - Oversized bitmaps are no longer drawn in the property grid
    itself, or in editor control.


  wxPython Bindings Related Changes:

  - PyObjectFromVariant() and related '<<' operator now returns new
    reference (ie. it calls Py_INCREF).


  Changes Only Relevant to Property and Editor Developers:

  - wxPGVariant no longer exists. As a consequence, virtual method
    DoGetValue now returns wxVariant.

  - Class wxPGPropertyWithChildren has been merged with wxPGProperty.
    This change should be only a minor detail, even to custom
    property developers.

  - As a consequence to above change, wxParentProperty has been
    removed (or, more accurately, is now typedef of wxStringProperty).
    If you need the old displayed value composition behavior, use
    string wxT("<composed>") as value.

    Now as a rule of thumb, properties which parent is not root
    property or category, are now globally accessible (by name) only
    with 'ParentName.ChildName' notation, where ParentName is name
    of parent property, and ChildName is the name of property given
    in constructor. wxPGProperty::GetName() will return name
    in this format as well, where appropriate.

  - DoSetValue has been splitted into two new functions:
    bool ValidateValue(wxVariant&) const, which should validate the
    value, and OnSetValue() which can do some value-change related
    post-processing, including conversion.

  - Virtual SetValueFromString is replaced by StringToValue which
    does not change the value, but just the new one. SetValueFromString()
    still exists as non-virtual setter function.

  - Virtual SetValueFromInt is replaced by StringToValue which does
    not change the value, but just the new one. SetValueFromInt()
    still exists as non-virtual setter function.

  - wxPGPropertyWithChildren::ChildChanged(wxPGProperty* property)
    has been changed to:

    void wxPGProperty::ChildChanged( wxVariant& thisValue, int childIndex,
                                     wxVariant& childValue ) const = 0;

    It is now supposed to modify 'thisValue' instead of m_value and use
    given childValue instead of manually fetching one from the child.

  - wxPGValueType no longer exists. Internal wxVariants and attribute
    system are supposed to replace the missing functionality.

  - wxPGClassInfo no longer exists. wxObject classinfo facilities
    are to be used instead.

  - A completely new custom rendering system. You can use new
    wxPGProperty method GetCellRenderer to return wxPGCellRenderer
    instance. OnCustomPaint will still work, assuming you change
    GetImageSize correctly (see below).

  - The basic WX_PG_DECLARE_PROPERTY macros are no longer used.
    Instead, now you need to place property class into the header.

  - GetImageSize has been replaced by OnMeasureImage, which is
    similar except it also has "int item" argument (for measuring
    list items). GetImageSize itself is now a deprecated method.
    Overriding it will cause run-time assertion failure.

  - wxPGChoiceInfo now only has wxPGChoices* m_choices member.

  - virtual SetAttribute method removed. bool DoSetAttribute( const
    wxString& name, wxVariant& value ) and wxVariant DoGetAttribute()
    const replace the functionality.

  - In order to support wxEVT_PG_CHANGING, wxPGProperty::OnEvent(),
    and wxLongStringProperty::OnButtonClick() should now use new
    method wxPGProperty::SetValueInEvent(value) to change property
    value, based on received user input.

  - Atleast one constructor of property class needs to have default
    value specified for all arguments (you can use wxPG_LABEL for
    both name and label).

  - wx(Base)EnumProperty::m_index is made private. Use
    GetIndex/SetIndex to manipulate it in derived classes.

  - Property flag wxPG_PROP_UNSPECIFIED is no longer used to
    indicate that the property value is unspecified. Instead, Null
    variant is set as value.

  - WX_PG_DECLARE_PROPERTY_CLASS now requires class name as argument
    (so it is used similar to DECLARE_DYNAMIC_CLASS).

  - WX_PG_DECLARE_EDITOR_CLASS now requires class name as argument
    (so it is used similar to DECLARE_DYNAMIC_CLASS).

  - WX_PG_DECLARE_DERIVED_PROPERTY_CLASS and
    WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS macros are deprecated.
    In new code, use DECLARE_DYNAMIC_CLASS and
    IMPLEMENT_DYNAMIC_CLASS instead.

  - WX_PG_DECLARE_PARENTAL_TYPE_METHODS macro is removed, as
    it would no longer declare any functions.

  - wxPGEditor::CreateControls now has return value of type
    wxPGWindowList, which is used to return primary and secondary
    wxWindows. The old writeback pointer has naturally been removed
    from the argument list.

  - wxPGEditor::CreateControls must now use propGrid->GetPanel() as
    the parent for controls instead of plain propGrid. Runtime
    assertion failure will otherwise result.

  - wxPGEditor::DrawValue argument list changed to (dc, rect,
    property, text).

  - CopyValueFromControl() replaced with GetValueFromControl(),
    which is supposed to return wxVariant value instead of setting
    it.

  - Control pointer (wxWindow* primary and the kind) passed to
    property methods is now always the actual control instead of
    clipper window.

  - You can create editors with fixed width by adding following code
    to CreateControls(): propGrid->SetInternalFlag( wxPG_FL_FIXED_WIDTH_EDITOR );

  - wxPGEditor methods SetValueToUnspecified(), SetControlStringValue(),
    and SetControlIntValue() now have additional argument (in first
    position): wxPGProperty*.

  - wxPGSpinCtrlEditor class declaration is now available
    in advprops.h.


  New Features (compared to version 1.3.8):

  - New extra window style wxPG_EX_UNFOCUS_ON_ENTER. Using it causes
    keyboard focus to be released from text editor when enter is
    pressed. Note that this behavior is probably going to be on by
    default in wxPropertyGrid in wxWidgets 2.9.

  - AddActionTrigger(), ClearActionTriggers(), to add keyboard
    event to action triggers (SetActionTrigger() is removed).

  - Displayed value of property without text ctrl is copied
    when Ctrl-C or Ctrl-Insert is pressed (you can also add
    or set your own triggers using feature mentioned above).


  Changes (compared to version 1.3.8):

  - wxPropertyGrid editable state save and restore system has been
    changed. It now works with wxString alone, without any intermediate
    storage class. In other words, SaveEditableState() now simply returns
    wxString that can be fed to RestoreEditableState.

  - Setting wxPropertyGridManager window style after control has been
    created can now be used to show and hide description text box (by
    supplying or omitting wxPG_DESCRIPTION style).

  - wxPropertyContainerMethods is now wxPropertyGridInterface. Typedef has
    been added to improve backwards compatibility.

  - Properties can no longer have empty names.


  Bugs Fixed (compared to version 1.3.8):

  - Behavior specified by wxPG_EX_AUTO_UNSPECIFIED_VALUES was basically
    always enabled.

  - wxPropertyGridManager::GetDescBoxHeight() returned inconsistent
    value.

  - Pressing esc when keyboard focus was in property text editor could
    crash on some platforms (at least Linux, bug #2138858).

  - Many properties failed to work properly with unspecified value
    (bug #2128485).

  - Settings property attribute to wxNullVariant would cause
    GetAttribute() to fail (bug #2128485).

  - wxPGProperty::OnEvent() was never called if primary editor
    window was NULL (as could be if limited editing was used).

  - Select all from keyboard (Ctrl-A) did not work in embedded
    wxTextCtrl editor (bug #2130285).

  - 'Exiting' editor control with ESC did not work properly.

  - Under wxGTK buttons should now display '...' text more
    consistently (note that they may now appear slightly wider
    on smaller font sizes).

  - Using properties with identical labels under same composed
    parent led to strange value update behavior (thanks Grgory
    Jaegy).

  - Changing property value in property's dialog could result in
    crash under wxGTK.

  - wxPython bindings: wxPropertyContainerMethods.GetVIterator()
    usually crashed due to fatal bug in wxPGVIterator copy ctor.

  - Cut, copy, and paste from keyboard did not work in
    embedded wxTextCtrl editor. Now should work atleast on
    Windows.

  - Even selecting property with datepicker editor could cause
    program to crash.

  - Setting property value string did not update children of
    composed parent.

  - Showing popup menu on wxPropertyGrid caused crash
    (fix by Grgory Jaegy).

  - wxPGTextCtrlEditor::UpdateControl() destroyed property's
    value if it had flags wxPG_PROP_PASSWORD (bug #2046081, fix
    by Nicholas John).

