INCOMPATIBLE CHANGES SINCE 2.8.x
================================
+
+ Notice that these changes are described in more details in
+ the "Changes Since wxWidgets 2.8" section of the manual,
+ please read it if the explanation here is too cryptic.
+
+
+Unicode-related changes
+-----------------------
+
+The biggest changes in wxWidgets 3.0 are the changes due to the merge of the
+old ANSI and Unicode build modes in a single build. See the Unicode overview
+in the manual for more details but here are the most important incompatible
+changes:
+
+- Many wxWidgets functions taking "const wxChar *" have been changed to take
+ either "const wxString&" (so that they accept both Unicode and ANSI strings;
+ the argument can't be NULL anymore in this case) or "const char *" (if the
+ strings are always ANSI; may still be NULL). This change is normally
+ backwards compatible except:
+
+ a) Virtual functions: derived classes versions must be modified to take
+ "const wxString&" as well to make sure that they continue to override the
+ base class version.
+
+ b) Passing NULL as argument: as NULL can't be unambiguously converted to
+ wxString, in many cases code using it won't compile any more and NULL
+ should be replaced with an empty string.
+
+
+- Some structure fields which used to be of type "const wxChar *" (such as
+ wxCmdLineEntryDesc::shortName, longName and description fields) are now of
+ type "const char *", you need to remove wxT() or _T() around the values used
+ to initialize them (which should normally always be ASCII).
+
+- wxIPC classes didn't work correctly in Unicode build before, this was fixed
+ but at a price of breaking backwards compatibility: many methods which used
+ to work with "wxChar *" before use "void *" now (some int parameters were
+ also changed to size_t). While wxIPC_TEXT can still be used to transfer 7
+ bit text, the new wxIPC_UTF8TEXT format is used for transferring wxStrings.
+ Also notice that connection classes should change the parameter types of
+ their overridden OnExecute() or override a more convenient OnExec() instead.
+
+
+wxODBC and contrib libraries removal
+------------------------------------
+
+wxODBC library was unmaintained since several years and we couldn't continue
+supporting it any longer so it was removed. Please use any of the other open
+source ODBC libraries in the future projects.
+
+Also the "applet", "deprecated", "fl", "mmedia" and "plot" contrib libraries
+were removed as they were unmaintained and broken since several years.
+The "gizmos", "ogl", "net" and "foldbar" contribs have been moved to
+wxCode (see http://wxcode.sourceforge.net/complist.php); they are now
+open for futher development by volunteers.
+
+The "stc" and "svg" contribs instead have been moved respectively into a new
+"official" library stc and in the core lib.
+
+
Changes in behaviour not resulting in compilation errors, please read this!
---------------------------------------------------------------------------
sizes of the sizer items to be in the same proportion as the items
proportions to return to the old behaviour.
+- wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
+ your code you need to override DoFreeze/Thaw() instead now.
+
+- wxCalendarCtrl has native implementation in wxGTK, but it has less features
+ than the generic one. The native implementation is used by default, but you
+ can still use wxGenericCalendarCtrl instead of wxCalendarCtrl in your code if
+ you need the extra features.
+
+- wxDocument::FileHistoryLoad() and wxFileHistory::Load() now take const
+ reference to wxConfigBase argument and not just a reference, please update
+ your code if you overrode these functions and change the functions in the
+ derived classes to use const reference as well.
+
+- Under MSW wxExecute() arguments are now always properly quoted, as under
+ Unix, and so shouldn't contain quotes unless they are part of the argument.
+
+- wxDocument::OnNewDocument() doesn't call OnCloseDocument() any more.
+
+- If you use wxScrolledWindow::SetTargetWindow() you must implement its
+ GetSizeAvailableForScrollTarget() method, please see its documentation for
+ more details.
+
+
Changes in behaviour which may result in compilation errors
-----------------------------------------------------------
- WXWIN_COMPATIBILITY_2_4 doesn't exist any more, please update your code if
you still relied on features deprecated since version 2.4
+- wxDC classes hierarchy has changed, if you derived any classes from wxDC you
+ need to review them as wxDC doesn't have any virtual methods any longer and
+ uses delegation instead of inheritance to present different behaviours.
+
- Return type of wxString::operator[] and wxString::iterator::operator* is no
longer wxChar (i.e. char or wchar_t), but wxUniChar. This is not a problem
in vast majority of cases because of conversion operators, but it can break
and has to be replaced with this:
switch (str[i].GetValue()) { ... }
-- Return type of wxString::c_str() is now wxCStrData struct and not
- const wxChar*. wxCStrData is implicitly convertible to const char* and
- const wchar_t*, so this only presents a problem if the compiler cannot
- convert the type. In particular, Borland C++ and DigitalMars compilers
- don't correctly convert operator?: operands to the same type and fail with
- compilation error instead. This can be worked around by explicitly casting
- to const wxChar*:
- wxLogError(_("error: %s"), !err.empty() ? (const wxChar*)err.c_str() : "")
+- Return type of wxString::c_str() is now a helper wxCStrData struct and not
+ const wxChar*. wxCStrData is implicitly convertible to both "const char *"
+ and "const wchar_t *", so this only presents a problem if the compiler cannot
+ apply the conversion. This can happen in 2 cases:
+
+ + There is an ambiguity because the function being called is overloaded to
+ take both "const char *" and "const wchar_t *" as the compiler can't choose
+ between them. In this case you may use s.wx_str() to call the function
+ matching the current build (Unicode or not) or s.mb_str() or s.wc_str() to
+ explicitly select narrow or wide version of it.
+
+ Notice that such functions are normally not very common but unfortunately
+ Microsoft decided to extend their STL with standard-incompatible overloads
+ of some functions accepting "const wchar_t *" so you may need to replace
+ some occurrences of c_str() with wx_str() when using MSVC 8 or later.
+
+ + Some compilers, notably Borland C++ and DigitalMars, don't correctly
+ convert operator?: operands to the same type and fail with compilation
+ error instead. This can be worked around by explicitly casting to const
+ wxChar*: wxLogError(_("error: %s"), !err.empty() ? (const wxChar*)err.c_str() : "")
- wxCtime() and wxAsctime() return char*; this is incompatible with Unicode
build in wxWidgets 2.8 that returned wchar_t*.
- Virtual wxHtmlParser::AddText() takes wxString, not wxChar*, argument now.
-- Funtions that took wxChar* arguments that could by NULL in wxWidgets 2.8.
+- Functions that took wxChar* arguments that could by NULL in wxWidgets 2.8
are deprecated and passing NULL to them won't compile anymore, wxEmptyString
must be used instead.
+- wxTmemxxx() functions take either wxChar* or char*, not void*: use memxxx()
+ with void pointers.
+
- Removed insecure wxGets() and wxTmpnam() functions.
+- Removed global GetLine() function from wx/protocol/protocol.h, use
+ wxProtocol::ReadLine() instead.
+
+- wxVariant no longer derives from wxObject. wxVariantData also no longer
+ derives from wxObject; instead of using wxDynamicCast with wxVariantData you
+ can use the macro wxDynamicCastVariantData with the same arguments.
+
+- wxWindow::Next/PrevControlId() don't exist any more as they can't be
+ implemented correctly any longer because automatically generated ids are not
+ necessarily allocated consecutively any more. Use GetChildren() to find the
+ next/previous control sibling instead.
+
+- Calling wxConfig::Write() with an enum value will fail to compile because
+ wxConfig now tries to convert all unknown types to wxString automatically.
+ The simplest solution is to cast the enum value to int.
+
+- Several wxImage methods which previously had "long bitmaptype" parameters
+ have been changed to accept "wxBitmapType bitmaptype", please use enum
+ wxBitmapType in your code.
Deprecated methods and their replacements
-----------------------------------------
- wxDocManager::MakeDefaultName() replaced by MakeNewDocumentName() and
wxDocument::GetPrintableName() with GetUserReadableName() which are simpler
to use
+- wxXmlProperty class was renamed to wxXmlAttribute in order to use standard
+ terminology. Corresponding wxXmlNode methods were renamed to use
+ "Attribute" instead of "Property" or "Prop" in their names.
+- wxConnection::OnExecute() is not formally deprecated yet but new code should
+ use simpler OnExec() version which is called with wxString argument
+- wxMenuItem::GetLabel has been deprecated in favour of wxMenuItem::GetItemLabelText
+- wxMenuItem::GetText has been deprecated in favour of wxMenuItem::GetItemLabel
+- wxMenuItem::GetLabelFromText has been deprecated in favour of wxMenuItem::GetLabelText
+- wxMenuItem::SetText has been deprecated in favour of wxMenuItem::SetItemLabel
+- wxBrush's, wxPen's SetStyle() and GetStyle() as well as the wxBrush/wxPen ctor now take
+ respectively a wxBrushStyle and a wxPenStyle value instead of a plain "int style";
+ use the new wxBrush/wxPen style names (wxBRUSHSTYLE_XXX and wxPENSTYLE_XXX) instead
+ of the old deprecated wxXXX styles (which however are still available).
+- EVT_CALENDAR_DAY event has been deprecated, use EVT_CALENDAR_SEL_CHANGED.
+- EVT_CALENDAR_MONTH and EVT_CALENDAR_YEAR events are deprecated,
+ use EVT_CALENDAR_PAGE_CHANGED which replaces both of them.
+- wxCalendarCtrl::EnableYearChange() and wxCAL_NO_YEAR_CHANGE are deprecated.
+ There is no replacement for this functionality, it is being dropped as it is
+ not available in native wxCalendarCtrl implementations.
+- wxDC::SetClippingRegion(const wxRegion&) overload is deprecated as it used
+ different convention from the other SetClippingRegion() overloads: wxRegion
+ passed to it was interpreted in physical, not logical, coordinates. Replace
+ it with SetDeviceClippingRegion() if this was the correct thing to do in your
+ code.
+- wxTE_AUTO_SCROLL style is deprecated as it's always on by default anyhow.
Major new features in this release
----------------------------------
+- wxWidgets is now always built with Unicode support but provides the same
+ simple (i.e. "char *"-tolerant) API as was available in ANSI build in the
+ past.
+
+- wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally,
+ depending on what is optimal for the target platform.
+
+- New propgrid library containing wxPropertyGrid and related classes, many
+ enhancements to wxDataViewCtrl.
+
+- Event loops, timers and sockets can now be used in wxBase, without GUI.
+
+- Documentation for wxWidgets has been converted from LaTex to C++ headers
+ with Doxygen comments and significantly improved in the process (screenshots
+ of various controls were added, more identifiers are now linked to their
+ definition &c). Any reports about inaccuracies in the documentation are
+ welcome (and due to using the simple Doxygen syntax it is now easier than
+ ever to submit patches correcting them! :-)
+
2.9.0
-----
All:
-- Added wxJoin() and wxSplit() functions (Francesco Montorsi)
-- Added wxMutex::LockTimeout() (Aleksandr Napylov)
-- Added wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev)
-- Implemented wxMemoryInputStream::CanRead()
-- Added wxEXEC_BLOCK flag (Hank Schultz)
-- Add support for wxStream-derived classes to wxRTTI (Stas Sergeev)
-- Added wxStreamBuffer::Truncate() (Stas Sergeev)
-- Allow using wxEventLoop in console applications (Lukasz Michalski)
-- Added functions for Base64 en/decoding (Charles Reimers)
-- Added functions for atomically inc/decrementing integers (Armel Asselin)
+- Added (experimental) IPv6 support to wxSocket (Arcen).
+- Cleaned up wxURI and made it Unicode-friendly.
+- Add support for wxExecute(wxEXEC_ASYNC) in wxBase (Lukasz Michalski)
+- Added wxXLocale class and xlocale-like functions using it.
+- Allow loading message catalogs from wxFileSystem (Axel Gembe)
+- Added wxMessageQueue class for inter-thread communications
+- Use UTF-8 for Unicode data in wxIPC classes (Anders Larsen)
+- Added support for user-defined types to wxConfig (Marcin Wojdyr).
+- Added numeric options support to wxCmdLineParser (crjjrc)
+- Added wxJoin() and wxSplit() functions (Francesco Montorsi).
+- Added wxDateTime::FormatISOCombined() and ParseISODate/Time/Combined()
+- Added wxMutex::LockTimeout() (Aleksandr Napylov).
+- Added wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev).
+- Implemented wxMemoryInputStream::CanRead().
+- Implemented wxMemoryFSHandler::FindFirst/Next().
+- Added wxEXEC_BLOCK flag (Hank Schultz).
+- Add support for wxStream-derived classes to wxRTTI (Stas Sergeev).
+- Added wxStreamBuffer::Truncate() (Stas Sergeev).
+- Allow using wxEventLoop in console applications (Lukasz Michalski).
+- Added functions for Base64 en/decoding (Charles Reimers).
+- Added support for binary data to wxConfig (Charles Reimers).
+- Added functions for atomically inc/decrementing integers (Armel Asselin).
- wxLogInterposer has been added to replace wxLogPassThrough and new
- wxLogInterposerTemp was added
-- Added support for broadcasting to UDP sockets (Andrew Vincent)
+ wxLogInterposerTemp was added.
+- Added support for broadcasting to UDP sockets (Andrew Vincent).
+- Documentation now includes the wx library in which each class is defined.
+- wxrc --gettext now generates references to source .xrc files (Heikki
+ Linnakangas).
+- wxVariant::Unshare allows exclusive allocation of data that must be shared,
+ if the wxVariantData::Clone function is implemented.
+- Added wxWeakRef<T>, wxScopedPtr<T>, wxSharedPtr<T> class templates
+- Added wxVector<T> class templates
+- Added wxON_BLOCK_EXIT_SET() and wxON_BLOCK_EXIT_NULL() to wx/scopeguard.h.
+- Added wxEvtHandler::QueueEvent() replacing AddPendingEvent() and
+ wxQueueEvent() replacing wxPostEvent().
+- wxString now uses std::[w]string internally by default, meaning that it is
+ now thread-safe if the standard library provided with your compiler is.
+- Added wxCmdLineParser::AddUsageText() (Marcin 'Malcom' Malich).
+- Fix reading/writing UTF-7-encoded text streams.
+- Corrected bug in wxTimeSpan::IsShorterThan() for equal time spans.
+- Use std::unordered_{map,set} for wxHashMap/Set if available (Jan van Dijk).
+- Added wxString::Capitalize() and MakeCapitalized().
+- Added wxArray::swap().
+- Added wxSHUTDOWN_LOGOFF and wxSHUTDOWN_FORCE wxShutdown() flags (troelsk).
+- Added wxArtProvider::GetNativeSizeHint(); GetSizeHint() as well as
+ GetNativeSizeHint() now return more sensible values in wxMSW and wxMac and
+ no longer return bogus values.
+
+All (Unix):
+
+- Added wx-config --optional-libs command line option (John Labenski).
+- Noticeably (by a factor of ~150) improve wxIPC classes performance.
All (GUI):
-- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty)
-- Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron)
-- Added support for drop down toolbar buttons (Tim Kosse)
-- Added support for labels for toolbar controls (Vince Harron)
-- Added wxMessageDialog::SetMessage() and SetExtendedMessage()
+- Added wxDataViewCtrl class and helper classes.
+- Integrated wxPropertyGrid in wxWidgets itself (Jaakko Salli).
+- Provide native implementation of wxCalendarCtrl under wxMSW and wxGTK.
+- Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames().
+- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty).
+- Added wxNotificationMessage class for non-intrusive notifications.
+- Added wxWindow::Show/HideWithEffect().
+- Added wxWrapSizer (Arne Steinarson).
+- Added wxSpinCtrlDouble (John Labenski).
+- Support custom labels in wxMessageDialog (Gareth Simpson for wxMac version).
+- Also added wxCANCEL_DEFAULT to wxMessageDialog.
+- Allow copying text in the log dialogs.
+- Added multisample (anti-aliasing) support to wxGLCanvas (Olivier Playez).
+- Initialize wx{Client,Paint,Window}DC with fonts/colours of its window.
+- Added wxNativeContainerWindow to allow embedding wx into native windows.
+- Added custom controls support to wxFileDialog (Diaa Sami and Marcin Wojdyr).
+- Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron).
+- Added support for drop down toolbar buttons (Tim Kosse).
+- Added support for labels for toolbar controls (Vince Harron).
+- Added wxMessageDialog::SetMessage() and SetExtendedMessage().
+- Added wxListCtrl::Set/GetColumnsOrder() (Yury Voronov).
+- Made wxLogWindow thread-safe (Barbara Maren Winkler).
+- Added wxWindow::AlwaysShowScrollbars() (Julian Scheid).
+- Added wxMouseEvent::GetClickCount() (Julian Scheid).
+- Added wxBG_STYLE_TRANSPARENT background style (Julian Scheid).
+- Added XRCSIZERITEM() macro for obtaining sizers from XRC (Brian Vanderburg II).
+- New and improved wxFileCtrl (Diaa Sami and Marcin Wojdyr).
- Added wxEventBlocker class (Francesco Montorsi).
- Added wxFile/DirPickerCtrl::Get/SetFile/DirName() (Francesco Montorsi).
- Added wxSizerFlags::Top() and Bottom().
- Fixed tab-related drawing and hit-testing bugs in wxRichTextCtrl.
- Implemented background colour in wxRichTextCtrl.
- Fixed crashes in helpview when opening a file.
-- Set locale to the default in all ports, not just wxGTK
-- Added wxJoystick::GetButtonState/Position() (Frank C Szczerba)
-- Added wxGridUpdateLocker helper class (Evgeniy Tarassov)
-- Support wxGRID_AUTOSIZE in wxGrid::SetRow/ColLabelSize() (Evgeniy Tarassov)
-- Added wxWindow::NavigateIn() in addition to existing Navigate()
-- Add support for <data> tags to wxrc
-- Support wxAPPLY and wxCLOSE in CreateStdDialogButtonSizer() (Marcin Wojdyr)
-- Show standard options in wxCmdLineParser usage message (Francesco Montorsi)
-- Added wxRect::operator+ (union) and * (intersection) (bdonner)
+- Set locale to the default in all ports, not just wxGTK.
+- Added wxJoystick::GetButtonState/Position() (Frank C Szczerba).
+- Added wxGridUpdateLocker helper class (Evgeniy Tarassov).
+- Support wxGRID_AUTOSIZE in wxGrid::SetRow/ColLabelSize() (Evgeniy Tarassov).
+- Added wxWindow::NavigateIn() in addition to existing Navigate().
+- Add support for <data> tags to wxrc.
+- Support wxAPPLY and wxCLOSE in CreateStdDialogButtonSizer() (Marcin Wojdyr).
+- Show standard options in wxCmdLineParser usage message (Francesco Montorsi).
+- Added wxRect::operator+ (union) and * (intersection) (bdonner).
+- Added support for two auxiliary mouse buttons to wxMouseEvent (Chris Weiland).
+- Added wxToolTip::SetAutoPop() and SetReshow() (Jan Knepper).
+- Added wxTaskBarIcon::Destroy().
+- Added XRC handler for wxSearchCtrl (Sander Berents).
+- Read image resolution from TIFF, JPEG and BMP images (Maycon Aparecido Gasoto).
+- Add support for reading alpha data from TIFF images.
+- Added wxSYS_DCLICK_TIME system metric constant (Arne Steinarson).
+- Added wxApp::Get/SetAppDisplayName() (Brian A. Vanderburg II).
+- Added wxWindow::GetPopupMenuSelectionFromUser() (Arne Steinarson).
+- Implemented wxTreeCtrl::GetPrevVisible() in the generic version and made the
+ behaviour of GetNextSibling() consistent between wxMSW and generic versions.
+- Merged wxRichTextAttr and wxTextAttrEx into wxTextAttr, and added a font table
+ to wxRichTextBuffer to reduce wxFont consumption and increase performance.
+- Optimize wxGenericTreeCtrl::Collapse/ExpandAllChildren()
+ (Szczepan Holyszewski).
+- Added <scrollrate> parameter to wxScrolledWindow XRC handler.
+- Added support for automatic dialog scrolling, via the new
+ wxDialogLayoutAdapter class and various new wxDialog functions. See the
+ topic "Automatic Scrolling Dialogs" in the manual for further details.
+- Added support for resizing wxWizard bitmaps to the current page height,
+ via SetBitmapPlacement, SetBitmapBackgroundColour and SetMinimumBitmapWidth.
+ Also made it easier to derive from wxWizard and override behaviour.
+- Made wxSizer::Fit() set the client size of the target window
+- Add support for wxDatePickerCtrl in wxGenericValidator (Herry Ayen Yang)
+- Added wxWindow::HasFocus().
+- Added wxGLCanvas::IsDisplaySupported().
+- Added wxApp::SetNativeTheme() (Stefan H.).
+- Made wxSpinCtrl::Reparent() in MSW and generic versions (Angelo Mottola).
+- Freeze() and Thaw() now recursively freeze/thaw the children too.
+- Generalized wxScrolledWindow into wxScrolled<T> template that can derive
+ from any window class, not just wxPanel.
+- Allow having menu separators with ids != wxID_SEPARATOR (Jeff Tupper)
+- Fix appending items to sorted wxComboCtrl after creation (Jaakko Salli)
+- Don't blit area larger than necessary in wxBufferedDC::UnMask (Liang Jian)
+- Fixed wxPixelData<wxImage> compilation (Leonardo Fernandes).
+- Added wxImage::GetType() (troelsk).
+- Added wxGenericStaticBitmap suitable for display of large bitmaps.
+- Support wxListCtrl::GetViewRect() in report view too.
+- Implement wxListCtrl::GetSubItemRect() in generic version (David Barnard).
+- Added wxVListBox::GetItemRect() (Javier Urien).
+- Show busy cursor in wxLaunchDefaultBrowser and add wxBROWSER_NOBUSYCURSOR.
+- Added wxFlexGridSizer::Is{Row,Col}Growable() (Marcin Wojdyr).
+- Added "enabled" and "hidden" attributes to radio box items in XRC.
+- wxWindow::IsBeingDeleted() now returns true not only if the window itself is
+ marked for destruction but also if any of its parent windows are.
+- Improved drawing of the hint during column move in wxGrid (Santo Pfingsten).
+- Add wxGridSelectRowsOrColumns selection mode to wxGrid.
+- Get/HasModifiers() of wxKeyEvent are now also available in wxMouseEvent.
wxGTK:
-- Support for markup and ellipsization in wxStaticText (Francesco Montorsi)
-- Native implementation for wxHyperlinkCtrl (Francesco Montorsi)
-- Native keyboard navigation implementation
-- Don't overwrite primary selection with clipboard and vice versa
+- Support for markup and ellipsization in wxStaticText (Francesco Montorsi).
+- Native implementation for wxHyperlinkCtrl (Francesco Montorsi).
+- Native keyboard navigation implementation.
+- Added wxCB_SORT support to wxComboBox (Evgeniy Tarassov).
+- Don't overwrite primary selection with clipboard and vice versa.
- Implemented support for underlined fonts in wxStaticText.
- wxTopLevelWindow::SetSizeHints size increments now work.
- wxTopLevelWindow::GetSize() returns the size including the WM decorations.
- wxTopLevelWindow::GetClientSize() returns 0x0 when the window is minimized.
- Added support for colour cursors (Pascal Monasse).
-- Pass current control text to EVT_TEXT handler for wxSpinCtrl (John Ratliff)
-- Added gtk.tlw.can-set-transparency system option
+- Pass current control text to EVT_TEXT handler for wxSpinCtrl (John Ratliff).
+- Added gtk.tlw.can-set-transparency system option.
+- Added support for GTK+ print backend
+- Fix changing font/colour of label in buttons with images (Marcin Wojdyr).
+- Fix wxDC::Blit() support for user scale and source offset (Marcin Wojdyr).
wxMac:
-- Better IconRef support (Alan Shouls)
-- Added support for changing button labels in wxMessageDialog (Gareth Simpson)
-- Fix duplicate (empty) help menu in non-English programs (Andreas Jacobs)
-- Allow accelerators to be used with buttons too (Ryan Wilcox)
-- Support resource forks in wxCopyFile() (Hank Schultz)
+- Better IconRef support (Alan Shouls).
+- Fix duplicate (empty) help menu in non-English programs (Andreas Jacobs).
+- Allow accelerators to be used with buttons too (Ryan Wilcox).
+- Support resource forks in wxCopyFile() (Hank Schultz).
+- Implement wxLocale::GetInfo() using CFLocale.
+- Native wxCollapsiblePane implementation.
wxMSW:
- Fixed infinite loop in wxThread::Wait() in console applications.
- Return the restored window size from GetSize() when window is minimized.
-- wxCheckListBox now looks more natively, especially under XP (Marcin Malich)
+- wxCheckListBox now looks more native, especially under XP (Marcin Malich).
+- Allow tooltips longer than 64 (up to 128) characters in wxTaskBarIcon
+- Fix centering wxFileDialog and allow positioning it.
+- Allow centering wxMessageDialog on its parent window (troelsk).
+- Use vertical scrollbar in wxMessageDialog if it's too big to fit on screen.
+- Show resize gripper on resizeable dialogs (Kolya Kosenko).
+- Implement support for display enumeration under WinCE (Vince Harron).
+- Use different Win32 class names in different wx instances (Thomas Hauk).
+- Support multiline labels for wxCheckBox and wxToggleButton.
+- Print preview is now rendered in the resolution used by printer and
+ accurately represents what will be printed. This fixes wxHtmlEasyPrinting
+ preview inaccuracies on Windows; on other platforms, native preview
+ should be used.
wxX11:
-- Added mouse wheel support (David Hart)
-- Make Enter key activate the default button (David Hart)
+- Added mouse wheel support (David Hart).
+- Make Enter key activate the default button (David Hart).
+
+wxDFB:
+
+- Implement wxBitmap ctor from XBM data.
+
+
+2.8.9
+-----
+
+All:
+
+- Optimize wxString::Replace() for single character arguments.
+- Updated Hindi translation (Priyank Bolia).
+- Use tr1::unordered_{map,set} for wxHash{Map,Set} implementation if available
+ in STL build; in particular do not use deprecated hash_{map,set} which
+ results in a lot of warnings from newer g++ (Jan Van Dijk and Pete Stieber).
+
+All (GUI):
+
+- Added support for reading alpha channel in BMP format (Kevin Wright).
+- Fixed help viewer bug whereby the splitter sash in wxHtmlHelpWindow could
+ go underneath the left-hand pane, permanently, after resizing the
+ help window.
+- Fixed wxHTML default font size for printing to be 12pt regardless of the
+ platform, instead of depending on GUI toolkit's screen configuration.
+- Support wxDP_ALLOWNONE style in generic wxDatePickerCtrl version.
+- Set wxKeyEvent::m_uniChar correctly in the events generated by generic
+ wxListCtrl (Mikkel S).
+- Fix changing size of merged cells in wxGrid (Laurent Humbertclaude).
+- Fixed wrapping bug in wxRichTextCtrl when there were images present;
+ now sets the cursor to the next line after pressing Shift+Enter.
+- Fixed Cmd+Back, Cmd+Del word deletion behaviour in wxRichTextCtrl.
+- Fix crash when reading malformed PCX images.
+- Fix bug with wrong transparency in GIF animations (troelsk).
+- Store palette information for XPM images in wxImage (troelsk).
+- Fixed selection bugs and auto list numbering in wxRichTextCtrl.
+- Significantly optimize wxGrid::BlockToDeviceRect() for large grids (kjones).
+- Introduced new wxAuiToolBar class for better integration and look-and-feel.
+- Fix a crash in wxAuiFrameManager when Update() was called in between mouse-up
+ and mouse-down events
+- wxAUI: added various NULL-ptr asserts.
+- Fixed problem with Floatable(false) not working in wxAuiFrameManager.
+- Fixed maximize bug in wxAUI.
+- Allow period in link anchors in wxHTML.
+- Fixed memory corruption in wxHTML when parsing "&;" in the markup.
+- Fixed event type in EVT_GRID_CMD_COL_MOVE and EVT_GRID_COL_MOVE.
+- wxGrid doesn't steal focus when hiding editor any more (Tom Eckert).
+
+All (Unix):
+
+- MIME types reading fixed when running under GNOME, reading .desktop
+ files and also the default application list.
+- Added filesys.no-mimetypesmanager system option so that applications that
+ must load an XRC file at program startup don't have to incur the
+ mime types manager initialization penalty.
+
+wxMSW:
+
+- Potentially incompatible change: wxExecute() arguments are now quoted if they
+ contain spaces and existing quotes are escaped with a backslash. However, to
+ preserve compatibility, the argument is unchanged if it is already quoted.
+ Notice that this behaviour will change in wxWidgets 3.0 where all arguments
+ will be quoted, please update your code now if you are affected and use only
+ wxWidgets 2.8.9 or later.
+- Fix keyboard support in wxSpinCtrl broken in 2.8.8.
+- Compile fix for WinCE in window.cpp (no VkKeyScan in Windows CE).
+- Support disabling items before adding them to the menu (Christian Walther).
+- Allow to call SetFont(wxNullFont) to reset the font to default.
+- Implement UUID::operator==() and !=() (SQLAware Corporation).
+- Fixed long standing (introduced in 2.6.3) bug which resulted in always
+ creating a DIB and not DDB in wxBitmap(const wxImage&) ctor.
+- Fix the bug with wxFileDialog not being shown at all if the default file name
+ was invalid.
+- Fix hang in keyboard navigation code with radio buttons under Windows 2000.
+- Implement wxWinINetInputStream::GetSize() (spicerno).
+- Always copy "has alpha" flag when copying bitmaps (SQLAware Corporation).
+
+wxGTK:
+
+- Fixed masking of disabled bitmaps in wxMenuItem and wxStaticBitmap.
+- Fixed generation of events for an initially empty wxDirPickerCtrl.
+- Fixed detection of Meta key state so that NumLock isn't misdetected
+ as Meta (requires GTK+ 2.10).
+- Fix changing font/colour of label in buttons with images (Marcin Wojdyr).
+
+wxMac:
+
+- Fixed a glitch where clicking on a scrollbar (but not moving the scrollbar)
+ would cause the window to scroll.
+
+
+2.8.8
+-----
+
+All:
+
+- Fixed bug with parsing some dates in wxDateTime (Bob Pesner).
+- Fixed bug with parsing negative time zones in wxDateTime::ParseRfc822Date().
+- Initialize current line in wxTextBuffer ctor (Suzuki Masahiro).
+- Improved performance of XML parsing (Francesco Montorsi).
+- Fix wxDateTime::ParseRfc822Date() to handle missing seconds (Joe Nader).
+
+All (GUI):
+
+- Added wxWindow::GetNextSibling() and GetPrevSibling().
+- Support wxGRID_AUTOSIZE in wxGrid::SetRow/ColLabelSize() (Evgeniy Tarassov).
+- Ensure that wxGrid::AutoSizeColumn/Row() never sets column/row size
+ smaller than the minimal size.
+- Added <scrollrate> parameter to wxScrolledWindow XRC handler.
+- wxRichTextCtrl performance has been improved considerably.
+- Several wxRichTextCtrl style, paste and undo bugs fixed.
+- Added wxRichTextCtrl superscript and subscript support (Knut Petter Lehre).
+- wxNotebook RTTI corrected, so now wxDynamicCast(notebook, wxBookCtrlBase)
+ works.
+- When focus is set to wxScrolledWindow child, scroll it into view.
+- Improve wximage::ResampleBox() (Mihai Ciocarlie).
+- Implemented ScrollList() in generic wxListCtrl (Tim Kosse).
+- SaveAs in docview takes into account path now.
+- Fixed wxXmlResource::GetText() to convert data to current locale's
+ charset in ANSI build.
+- wxGrid now indicates focus by using different colour for selection
+ and hiding cell cursor when it doesn't have focus.
+- Added alpha support to wxImage::Paste() (Steven Van Ingelgem)
+- Use current date when opening popup in generic wxDatePickerCtrl.
+- Remove associated help text from wxHelpProvider when a window is destroyed.
+- Added wxSizerFlags::ReserveSpaceEvenIfHidden() and
+ wxRESERVE_SPACE_EVEN_IF_HIDDEN sizer flag.
+- Added wxWindow::ClientToWindowSize() and WindowToClientSize() helpers.
+- Added wxSizer::ComputeFittingClientSize() and ComputeFittingWindowSize().
+- Fixed wxSizer::SetSizeHints() to work when the best size decreases.
+- Fixed crash in wxHtmlHelpController if the help window is still open.
+- Fixed generic art provider to scale bitmaps down to client-specific
+ best size if needed.
+- Made wxSpinCtrl::Reparent() in MSW and generic versions (Angelo Mottola).
+- Fixed timing of malformed animated GIFs in wxHTML (Gennady Feller).
+- Fixed incorrect layout width caching in wxHTML (Jeff Tupper).
+- wxHTML: preserve TAB characters when copying <pre> content to clipboard.
+- Set focus to wxCalendarCtrl when it is clicked.
+- Don't clear the list control when wxLC_[HV]RULES style is toggled.
+- Don't crash when Ctrl-Shift-T is pressed in empty wxStyledTextControl.
+
+All (Unix):
+
+- Fixed shared libraries to not depend on GStreamer when built with
+ --enable-media; only wxMedia library depends on it now.
+- wxLaunchDefaultBrowser() now uses xdg-open if available.
+- Don't close UDP socket if an empty datagram is received (Mikkel S)
+- Honour locale modifiers such a "@valencia" in system locale (Tim Kosse)
+
+wxMSW:
+
+- Fix rare bug with messages delivered to wrong wxSocket (Tim Kosse).
+- Fix setting icons when they have non-default (16*16 and 32*32) sizes.
+- Fixed wxLocale::GetInfo to use the C locale.
+- Don't enable disabled windows when showing them (Harry McKame).
+- Fix assert when using owner-drawn menu items with the newest (Vista) SDK.
+- Fixed wxTextCtrl to not process clipboard events twice if there's
+ a custom wxEVT_COMMAND_TEXT_* event handler.
+- Fix wxComboBox to not lose the current value if it was programmatically set
+ to a value not in a list of choices on popup close (Kolya Kosenko)
+- Switching wxListCtrl to report mode from another one now uses full row
+ highlight, just as if the control were created in report mode initially.
+- Use correct index of the right-clicked column in wxListCtrl in the
+ corresponding event even when the control is scrolled horizontally.
+- Implement wxRadioBox::Reparent() correctly (Vince Harron).
+- Make context sensitive help work for the text part of wxSpinCtrl.
+- wxFileType::GetCommand() now looks at Explorer associations and CurVer
+ for increased reliability and conformance to user expectations.
+- Fixed double Init() call in wxTopLevelWindow causing a memory leak on
+ SmartPhone.
+- Fixed rendering of borders for wxTextCtrl with wxTE_RICH(2) style when
+ using Windows XP's Classic UI theme.
+- Text controls with wxTE_RICH style now also generate wxClipboardTextEvents.
+- Fixed wxEVT_COMMAND_TEXT_ENTER generation in wxSpinCtrl.
+- Fixed wxSpinCtrl::GetClientSize() to return sensible value and not just
+ spin button's client size.
+- Fixed IMPLEMENT_APP() to be compatible with the -WU flag of Borland C++
+ compiler (Matthias Bohm).
+- Correct size calculation for toolbars containing controls under pre-XP
+ systems (Gerald Giese)
+
+wxGTK:
+
+- Return false from wxEventLoop::Dispatch() if gtk_main_quit() was called and
+ so the loop should exit (Rodolfo Schulz de Lima).
+- Implement wxListBox::EnsureVisible() (Andreas Kling)
+- Fixed wxCURSOR_HAND to map to GDK_HAND2 and not GDK_HAND1, for consistency
+ with other applications.
+- Fix wxNotebook::GetPage{Text,Image}() when they were called from the page
+ change event handler for the first added page (Mikkel S).
+- Fixed wxBitmapButton to use focus and hover bitmaps correctly.
+- Fixed race condition which could cause idle processing to stop without
+ processing all pending events.
+- wxAcceleratorTable now works with buttons too.
+
+wxMac:
+
+- Fixed cursor for wxBusyCursor and wxContextHelp.
+- Fixed wxListCtrl to respect items' non-default fonts.
+- wxListCtrl::SetColumnWidth() now supports wxLIST_AUTOSIZE.
+- Fixed handling of transparent background in borderless wxBitmapButton.
+
+
+2.8.7
+-----
+
+All:
+
+- Fixed bug with default proxy destruction in wxURL (Axel Gembe).
+
+wxMSW:
+
+- Correct (harmless) warnings given for forward-declared DLL-exported classes
+ by mingw32 4.2 (Tim Stahlhut).
+
+wxGTK:
+
+- Added gtk.window.force-background-colour wxSystemOptions option to work around
+ a background colour bug in the gtk-qt theme under KDE.
+- Implemented wxGetClientDisplayRect() correctly for wxGTK and X11-based ports.
+
+
+2.8.6
+-----
+
+All:
+
+- Fixed another bug in wxFileConfig when deleting entries (Axel Gembe)
+- Added Portuguese translation (Antonio Cardoso Martins)
2.8.5
- Added msw.font.no-proof-quality system option, see manual for description
- Fix appearance of notebook with non-top tabs under Windows Vista
- Fixed bug with symbol resolving in wxStackWalker (Axel Gembe)
+- Fixed showing busy cursor for disabled windows and during wxExecute()
+- Set the string of wxEVT_COMMAND_CHECKLISTBOX_TOGGLED events (Luca Cappa)
+- Fix problems with timers on SMP machines in wxAnimationCtrl (Gennady)
wxGTK:
- Add right button event for wxToolbar's tools (Tim Kosse)
- Don't unconditionally add wxCAPTION style to wxMiniFrame
- Generate wxEVT_COMMAND_LIST_END_LABEL_EDIT event even if label didn't change
+- Fix WX_GL_STEREO attribute handling (Tristan Mehamli)
+- Fix wxThread::SetPriority() when the thread is running (Christos Gourdoupis)
+- Fixed off by 1 bug in wxDC::GradientFillLinear() (Tim Kosse)
2.8.4