wxString, in many cases code using it won't compile any more and NULL
should be replaced with an empty string.
+- Functions returning "const wxChar *" were changed as well. Mostly they now
+ return wxString which is then transparently convertible to either "const char
+ *" or "const wchar_t *" but in some cases, notably wxDateTime::ParseXXX(),
+ the returned string could be NULL and so a separate helper class is used. If
+ you obtain compilation errors because of this, you can always correct them by
+ explicitly assigning the function return value to a variable of wanted type.
+ A slightly more intrusive but better solution is to use ParseXXX() version
+ with wxString::const_iterator output parameter which simply returns bool to
+ indicate the parsing success.
- Some structure fields which used to be of type "const wxChar *" (such as
wxCmdLineEntryDesc::shortName, longName and description fields) are now of
GetSizeAvailableForScrollTarget() method, please see its documentation for
more details.
+- Processing of pending events now requires a running event loop.
+ Thus initialization code (e.g. showing a dialog) previously done in wxApp::OnRun()
+ or equivalent function should now be done into wxApp::OnEventLoopEnter().
+ See wxApp::OnEventLoopEnter() and wxApp::OnEventLoopExit() docs for more info.
+
Changes in behaviour which may result in compilation errors
-----------------------------------------------------------
need to review them as wxDC doesn't have any virtual methods any longer and
uses delegation instead of inheritance to present different behaviours.
+- wxWindow::ProcessEvent() (and other wxEvtHandler methods inherited by wxWindow)
+ has been made protected to prevent wrongly using it instead of correct
+ GetEventHandler()->ProcessEvent().
+ New ProcessWindowEvent() was added for convenience.
+
- 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
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
+- wxWindow::Next/PrevControlId() don't exist any more as they couldn't be
implemented correctly any longer because automatically generated ids are not
- necessarily allocated consecutively any more. Use GetChildren() to find the
+ necessarily allocated consecutively now. Use GetChildren() to find the
next/previous control sibling instead.
- Calling wxConfig::Write() with an enum value will fail to compile because
have been changed to accept "wxBitmapType bitmaptype", please use enum
wxBitmapType in your code.
+- wxGridCellEditor::EndEdit() signature has changed and it was split in two
+ functions, one still called EndEdit() and ApplyEdit(). See the documentation
+ of the new functions for more details about how grid editors should be
+ written now.
+
+- wxEVT_GRID_CELL_CHANGE event renamed to wxEVT_GRID_CELL_CHANGED and shouldn't
+ be vetoed any more, use the new wxEVT_GRID_CELL_CHANGING event to do it.
+
+- Now wxWidgets at startup in debug builds checks if all wxEvent-derived classes
+ correctly implement the Clone() function, logging a warning if they don't.
+ A correct implementation for MyCustomEventClass::Clone() is simply:
+ virtual wxEvent *Clone() const { return new MyCustomEventClass(*this); }
+
+- Global wxPendingEvents and wxPendingEventsLocker objects were removed.
+ You may use wxEventLoopBase::SuspendProcessingOfPendingEvents instead of
+ locking wxPendingEventsLocker now.
+
+
Deprecated methods and their replacements
-----------------------------------------
"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).
+- Various wxMenuItem methods were deprecated in favour of more consisently
+ named new versions:
+ . GetLabel() is now GetItemLabelText()
+ . GetText() is not GetItemLabel()
+ . GetLabelFromText() is now GetLabelText()
+ . SetText() is now 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.
+- EVT_GRID_CELL_CHANGE was deprecated, use EVT_GRID_CELL_CHANGED instead if you
+ don't veto the event in its handler and EVT_GRID_CELL_CHANGING if you do.
- 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.
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.
-
+- wxThreadHelper::Create() has been renamed to CreateThread which has a better
+ name for a mix-in class, and allows setting the thread type.
+- wxDos2UnixFilename, wxUnix2DosFilename, wxStripExtension, wxGetTempFileName,
+ wxExpandPath, wxContractPath, wxRealPath, wxCopyAbsolutePath, wxSplitPath
+ were deprecated in favour of wxFileName methods. See docs for more info.
+- wxEvtHandler::TryValidator/Parent() are deprecated, override the new and
+ documented TryBefore/After() methods if you used to override these ones.
+- wxGetMultipleChoices() is deprecated, use wxGetSelectedChoices() which has
+ the same signature but returns -1 and not 0 if the dialog was cancelled.
Major new features in this release
----------------------------------
- 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.
+- 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.
+
+- Events can now be connected to any functor, not necessarily a method of
+ wxEvtHandler-derived class. The compile-time safety was also improved.
-- Events 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! :-)
+
+- Support for persistent objects automatically saving and restoring their state
+ was added.
2.9.0
- 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)
+- 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)
+- 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 wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev).
- Implemented wxMemoryInputStream::CanRead().
- Implemented wxMemoryFSHandler::FindFirst/Next().
+- Added wxEventLoop::DispatchTimeout().
+- Added wxZlibStream::SetDictionary() (Axel Gembe).
- Added wxEXEC_BLOCK flag (Hank Schultz).
- Add support for wxStream-derived classes to wxRTTI (Stas Sergeev).
- Added wxStreamBuffer::Truncate() (Stas Sergeev).
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 wxWeakRef<T>, wxScopedPtr<T>, wxScopedArray<T>, wxSharedPtr<T> templates
+ and renamed old wx/ptr_{scpd,shrd}.h headers to wx/scoped{ptr,array}.h and
+ wx/sharedptr.h (but old headers are still provided for compatibility).
- 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
- 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.
+- Added wxSocket::ShutdownOutput().
+- Handle exceptions thrown from overridden wxView::OnCreate() gracefully.
+- Added wxPATH_RMDIR_FULL/RECURSIVE wxFileName::Rmdir() flags (Marcin Malich).
+- Added wxStandardPaths::GetAppDocumentsDir().
+- Added wx-prefixed versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros.
+- Added wxFileName::ReplaceEnvVariable and wxFileName::ReplaceHomeDir.
+- Added wxProtocol::SetDefaultTimeout(); the default timeout for both wxHTTP and wxFTP
+ protocols is 60 seconds.
+- Added wxStrnlen() for safe computation of string length.
+- Added wxImage::Clear() (troelsk).
+- Added wxLog::Log().
+- Added wxProtocolLog and use it in wxFTP.
+- Added wxXmlResource::GetResourceNode().
+- Optimize wxString::Replace() to use an O(N) algorithm (Kuang-che Wu).
+- Added support of %l format specifier to wxDateTime::ParseFormat().
+- wxImage handlers can now support multiple extensions (Ivan Krestinin).
+- Added wxFileName::StripExtension() (troelsk).
+- Added wxLOCALE_DATE/TIME_FMT support to wxLocale::GetInfo().
All (Unix):
- Added wx-config --optional-libs command line option (John Labenski).
+- Noticeably (by a factor of ~150) improve wxIPC classes performance.
+- Configure options --with-opengl and --enable-mediactrl now default to "auto":
+ if OpenGL and GStreamer libraries are available the "gl" and "media" wx libraries
+ are automatically built.
All (GUI):
- Added wxDataViewCtrl class and helper classes.
- Integrated wxPropertyGrid in wxWidgets itself (Jaakko Salli).
- Provide native implementation of wxCalendarCtrl under wxMSW and wxGTK.
+- Added wxHeaderCtrl and allow using it in wxGrid.
+- Added wxRearrangeList, wxRearrangeCtrl and wxRearrangeDialog.
- Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames().
- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty).
- Added wxNotificationMessage class for non-intrusive notifications.
- Added wxWrapSizer (Arne Steinarson).
- Added wxSpinCtrlDouble (John Labenski).
- Support custom labels in wxMessageDialog (Gareth Simpson for wxMac version).
+- Added wxScrolledWindow::ShowScrollbars().
- Also added wxCANCEL_DEFAULT to wxMessageDialog.
- Allow copying text in the log dialogs.
- Added multisample (anti-aliasing) support to wxGLCanvas (Olivier Playez).
+- Added wxEVT_COMMAND_COMBOBOX_DROPDOWN/CLOSEUP events (Igor Korot).
+- Added wxCAL_SHOW_WEEK_NUMBERS wxCalendarCtrl style (Sören Meyer-Eppler).
- 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 support for labels for toolbar controls (Vince Harron).
- Added wxMessageDialog::SetMessage() and SetExtendedMessage().
- Added wxListCtrl::Set/GetColumnsOrder() (Yury Voronov).
+- Added wxTextEntry::SetHint().
- 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 support for drop-down toolbar buttons to XRC.
- 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 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
+- 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 "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.
+- Improved drawing of the hint during column move in wxGrid (Santo Pfingsten).
- Add wxGridSelectRowsOrColumns selection mode to wxGrid.
+- Add wxEVT_GRID_CELL_CHANGING event matching wxEVT_GRID_CELL_CHANGED.
- Get/HasModifiers() of wxKeyEvent are now also available in wxMouseEvent.
+- Provide new/old cell value in wxEVT_GRID_CELL_CHANGING/CHANGED events.
+- Added wxArtProvider::GetNativeSizeHint(); GetSizeHint() as well as
+ GetNativeSizeHint() now return more sensible values in wxMSW and wxMac and
+ no longer return bogus values.
+- Added wxControl::SetLabelText() and EscapeMnemonics().
+- Added support for wxFILTER_EMPTY and wxFILTER_DIGITS styles to wxTextValidator;
+ added also the SetCharIncludes() and SetCharExcludes() utilities.
+- Added wxIMAGE_OPTION_PNG_FILTER and many wxIMAGE_OPTION_PNG_COMPRESSION_* options
+ to wxImage and wxPNGHandler to allow for custom compression levels when saving PNGs
+ (Perdana Panduwana)
+- Added GetValue(), GetRange(), GetMessage() functions to wxProgressDialog
+- Moved yield functions to wxEventLoopBase and implemented for wxMSW and wxGTK
+ a selective wxEventLoopBase::YieldFor() function.
+ Added also wxEventLoopBase::IsYielding to help cure re-entrancy problems with Yield().
+- Render <th> element contents in bold in wxHTML.
+- Added wxGrid::{Set,Get}{Row,Col}Sizes() methods (Andrey Putrin).
+- Add support for wxSP_WRAP in the generic version of wxSpinCtrlDouble.
+- Add alignment flags support to wxSpinCtrl[Double] (Andrew Radke).
+- Added wxGetSelectedChoices() replacing wxGetMultipleChoices() (Kolya Kosenko).
+- Check whether document fits into page horizontally in wxHtmlPrintout, see the
+ new CheckFit() method for more information.
+- Allow reading GIFs with incorrectly specified animation size.
+- Return number of frames in animated GIF from wxGIFHandler::GetImageCount().
wxGTK:
- Support for markup and ellipsization in wxStaticText (Francesco Montorsi).
+- Ellipsize long strings in wxStatusBar (Francesco Montorsi)
- Native implementation for wxHyperlinkCtrl (Francesco Montorsi).
- Native keyboard navigation implementation.
- Added wxCB_SORT support to wxComboBox (Evgeniy Tarassov).
wxMSW:
+- Fix many problems with selection in multi-selection wxTreeCtrl (Jonathan Liu).
- Fixed infinite loop in wxThread::Wait() in console applications.
- Return the restored window size from GetSize() when window is minimized.
- wxCheckListBox now looks more native, especially under XP (Marcin Malich).
+- wxCheckListBox now also supports use of client data (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).
accurately represents what will be printed. This fixes wxHtmlEasyPrinting
preview inaccuracies on Windows; on other platforms, native preview
should be used.
+- Implement wxFileName::SetTimes() for directories (Steve Lamerton).
+- Added wxToolTip::SetMaxWidth() and improved default wrapping (Joachim Hönig).
+- Changed default toolbar bitmaps size from obsolete 16x15 to 24x24 used
+ by modern apps.
+- Ellipsize long strings in wxStatusBar (Francesco Montorsi)
+- Fix spurious repaint when changing tooltip text (Jonathan Liu).
+- Fix wxSP_WRAP and wxSP_ARROW_KEYS in wxSpinCtrlDouble (Andrew Radke).
wxX11:
- Implement wxBitmap ctor from XBM data.
+2.8.10:
+-------
+
+All:
+
+- wxHashMap::insert() doesn't update the value if it didn't insert the element
+ any more (Marcin Malich).
+- Correct bug in wxTimeSpan::Format() for negative spans.
+- Correct several bugs in wxList using end() iterators (Suzumizaki-Kimitaka).
+- Added Vietnamese translation (Tran Ngoc Quan).
+- Updated Slovenian translation (Martin Srebotnjak).
+- Corrected Serbian locale name (Cody Precord).
+- Fix wxURL::GetInputStream() for URLs with special characters in credentials
+ (Robert Wruck).
+- Fix wxURI::GetUser() for URIs without password.
+- Correct wxDateTime DST computation for 2006 and later (Christopher Barker).
+
+All (GUI):
+
+- wxRTC: fixed input that uses Alt on Mac OS X, for example Polish Pro input.
+ Also fixed a bug whereby e.g. Croatian keys didn't work, by moving more code
+ to key down handler.
+- wxRTC: fixed a problem with HTML list generation.
+- wxRTC: no longer deletes a character when content is selected before
+ pressing Delete.
+- wxRTC: fixed inability to select no superscript and no subscript in
+ formatting dialog.
+- wxRTC: fixed centering and right-justification when combined with left
+ indentation.
+- wxRTC: fixed lack of right margin when centering or right-justifying.
+- wxRTC: fixed wrong descent when wrapping lines with different font sizes.
+- wxRTC: fixed wrapping problem for long lines.
+- wxRTC: all buffer margins now respected.
+- wxRTC: Added wxRE_CENTRE_CARET to centre the caret line vertically.
+- Fixed wxHTML's pagebreaks computation in tables (D.J.Stauffer).
+- Fixed wxHtmlWindow::SelectionToText() to correctly insert newlines after
+ single-cell paragraphs.
+- Fixed wxHTML's line breaks handling in <pre> blocks broken in 2.8.8 (#10120).
+- wxHTML: don't include extra whitespace in table cells.
+- Implemented wxWindow::DragAcceptFiles() on all platforms.
+- Added wxAUI_MGR_LIVE_RESIZE flag to wxAuiManager and made it the default on
+ wxMac with CoreGraphics where sash drawing isn't implemented.
+- Use bitmap mask in wxSplashScreen.
+- Translate "(c)" and "(C)" to the real copyright sign in wxAboutBox.
+- Fix painting of highlight border for merged cells in wxGrid (K. Jones).
+- Fix handling of long lines in wxGridCellAutoWrapStringRenderer.
+
+All (Unix):
+
+- Return false from wxSingleInstanceChecker::IsAnotherRunning() if an error
+ occurred while opening or reading the lock file (Lauri Nurmi).
+
+wxMSW:
+
+- Fixed bug with using non default encoding in wxTextCtrl in ANSI build.
+- Restored generation of events for accelerators when there is no menu bar.
+- Fixed wxArtProvider::GetSizeHint() to return 16x16 for wxART_FRAME_ICON.
+- Fixed toolbar buttons so that they don't disappear temporarily when clicked
+ if the event handler causes window update.
+- Fix display enumeration under WinCE (Vince Harron).
+- Fix best size calculation for wxNotebook with multiple rows (Alex McCarthy).
+- Correct coordinates of wxDropFilesEvent (Dmitriy Maksimov).
+- Fix handling of abandoned mutexes in wxMutex (David Heffernan).
+- Avoid warnings about deprecated localtime with MSVC8/9 (Chris Stankevitz).
+- Fixed invisible CHM tooltip text bug when window text colour is black.
+- Automatically adjust toolbar's tool size if the provided bitmaps
+ don't fit into the default size.
+- Don't generate EVT_LISTBOX_DCLICK events with incorrect indices.
+- Don't reuse the double click handled by activation event handler for toggling
+ the item in wxTreeCtrl.
+
+
+wxMSW/CE:
+
+- Don't hardcode the menu bar height (Michele Spighi).
+
+wxGTK:
+
+- Fixed printing to use fonts sizes adjustment consistent with wxMSW.
+- Make colours used by list, tree and status bar controls more consistent with
+ the system theme settings (Tim Kosse).
+- Worked around bug in GTK+ < 2.14 where enabling some controls such
+ as wxButton didn't re-enable sensitivity until the mouse was moved.
+
+wxOS2:
+
+- Added implementation for wxSingleInstanceChecker contributed by Lauri Nurmi
+
+
2.8.9
-----