]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/changes.txt
use wxString in wxFileSystem::FindFileInPath()
[wxWidgets.git] / docs / changes.txt
index e1c9b38d65975a811ef1effd5c31ab2287f9e1e3..2e3ce8a69dd74b0168a9da85419eb96e13dcdad8 100644 (file)
----------------------------------------------------------------
-wxWidgets Change Log - For more verbose changes, see the manual
----------------------------------------------------------------
+-------------------------------------------------------------------------------
+                             wxWidgets Change Log
+-------------------------------------------------------------------------------
 
-INCOMPATIBLE CHANGES SINCE 2.6.x
+INCOMPATIBLE CHANGES SINCE 2.8.x
 ================================
 
-- wxFontData::GetColour() now returns a const colour.
-- wxDC objects can't be created directly now (this never worked, now it doesn't
-  even compile).
-- For all wxInputStreams, Eof() becomes true after an attempt has been made
-  to read _past_ the end of file.
-- wxCHECK family of macros now must be followed by a semicolon.
-- wxMBConv::cMB2WC() and cWC2MB() take size of the input buffer and return
-  length of the converted string in all cases now.
-- wxHtmlWindow::OnCellClicked() now returns bool.
-- wxHtmlCell::OnMouseClick() was deprecated and replaced with
-  wxHtmlCell::ProcessMouseClick(); old code overriding OnMouseClick() will
-  continue to work with WXWIN_COMPATIBILITY_2_6, but should be rewritten to
-  use ProcessMouseClick().
-- wxHtmlCell::GetCursor() was deprecated and replaced with
-  wxHtmlCell::GetMouseCursor(); old code overriding GetCursor() will
-  continue to work with WXWIN_COMPATIBILITY_2_6, but should be rewritten to
-  use GetMouseCursor().
-- wxHtmlCell::AdjustPagebreak() signature has changed, update your code if you
-  override it.
-- wxFontEnumerator::GetFacenames() and GetEncodings() now return arrays and
-  not pointers to arrays.
-- wxStaticBoxSizer now deletes the associated wxStaticBox when it is deleted.
-- Windows calling CaptureMouse() are now required to handle
-  the wxEVT_MOUSE_CAPTURE_LOST event.
-- SetDefaultItem() method was moved from wxPanel to wxTopLevelWindow
-- wxDialog::OnOK/OnCancel() don't exist any more, use SetAffirmative/EscapeId()
-- wxPathList doesn't derive from (deprecated) wxStringList any more
-
-
-Deprecated methods since 2.6.x and their replacements
------------------------------------------------------
-
-- wxGetWorkingDirectory() deprecated in favour of wxGetCwd().
-- wxDC::BeginDrawing() and wxDC::EndDrawing() deprecated, just don't use them.
-
-
-Major changes in 2.7 release
-----------------------------
+Changes in behaviour not resulting in compilation errors, please read this!
+---------------------------------------------------------------------------
+
+- Default location of wxFileConfig files has changed under Windows, you will
+  need to update your code if you access these files directly.
+
+- wxWindow::IsEnabled() now returns false if a window parent (and not
+  necessarily the window itself) is disabled, new function IsThisEnabled()
+  with the same behaviour as old IsEnabled() was added.
+
+- Generating wxNavigationKeyEvent events doesn't work any more under wxGTK (and
+  other platforms in the future), use wxWindow::Navigate() or NavigateIn()
+  instead.
+
+- Sizers distribute only the extra space between the stretchable items
+  according to their proportions and not all available space. We believe the
+  new behaviour corresponds better to user expectations but if you did rely
+  on the old behaviour you will have to update your code to set the minimal
+  sizes of the sizer items to be in the same proportion as the items
+  proportions to return to the old behaviour.
+
+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
+
+- 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
+  code that depends on the result being wxChar.
+
+- The value returned by wxString::c_str() cannot be casted to non-const char*
+  or wchar_t* anymore. The solution is to use newly added wxString methods
+  char_str() (which returns a buffer convertible to char*) or wchar_str()
+  (which returns a buffer convertible to wchar_t*). These methods are
+  available in wxWidgets 2.8 series beginning with 2.8.4 as well.
+
+- The value returned by wxString::operator[] or wxString::iterator cannot be
+  used in switch statements anymore, because it's a class instance. Code like
+  this won't compile:
+     switch (str[i]) { ... }
+  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() : "")
+
+- wxCtime() and wxAsctime() return char*; this is incompatible with Unicode
+  build in wxWidgets 2.8 that returned wchar_t*.
+
+- DigitalMars compiler has a bug that prevents it from using
+  wxUniChar::operator bool in conditions and it erroneously reports type
+  conversion ambiguity in expressions such as this:
+     for ( wxString::const_iterator p = s.begin(); *p; ++p )
+  This can be worked around by explicitly casting to bool:
+     for ( wxString::const_iterator p = s.begin(); (bool)*p; ++p )
+
+- virtual wxHtmlParser::AddText() takes wxString, not wxChar*, argument now.
+
+Deprecated methods and their replacements
+-----------------------------------------
+
+- wxCreateGreyedImage() deprecated, use wxImage::ConvertToGreyscale() instead.
+- wxString::GetWriteBuf() and UngetWriteBuf() deprecated, using wxStringBuffer
+  or wxStringBufferLength instead.
+- wxDIRCTRL_SHOW_FILTERS style is deprecated, filters are alwsys shown if
+  specified so this style should simply be removed
+- wxDocManager::MakeDefaultName() replaced by MakeNewDocumentName() and
+  wxDocument::GetPrintableName() with GetUserReadableName() which are simpler
+  to use
+
+
+Major new features in this release
+----------------------------------
+
+
+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)
+
+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 wxEventBlocker class (Francesco Montorsi).
+- Added wxFile/DirPickerCtrl::Get/SetFile/DirName() (Francesco Montorsi).
+- Added wxSizerFlags::Top() and Bottom().
+- Slovak translation added.
+- 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)
+
+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
+- 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).
+- Setting foreground colour of single line wxTextCtrl now works
+- Pass current control text to EVT_TEXT handler for wxSpinCtrl (John Ratliff)
+- Added gtk.tlw.can-set-transparency system option
+
+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)
+
+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)
+
+wxX11:
+
+- Added mouse wheel support (David Hart)
+- Make Enter key activate the default button (David Hart)
+
+
+2.8.5
+-----
+
+All (GUI):
+
+- Added colour normalization to PNM image handler (Ray Johnston)
+
+wxMSW:
+
+- Correct problem with page setup dialog when using landscape mode
+- 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)
+
+wxGTK:
+
+- More work on setting defaults in GNOME print dialogs.
+- Also made landscape printing work as per wxMSW.
+- Add support for clipping in GNOME print backend.
+- Speed up wxBitmap::Rescale()
+- Add right button event for wxToolbar's tools (Tim Kosse)
+
+
+2.8.4
+-----
+
+All:
+
+- Fix bug in wxFileConfig when recreating a group (Steven Van Ingelgem)
+- Fix wxStringOutputStream::Write() in Unicode build when the argument
+  overlaps UTF-8 characters boundary
+- Account for lines without newline at the end in wxExecute()
+
+All (Unix):
+
+- Handle socket shutdown by the peer correctly in wxSocket (Tim Kosse)
+
+All (GUI):
+
+- Allow status bar children in XRC (Edmunt Pienkowski)
+- Fix memory leak in wxWizard when not using sizers for the page layout
+- Added wxListCtrl::SetItemPtrData()
+- wxHTML: Apply table background colour between the cells too (Michael Hieke)
+
+wxMSW:
+
+- Corrected wxStaticBox label appearance when its foreground colour was set:
+  it didn't respect font size nor background colour then (Juan Antonio Ortega)
+- Don't lose combobox text when it's opened and closed (Kolya Kosenko)
+- Corrected GetChecked() for events from checkable menu items (smanders)
+- Fixed popup menus under Windows NT 4
+- Fixed bug in wxThread::Wait() in console applications introduced in 2.8.3
+- Support right-aligned/centered owner drawn items in wxListCtrl (troelsk)
+- Compilation fixed with WXWIN_COMPATIBILITY_2_6==0
+- Fix wxComboCtrl colours under Windows Vista (Kolya Kosenko)
+
+wxGTK:
+
+- Fix infinite loop when adding a wxStaticText control to a toolbar
+- Fix wxNO_BORDER style for wxRadioBox (David Hart)
+- Fix wxTextCtrl::GetLineText() for empty lines (Marcin Wojdyr)
+
+wxMac:
+
+- Fix wxComboBox::SetSelection(wxNOT_FOUND) (Adrian Secord)
+
+wxUniv:
+
+- Fix wxTextCtrl::SetSelection(-1, -1) to behave as documented (Anders Larsen)
+- Fix wxComboBox::SetSelection(wxNOT_FOUND)
+- Fix setting background colour for controls with transparent background
+
+
+2.8.3
+-----
+
+All:
+
+- Shut down the sockets gracefully (Sergio Aguayo)
+- Fix extra indentation in wxHTML_ALIGN_JUSTIFY display (Chacal)
+
+wxMac:
+
+- Corrected top border size for wxStaticBox with empty label (nusi)
+
+wxMSW:
+
+- Fixed wxFileName::GetSize() for large files
 
-- New AUI library supporting docking windows and much more
+wxGTK:
+
+- Fixed handling of accelerators using PageUp/Down keys
+
+
+2.8.2
+-----
+
+All:
+
+- Added wxSizerFlags::Shaped() and FixedMinSize() methods.
+- Added wxCSConv::IsOk() (Manuel Martin).
+- Added wxDateTime::GetDateOnly().
+- Made wxTextFile work with unseekable files again (David Hart).
+- Added wxCONFIG_USE_SUBDIR flag to wxFileConfig (Giuseppe Bilotta).
+- Added wxSearchCtrl::[Get|Set]DescriptiveText.
+- Fixed detection of number of processors under Linux 2.6
+- Fixed Base64 computation in wxHTTP (p_michalczyk)
+- Fix handling of wxSOCKET_REUSEADDR in wxDatagramSocket (troelsk)
+
+Unix Ports:
+
+- Fixed crash in wxGetUserName() in Unicode build
+
+wxMSW
+
+- Fix lack of spin control update event when control lost focus.
+- Corrected drawing of bitmaps for disabled menu items.
+
+wxGTK
+
+- Fix hang on startup when using GTK+ options in Unicode build
+
+wxMac
+
+- Fix position of the centered windows (didn't take menu bar size into account)
+- Added support for the wxFRAME_FLOAT_ON_PARENT style.
+
+wxX11:
+
+- Don't crash in wxWindow dtor if the window hadn't been really Create()d.
+
+wxUniv:
+
+- Fixed wxComboBox always sorted.
+
+
+2.8.1
+-----
+
+All:
+
+- Fix compilation with wxUSE_STL=1.
+- wxGrid::GetBestSize() returns same size the grid would have after AutoSize().
+- Added wxTreeCtrl::CollapseAll[Children]() and IsEmpty() (Francesco Montorsi).
+- Several RTL-related positioning fixes (Diaa Sami).
+- Fix wxConfig::DeleteGroup() for arguments with trailing slash (David Hart).
+- Fix memory leak in wxGrid::ShowCellEditControl() (Christian Sturmlechner).
+
+wxMSW:
+
+- Fixed compilation with Borland C++ in Unicode mode but without MSLU.
+- Show taskbar icon menu on right button release, not press.
+
+wxGTK:
+
+- Don't crash if command line is not valid UTF-8 (Unicode build only).
+
+wxUniv:
+
+- It is now possible to set background colour of wxStaticText.
+
+
+2.8.0
+-----
+
+All:
+
+- Added wxSearchCtrl (Vince Harron).
+- wxCSConv("UTF-16/32") now behaves correctly, i.e. same as wxMBConvUTF16/32.
+- wxArrayString::Alloc() now works as reserve() and doesn't clear array contents.
+- Fixed long standing bug in wxFileConfig groups renaming (Antti Koivisto).
+- New option wxFS_READ | wxFS_SEEKABLE for wxFileSystem::OpenFile() to return
+  a stream that is seekable.
+- Fixed bug in wxCalendarCtrl::HitTest() when clicking on month change arrows.
+- Added wxWindow::GetWindowBorderSize() and corrected wxTreeCtrl::GetBestSize().
+  for a control with borders (Tim Kosse).
+
+wxMSW:
+
+- Fixed version script problems when using configure with cygwin/mingw32.
+- Use system default paper size for printing instead of A4.
+- Fix (harmless) assert in virtual list control under Vista.
+- Fix colours when converting wxBitmap with alpha to wxImage (nusi).
+
+wxGTK:
+
+- Allow dynamically changing most of text control styles.
+- Enable use of libgnomeprintui by default in configure.
+
+
+2.7.2
+-----
+
+All:
+
+- Added wxFFile overload to wxFileName::CreateTemporaryFileName().
+- Added GetTempDir() to wxFileName and wxStandardPaths.
+- Added wxTar streams.
+- Added wxFilterFSHandler and wxArchiveFSHandler.
+- Added wxString::ToLongLong() and ToULongLong().
+
+All (GUI):
+
+- wxMemoryDC constructor now optionally accepts a wxBitmap parameter,
+  calling SelectObject itself if a valid bitmap is passed.
+- Reverted wxBuffered[Paint]DC to pre 2.7.1 state, added
+  wxAutoBufferedPaintDC and wxAutoBufferedPaintDCFactory.
+- Renamed wxProgressDialog::UpdatePulse() to just Pulse().
+- Added wxCollapsiblePane (Francesco Montorsi).
+- Added wxSimpleHtmlListBox (Francesco Montorsi).
+- Printing framework fixes by Robert J. Lang. Bugs fixed,
+  wxPrinterDC::GetPaperRect() and other functions added to allow
+  easier printing implementation, and the documentation updated.
+- Many enhancements to wxRichTextCtrl including URL support,
+  formatting and symbol dialogs, print/preview, and better list
+  formatting.
+- Support for loading TGA files added (Seth Jackson).
+- Added wxTB_RIGHT style for right-aligned toolbars (Igor Korot).
+- wxHtmlWindow now generates events on link clicks (Francesco Montorsi).
+- wxHtmlWindow now also generates wxEVT_COMMAND_TEXT_COPY event.
+
+Unix Ports:
+
+- Added autopackage for wxGTK and an example of using autopackage for a wx
+  program (Francesco Montorsi).
+
+wxGTK:
+
+- More RTL work.
+- Support wxALWAYS_SHOW_SB.
+- Speed up MIME types loading. Only the GNOME database should be loaded under
+  GNOME etc. For this, the code queries the X11 session protocol.
+- wxCaret redraw problem during scrolling fixed.
 
 
 2.7.1
@@ -52,12 +401,47 @@ Major changes in 2.7 release
 
 All:
 
-- Added wxDir::FindFirst() (Francesco Montorsi)
-- Added wxPlatformInfo class (Francesco Montorsi)
+- Added wxDir::FindFirst() (Francesco Montorsi).
+- Added wxPlatformInfo class (Francesco Montorsi).
+- Added wxLocale::IsAvailable() (Creighton).
+- Added Malay translations (Mahrazi Mohd Kamal).
+- Added reference counting for wxVariant.
+- For consistency, all classes having Ok() method now also have IsOk() one, use
+  of the latter form is preferred although the former hasn't been deprecated yet.
+- Added wxFileName::Is(Dir|File)(Writ|Read|Execut)able() (Francesco Montorsi).
+- Added wxFileName::GetSize() and GetHumanReadableSize() (Francesco Montorsi).
+- Added wxSizer::Replace (Francesco Montorsi).
+- wxXmlDocument can now optionally preserve whitespace (Francesco Montorsi).
+- Added wxBookCtrl::ChangeSelection() and wxTextCtrl::ChangeValue() to provide
+  event-free alternatives to SetSelection() and SetValue() functions; see the
+  "Events generated by the user vs programmatically generated events" paragraph
+  in the "Event handling overview" topic for more info.
 
 All (GUI):
 
-- Added wxID_PAGE_SETUP standard id
+- Support for right-to-left text layout (started by Diaa Sami during Google Summer of
+  Code, with a lot of help from Tim Kosse and others).
+- wxAnimationCtrl added (Francesco Montorsi).
+- Added wxAboutBox() function for displaying the standard about dialog.
+- Added wxID_PAGE_SETUP standard id.
+- Added wxSize::IncBy() and DecBy() methods.
+- Added wxTextCtrl::IsEmpty().
+- Added file type parameter to wxTextCtrl::LoadFile, wxTextCtrl::SaveFile for
+  consistency with wxRichTextCtrl.
+- wxRichTextCtrl: fixed range out-by-one bug to be consistent with wxTextCtrl API,
+  fixed some attribute bugs and added wxRichTextStyleComboCtrl.
+- Added wxWindow::IsDoubleBuffered().
+- Added wxHL_ALIGN_* flags to wxHyperlinkCtrl (Francesco Montorsi).
+- Added wxGauge::Pulse() and wxProgressDialog::UpdatePulse() (Francesco Montorsi).
+
+wxMSW:
+
+- Implemented wxComboBox::SetEditable().
+- wxSemaphore::Post() returns wxSEMA_OVERFLOW as documented (Christian Walther)
+- Fixed a bug whereby static controls didn't use the correct text colour if the
+  parent's background colour had been set (most noticeable when switching to a
+  high-contrast theme).
+- Respect wxBU_EXACTFIT style in wxToggleButton (Alexander Borovsky).
 
 wxMac:
 
@@ -66,8 +450,15 @@ wxMac:
 
 wxGTK:
 
-- Automatically use stock items for the menu items with standard ids
-- Setting cursor now works for all controls
+- Automatically use stock items for menu items with standard ids.
+- Setting cursor now works for all controls.
+- Implemented right-to-left support.
+- Implemented left indentation and tab stops support in wxTextCtrl (Tim Kosse).
+- Fixed wxHTML rendering of underlined text of multiple words (Mart Raudsepp).
+
+wxUniv:
+
+- Added wxTLW::UseNativeDecorations() and UseNativeDecorationsByDefault().
 
 
 2.7.0
@@ -118,14 +509,14 @@ All:
   Previously, only the buffer would be returned, even if more data was requested.
 - Added wxPowerEvent (currently MSW-only).
 - Make wx-config compatible with Bourne shells.
-- Fixed wxDb::Open(wxDbConnectInf) when using connection string (Hellwolf Misty)
-- Fixed crash in wxDb::Open() in Unicode build (Massimiliano Marretta)
-- Fixed wxTimeSpan::Format() for negative time spans
-- Optionally count repeating wxLog messages instead of logging all (Lauri Nurmi)
+- Fixed wxDb::Open(wxDbConnectInf) when using connection string (Hellwolf Misty).
+- Fixed crash in wxDb::Open() in Unicode build (Massimiliano Marretta).
+- Fixed wxTimeSpan::Format() for negative time spans.
+- Optionally count repeating wxLog messages instead of logging all (Lauri Nurmi).
 
 All (GUI):
 
-- New AUI (Advanced User Interface) library for docking windows and much more
+- New AUI (Advanced User Interface) library for docking windows and much more.
 - Added wxComboCtrl and wxOwnerDrawnComboBox (Jaakko Salli).
 - Added wxTreebook (uses a wxTreeCtrl to control pages).
 - Added wxColour/Dir/File/Font/PickerCtrls (Francesco Montorsi).
@@ -200,8 +591,8 @@ All (GUI):
 - wxNB_HITTEST_* flags renamed to wxBK_HITTEST_* to serve all book controls.
 - Added wxTopLevelWindow::SetTransparent and CanSetTransparent, with
   implementations (so far) for wxMSW and wxMac.
-- Allow customizing individual grid lines appearance (Søren Lassen)
-- Fixed middle click events generation in generic wxTreeCtrl (Olly Betts)
+- Allow customizing individual grid lines appearance (Søren Lassen).
+- Fixed middle click events generation in generic wxTreeCtrl (Olly Betts).
 - Added wxEVT_MOUSE_CAPTURE_LOST event that must be handled by all windows
   that CaptureMouse() is called on.
 
@@ -212,7 +603,7 @@ wxMSW:
 - Switching page of a hidden notebook doesn't lose focus (Jamie Gadd).
 - Removed wxImageList *GetImageList(int) const.
 - Fixed MDI context menu problem.
-- Removed __WIN95__ define
+- Removed __WIN95__ define.
 - Create msw/rcdefs.h in setup.h's directory, which can be included by
   resource files. It containts platform/compiler specific defines (such as
   target cpu) which can be used in #ifs in .rc files.