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
-----------------------
changes:
- Many wxWidgets functions taking "const wxChar *" have been changed to take
- either "const wxString&" so that they accept both Unicode and ANSI strings.
- and the argument can't be NULL or "const char *" if the strings are always
- ANSI but may be NULL. This change is normally backwards compatible except:
+ 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
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.
Changes in behaviour which may result in compilation errors
-----------------------------------------------------------
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.
-- Functions 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.
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
-----------------------------------------
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::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";
- 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 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.
+
- Events loops, timers and sockets can now be used in wxBase, without GUI.
All:
-- Added (experimental) IPv6 support to wxSocket (Arcen)
+- 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
+- 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)
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).
All (Unix):
All (GUI):
-- Added wxDataViewCtrl class and helper classes
-- Provide native implementation of wxCalendarCtrl under wxMSW and wxGTK
-- Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames()
+- 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)
-- Added wxNativeContainerWindow to allow embedding wx into native windows
-- Added custom controls support to wxFileDialog (Diaa Sami and Marcin Wojdyr)
+- 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)
-- 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 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().
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.
+- Add wxGridSelectRowsOrColumns selection mode to wxGrid.
+- Get/HasModifiers() of wxKeyEvent are now also available in wxMouseEvent.
wxGTK:
- 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).
-- Implement wxLocale::GetInfo() using CFLocale
-- Added native wxCollapsiblePane
+- Implement wxLocale::GetInfo() using CFLocale.
+- Native wxCollapsiblePane implementation.
wxMSW:
- Return the restored window size from GetSize() when window is minimized.
- 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)
-- 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)
+- 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).
+wxDFB:
+
+- Implement wxBitmap ctor from XBM data.
+
2.8.8
-----
All:
-- Fixed bug with parsing some dates in wxDateTime (Bob Pesner)
-- Fixed bug with parsing negative time zones in wxDateTime::ParseRfc822Date()
+- 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()
-- Improve wximage::ResampleBox() (Mihai Ciocarlie)
-- Implemented ScrollList() in generic wxListCtrl (Tim Kosse)
+- 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
+- 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
+- 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)
+ 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