]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/changes.txt
Native wxControl::DoGetBestSize() implementation
[wxWidgets.git] / docs / changes.txt
index 7b39b5b63b5f4328f3da57ff41f70dd030d439a0..53124c555c420192d609ba0252a10403c3d81053 100644 (file)
-wxWindows 2 Change Log
-----------------------
+----------------------------
+wxWindows 2.5/2.6 Change Log
+----------------------------
+
+INCOMPATIBLE CHANGES SINCE 2.4.x
+================================
+
+    Please take a few minutes to read the following list, especially
+    paying attention to the most important changes which are marked
+    with '!' in the first column.
+
+    Also please note that you should ensure that WXWIN_COMPATIBILITY_2_4
+    is defined to 1 if you wish to retain maximal compatibility with 2.4
+    series.
+
+! windows are no longer fully repainted when resized, use new style
+  wxFULL_REPAINT_ON_RESIZE to force this (wxNO_FULL_REPAINT_ON_RESIZE stll
+  exists but doesn't do anything any more, this behaviour is default now)
+
+
+- no initialization/cleanup can be done in wxApp/~wxApp because they are
+  now called much earlier/later than before; please move any exiting code
+  from there to wxApp::OnInit()/OnExit()
+- also, OnExit() is not called if OnInit() fails
+- finally the program exit code is OnRun() return value, not OnExit() one
+- wxTheApp can't be assigned to any longer, use wxApp::SetInstance() instead
+- wxFileType::GetIcon() returns wxIconLocation, not wxIcon
+- wxColourDatabase is not a wxList any more, use AddColour to add new colours
+- wxWindow::Clear() is now called ClearBackground()
+- pointer returned by wxFont::GetNativeFontInfo() must not be deleted now
+- wxMouseEvent::Moving() doesn't return true if mouse is being dragged any more
+- (most) controls now inherit parents colours by default, override
+  ShouldInheritColours() to return false if you don't want this to happen
+- wxApp::SendIdleEvent() now takes 2 arguments
+- wxTabView::GetLayers() changed return type from wxList& to wxTabLayerList&
+  (when WXWIN_COMPATIBILITY_2_4 == 0)
+- wxID_SEPARATOR (id used for the menu separators) value changed from -1 to -2
+- wxGetNumberFromUser() is now in separate wx/numdlg.h, not wx/textdlg.h
+- wxChoice and wxCombobox now handle their size in the same way as in all the
+  other ports under MSW, new code is actually correct but different from weird
+  stuff they were doing before so the behaviour of your programs might change
+- wxTaskBarIcon objects must now be destroyed before the application can exit.
+  Previously, the application terminated if there were no top level windows;
+  now it terminates if there are no top level windows or taskbar icons left.
+- wxZlibInputStream is not by default compatible with the output of the
+  2.4.x version of wxZlibOutputStream. However, there is a compatibilty mode,
+  switched on by passing wxZLIB_24COMPATIBLE to the constructor.
+
+wxTaskBarIcon must be explicitly destroyed now, otherwise the application
+  won't exit even though there are no top level windows
+
+
+DEPRECATED METHODS SINCE 2.4.x
+==============================
+
+Deprecated methods may still be used but will disappear in future wxWindows
+versions, please update your code to not use them.
+
+- wxDocManager::GetNoHistoryFiles() renamed to GetHistoryFilesCount()
+- wxSizer::Remove(wxWindow *), use Detach() instead [it is more clear]
+- wxSizer::Set/GetOption(): use Set/GetProportion() instead
+- wxKeyEvent::KeyCode(): use GetKeyCode instead
+- wxList::Number, First, Last, Nth: use GetCount, GetFirst/Last, Item instead
+- wxNode::Next, Previous, Data: use GetNext, GetPrevious, GetData instead
+- wxListBase::operator wxList&(): use typesafe lists instead
+- wxTheFontMapper: use wxFontMapper::Get() instead
+- wxStringHashTable: use wxHashMap instead
+- wxHashTableLong: use wxHashMap instead
+- wxArrayString::GetStringArray: use wxCArrayString or alternative wxWindows
+                                 methods taking wxArrayString
+- wxArrayString::Remove(index, count): use RemoveAt instead
+- wxTreeItemId conversion to long is deprecated and shouldn't be used
+- wxTreeCtrl::GetFirst/NextChild() 2nd argument now has type wxTreeItemIdValue
+  and not long, please change declarations of "cookie"s in your code
+  accordingly -- otherwise your code won't work on 64 bit platforms
+- [MSW only] wxWindow::GetUseCtl3D(), GetTransparentBackground() and
+             SetTransparent() as well as wxNO_3D and wxUSER_COLOURS styles
+- wxList keyed interface: use wxHashMap instead
+- wxColourDatabase::FindColour(): use Find() instead (NB: different ret type)
+- wxHashTable::Next: use wxHashTable::Node* or
+                     wxHashTable::compatibility_iterator to store the return
+                     value
+- wxWave class; use wxSound instead
+
+
+OTHER CHANGES
+=============
+
+2.5.2
+-----
+
+All:
+
+- Hindi translations added (Dhananjaya Sharma)
+- wxDynamicCast() now uses static_cast<wxObject *> internally and so using it
+  with anything not deriving from wxObject will fail at compile time (instead
+  of run-time) now
+
+All (GUI):
+
+- wxHtmlWindow now delays image scaling until rendering,
+  resulting in much better display of scaled images
+- Added UpdateSize to wxSplitterWindow to allow layout while hidden
+- implemented Freeze/Thaw() for wxGenericTreeCtrl (Kevin Hock)
+- support for KOI8-U encoding added (Yuriy Tkachenko)
+- The old wxADJUST_MINSIZE behaviour is now the default behaviour for
+  sizer items that are windows.  This means that GetAdjustedBestSize
+  will now be called by default to determine the minimum size that a
+  window in a sizer should have.  If you want to still use the initial
+  size (and not the BestSize) then use the wxFIXED_MINSIZE flag.  When
+  windows are added to a sizer their initial size is made the window's
+  min size using SetSizeHints, and calls to wxSizer::SetItemMinSize
+  are also forwarded to SetSizeHints for window items.
+- added wxRegEx::GetMatchCount()
+- it is now possible to display images in wxHtmlListBox
+
+wxMSW:
+
+- wxWindow::Freeze()/Thaw() can now be nested
+- Added wxSP_NO_XP_THEME style to wxSplitterWindow to switch off
+  XP theming (some applications look bad without 3D borders)
+- wxMenuBar::GetLabelTop() doesn't include '&'s in the label any more
+- wxRegConf couldn't read global settings without admin privileges and didn't
+  even try to do it by default -- now it does
+- wxTaskBarIcon must be explicitly destroyed now, otherwise the application
+  won't exit even though there are no top level windows
+- wxFileName::GetModificationTime() works with opened files too now
+
+wxMotif:
+
+- removed wxMenuItem::DeleteSubMenu()
+
+wxUniv/X11:
+
+- implemented DrawRoundedRectangle() (clawghoul)
+
+wxHTML:
+
+- improved tables and lists layout algorithms (Tim Kosse)
+- <div> handling fix (Xavier Nodet)
+
+Unix:
+- fixed priorities of mailcap entries (David Hart)
+
+
+2.5.1
+-----
+
+All:
+
+- event table macros now do some minimal type safety checks (Michael Sögtrop)
+- added wxGzipInput/OutputStream, bug fixes in wxZlibStreams (M.J.Wetherell)
+- wxDateTime::ParseDateTime() implemented (Linus McCabe)
+- wxHTTP::GetResponse() added (David Nock)
+- added conversions to/from UTF 16/32 LE/BE (Andreas Pflug)
+- added wxTextInputStream::ReadChar() (M.J.Wetherell)
+- added translation to Afrikaans (Petri Jooste)
+- Spanish translations updated (Javier San Jose)
+- added gettext plural forms support to wxLocale (Michael N. Filippov)
+- wxFileName::Normalize(wxPATH_NORM_ALL) doesn't lower filename case any more
+- wxFileName::Normalize(wxPATH_NORM_ENV_VARS) now works
+- check if file exists in wxFileConfig::DeleteFile() (Christian Sturmlechner)
+- when wxUSE_STL == 1 wxHashTable will not be implemented using wxHashMap
+  (as in 2.5.0).
+- added some extra convenience functions to wxRect such as
+  GetBottomRight (Hajo Kirchhoff)
+- changed built-in regex library to a Unicode-compatible version based
+  on TCL sources (Ryan Norton, M. J. Wetherell)
+- added extra convenience functions to wxPoint for adding a
+  wxSize (Wlodzimierz Skiba)
+- intermediate wxIPaddress class added to prepare for
+  wxIPV6address (Ray Gilbert)
+- added overloaded constructors and Create() methods taking wxArrayString
+  for wxChoice, wxComboBox, wxListBox, wxRadioBox, wxCheckListBox,
+  wxSingleChoiceDialog, wxMultipleChoiceDialog
+- renamed wxWave class to wxSound
+
+All (GUI):
+
+- added wxListBook control
+- added 3-state checkboxes for MSW/Mac (Dimitri Schoolwerth)
+- added some support for C++ exceptions in the library (do read the manual!)
+- added wxListCtrl::GetViewRect()
+- added wxTextCtrl::MarkDirty()
+- wxToolBar::ToggleTool() now works for radio buttons (Dag Ågren)
+- wxListCtrl now sends an END_LABEL event if editing was cancelled, too
+- bug in wxRect ctor from two [out of order] wxPoints fixed (Steve Cornett)
+- status text is now restored after wxMenu help is shown in it
+- bug in wxWindow::RemoveEventHandler() fixed (Yingjun Zhang)
+- make it possible to use wxRTTI macros with namespaces (Benjamin I. Williams)
+- wxColourDatabase API now uses objects instead of pointers
+- added resolution option to JPEG image handler (Jeff Burton)
+- added wxCalendarEvent::SetDate, wxCalendarEvent::SetWeekDay
+- wxGenericDirCtrl now accepts multiple wildcards
+- added focus event forwarding to wxGrid (Peter Laufenberg)
+- fixed scrollbar problem in wxGrid (not showing scrollbars
+  when sizing smaller) (Shane Harper)
+- dbbrowse demo fixed for Unicode (Wlodzimierz Skiba)
+- added wxStatusBar support to XRC (Brian Ravnsgaard Riis)
+- wxMenu::Append and etc. return a pointer to the wxMenuItem that was
+  added or inserted, or NULL on failure.
+- using a -1 (wxID_ANY) for menu or toolbar item IDs will now generate new id
+- added option to generate C++ headers to wxrc utility (Eduardo Marques)
+- added wxDC::DrawPolyPolygon() for MSW/PS (Carl-Friedrich Braun)
+- wxBufferedDC now allows to preserve the background and is documented
+- added wxDC::GetPartialTextExtents
+
+wxMSW:
+
+- wxWindows now builds under Win64
+- fixed DDE memory leaks
+- fixed wxTE_*WRAP styles handling
+- wxTextCtrl::GetValue() works with text in non default encoding
+- changed wxCrashReport to generate minidumps instead of text files
+- wxRadioButtons are now checked when they get focus (standard behaviour)
+- several fixes to owner drawn menu items (Christian Sturmlechner)
+- wxGauge now supports full 32 bit range (Miroslav Rajcic)
+- make it possible to give focus to the notebook tabs (Hajo Kirchhoff)
+- MDI child frames are not always resizeable any more (Andrei Fortuna)
+- fixed enumerating of entries/groups under '/' in wxRegConfig
+- added wxSYS_ICONTITLE_FONT (Andreas Pflug)
+- added wxPATH_NORM_SHORTCUT to wxFileName
+- wxComboBox::GetValue within a wxEVT_COMMAND_TEXT_UPDATED event
+  should now pass the correct value even if the handler for
+  wxEVT_COMMAND_COMBOBOX_SELECTED changed the selection
+- wxFileDialog now returns correct filter index for multiple-file dialogs
+- added wxTextCtrl::HitTest()
+- experimental wxURL implementation using WinInet functions (Hajo Kirchhoff)
+- fixed several bugs in wxNotebook with wxNB_MULTILINE style
+- accelerators are now initially hidden if appropriate (Peter Nielsen)
+- background colour of a wxComboBox may now be set
+- fixed wxListCtrl::GetItemText/BackgroundColour()
+- Esc can now be used to close menus in the dialogs (Hartmut Honisch)
+- Added msw.remap system option so colourful toolbar buttons
+  aren't mangled if you set it to 0. The default is 1
+- Toolbar buttons are now centred if the bitmap size is smaller
+  than the specified default size
+- Fixed a bug in wxSpinCtrl::DoGetBestSize that would make wxSpinCtrl too tall
+
+wxGTK:
+
+- fixes to wxTextCtrl scrolling under GTK2 (Nerijus Baliunas)
+- fix for crash when using user-dashed lines (Chris Borgolte)
+- fixed wxChoice::Delete() in presence of client data
+- allow calling wxWindow::SetFont if window not yet created
+- use same average character width as other ports when calculating dialog units
+- fixed mouse wheel handling under GTK2 (Hugh Fisher)
+- wxNotebook::HitTest() implemented (Daniel Lundqvist)
+- memory leaks fixes in wxFileDialog (John Labenski)
+- don't drop click events from triple clicks (Frode Solheim)
+
+wxMac:
+
+- use same average character width as other ports when calculating dialog units
+- implemented handling of mouse wheel
+- fix for long file names (longer than 32 characters) in file dialogs
+- use unix sockets for Mach-o builds
+
+wxMotif:
+
+- look for Motif 2.1 headers before Motif 1.2 ones in configure
+
+wxHTML:
+
+- wxHtmlHelpController now supports compressed MS HTML Help files (*.chm)
+  on Unix (Markus Sinner)
+
+Unix:
+
+- added XFree86 resolution changing using xf86vidmode extensions (Ryan Norton)
+- implemented asynchronous playback in wxSound and added SDL backend in
+  addition to existing OSS one
+- it is now possible to send PostScript to any output stream (Zoltan Kovacs)
+
+
+2.5.0
+-----
+
+All:
+
+- It is now possible to build several smaller libraries instead of single
+  huge wxWindows library; wxBase is now dependency of GUI ports rather then
+  separately compiled library
+- added wxDateSpan::operator==() and !=() (Lukasz Michalski)
+- added wxFileName::GetForbiddenChars() (Dimitri Schoolwerth)
+- use true/false throughout the library instead of TRUE/FALSE
+- wxStopWatch::Start() resumes the stop watch if paused, as per the docs
+- added wxDirTraverser::OnOpenError() to customize the error handling
+- added wxArray::SetCount()
+- wxFile, wxFFile, wxTextFile and wxTempFile now all use UTF-8 encoding
+  by default in Unicode mode
+- bug in wxDateTime with timezones on systems with tm_gmtoff in struct tm fixed
+- added wx/math.h (John Labenski)
+- added Catalan translations (Pau Bosch i Crespo)
+- added Ukrainian translations (Eugene Manko)
+- fixed bug with deleting entries at root level in wxFileConfig
+- chkconf.h now includes platform-specific versions (for MSW
+  and Mac) which contain some tests that were in setup.h
+- added event sink argument to wxEvtHandler::Connect()
+- added support for POST method and alt ports to wxHTTP (Roger Chickering)
+- added wxSocket::IPAddress() (Chris Mellon)
+- wxDataStreams can read/write many elements at once (Mickael Gilabert)
+- added wxRecursionGuard class
+- added wxThreadHelper class (Daniel Howard)
+- Added STL support (--enable-stl for configure, wxUSE_STL in setup.h).
+  When enabled, wxString will derive from std::string, wxArray from,
+  std::vector, wxList from std::list. In addition wxHashTable will be
+  implemented in terms of wxHashMap.
+- Added wxList::compatibility_iterator. Can be used like wxNode* (except
+  it can't be delete()d). It permits writing code which will work
+  both with wxUSE_STL==1 and wxUSE_STL==0.
+
+wxBase:
+
+- added Watcom makefiles
+- fixed bug with searching in sorted arrays (Jürgen Palm)
+
+All GUI ports:
+
+- added wxVScrolledWindow, wxVListBox and wxHtmlLbox classes
+- added wxListbook
+- added alpha channel support to wxImage
+- added wxRenderer class allowing to customize the drawing of generic controls
+- added wxCLOSE_BOX style for dialogs and frames
+- added wxSplitterWindow and wxWizard handlers to XRC
+- wxWizard is now sizer-friendly and may be made resizeable (Robert Vazan)
+- added proportion to wxFlexGridSizer::AddGrowableRow/Col (Maxim Babitski)
+- added wxFlexGridSizer::SetFlexibleDirection() (Szczepan Holyszewski)
+- implemented GetEditControl for wxGenericTreeCtrl (Peter Stieber)
+- improved contrib/utils/convertrc parsing (David J. Cooke)
+- fixed handling of URLs and filenames in wxFileSystem
+- implemented alignment for wxGrid bool editor and renderer
+- support wxListCtrl columns alignment for all platforms and not just MSW
+- added wxToolBar Add/InsertTool(tool) (Janusz Piwowarski)
+- added wxTB_HORZ_TEXT style for MSW and GTK (Axel Schlueter)
+- fixed user dash handling for MSW and GTK (Ken Edwards)
+- WXR resources can now be used in Unicode builds
+- it is now possible to use several wxFileHistory objects in the same menu
+  by giving them different base IDs (Dimitri Schoolwerth)
+- Added wxTLW::SetShape with implementations for wxMSW and wxGTK (so far)
+- FL: rmoved const from EnableTool parameters
+- FL: signal child window when toolbar is closed
+- In various places, changed tests for pathsep on last char of string to call
+  wxEndsWithPathSeparator(s)
+- Added to defs.h a couple of macros (wxPtrToULong & wxULongToPtr)
+- Minor improvements to document/view framework, including
+  delayed deletion of a document (until after the user has chosen
+  a new document), and more intelligent addition of filenames to
+  the file history, including not adding filenames if not using the
+  default extension for the template
+- sped up wxImage::Scale using fixed point arithmetic (Wade Brainerd)
+- Added BLOB support to wxDB (John Skiff)
+- wxWizard now validates when pressing Back or Next
+- Implemented wxNotebook::DoGetBestSize so Fit now works
+- Added FindItemByPosition to wxMenu
+- wxTimer now derives from wxEvtHandler and is its own owner object by default
+- Extended wxTextAttr and added wxTextCtrl::GetStyle stub
+  to allow better rich text support.
+- implemented wxFlexGridSizer::Show() (Wade Brainerd)
+- Added m_ prefix to wxColourData and wxFontData members
+- Added wxHtmlPrintout::AddFilter so HTML printing can be subject to
+  custom filters as well as HTML viewing.
+- Moved wxApp::SendIdleEvents and wxApp::ProcessIdle into common code.
+- wxWindow::OnInternalIdle is now used in all ports, and ensures that
+  user OnIdle events do not interfere with crucial internal processing.
+- wxWindow::UpdateWindowUI is now a documented function that
+  sends wxUpdateUIEvents, and can be overridden. It has a helper function
+  DoUpdateWindowUI for taking appropriate wxUpdateUIEvent action.
+- Added functions to wxUpdateUIEvent: Set/GetMode, Set/GetUpdateInterval,
+  CanUpdate, to assist with optimising update event frequency.
+- Added functions to wxIdleEvent: Set/GetMode, CanSend, to
+  determine whether a window should receive idle events.
+- Added wxWS_EX_PROCESS_IDLE, wxWS_EX_PROCESS_UI_UPDATES window
+  styles for use with conservative idle and update event modes.
+- send menu update events only when a menu is about to be used (MSW/GTK)
+- improved event processing performance (Hans Van Leemputten)
+- added wxMirrorDC class
+- printing improvements: GetPageInfo() gets called after the DC has
+  been set and after OnPreparePrinting() has been called so it can
+  report the number of pages accurately; doesn't try to set
+  number of pages in print dialog, in common with other Windows apps;
+  wxHTML easy printing's preview shows number of pages
+  correctly; preview scrollbars are set correctly; keyboard navigation
+  improved
+
+Unix:
+
+- fixed compilation on systems with zlib installed but < 1.1.3 version
+- fixed compilation on Solaris 7 with large files support enabled
+- added wxTaskBarIcon implementation for X11
+- added support for GNU/Hurd in configure
+- wxLocale::Init now tries to set .utf8 locale in Unicode mode (Andreas Pflug)
+
+Generic controls:
+
+- implemented wxListCtrl::Refresh() (Norbert Berzen)
+- support adding/removing columns dynamically (Donald C. Taylor)
+- wxToolBarSimple, property list classes, wxTreeLayout moved
+  to contrib/src/deprecated
+
+wxGTK:
+
+- added support for label mnemonics to GTK+2 build (Michael Moss)
+- added native wxMessageDialog implementation for GTK+2 build
+- fixed wxMenu::Remove (John Skiff and Benjamin Williams)
+- made wxTextCtrl::EmulateKeyPress() work for Delete and Backspace
+- fixed wxTopLevelWindow::ShowFullScreen to work with kwin, IceWM and
+  window managers that support _NET_WM_STATE_FULLSCREEN
+- added wxEVT_MENU_OPEN event generation
+- fixed bug in generic file selector causing incomplete file extensions to
+  be appended to filenames with no extension
+- added wxTextCtrl::SetSelection implementation for GTK+ 2
+- fixed wxTextCtrl::IsEditable() for GTK+ 2
+- fixed wxStaticText alignment for GTK+ 2 (Kevin Hock)
+- don't consume 100% CPU when showing a poup menu
+
+wxMac:
+
+- generate wxEVT_SCROLL_THUMBRELEASE and wxEVT_SCROLLWIN_THUMBRELEASE events
+- generate wxEVT_MENU_OPEN and wxEVT_MENU_CLOSE events
+
+wxMSW:
+
+- possibility to use DIBs for wxBitmap implementation (Derry Bryson)
+- added wxCrashReport
+- wxStaticBitmap doesn't stretch its bitmap any longer (like other ports)
+- support for accelerator keys in the owner drawn menus (Derry Bryson)
+- wxCaret::SetSize() doesn't hide the caret any longer as it used to
+- wxCheckListBox::Check() doesn't send CHECKLISTBOX_TOGGLE event any more
+- fixed bugs in wxThread::Wait() and IsAlive()
+- fixed bug with wxTR_EDIT_LABELS not working with wxTR_MULTIPLE
+- fixes for compilation with OpenWatcom and DigitalMars compilers
+- fixed wxStaticText best size calculation (was wrong by '&' width)
+- fixed calling wxFrame::Maximize(FALSE) before the window is shown
+- added wxNotebook::HitTest() (Otto Wyss)
+- libraries built with makefile.g95 have a _min or _cyg suffix (MinGW/Cygwin)
+- when using DLL, wxLocalFSHandler was not being exported
+- fixed problem with wxEvtHandler object not removed from wxPendingEvents
+- Windows XP manifest is now included in wx.rc; it is no longer neccessary
+  to ship .exe.manifest file with applications to support XP themes
+- wxLocale::Init no longer reports error if trying to set Unicode-only locale
+  or if user's default locale is Unicode-only
+- improved border handling under Windows XP
+- partial fix for wxNotebook pages looking bad under XP: wxUSE_UXTHEME
+  enables XP theme engine code, and wxUSE_UXTHEME_AUTO tells
+  wxWindows to use the theme tab colour for control backgrounds.
+- disable wxNB_RIGHT, wxNB_LEFT, wxNB_BOTTOM notebook styles under Windows XP
+- fixed release mode build with VC 7.x (Martin Ecker)
+- added support for wxALWAYS_SHOW_SB style
+- you don't need to add opengl32.lib when using VC++ now (David Falkinder)
+
+wxMotif:
+
+- made wxFileDialog behaviour with complex wildcards more sensible (it still
+  does not support all the features other ports do); refer to wxFileDialog
+  documentation for a detailed explanation
+- implemented wxWakeUpIdle
+- for Motif 2.0, used the native combobox widget instead of the GPL'd
+  xmcombo; xmcombo is still used for Motif 1.x and Lesstif when compiled
+  with Motif 1.x compatibility
+- implemented wxToggleButton
+- wxRadioBox and wxStaticBox now use the default shadow (border) style
+  instead of a sunken border
+- implemented wxBitmapDataObject
+- finished wxClipboard implementation
+
+wxUniv:
+
+- controls in toolbars now supported
+
+wxHTML:
+
+- added text selection to wxHtmlWindow
+- added SetFonts to HTML printing classes (Adrian Philip Look)
+- it is now possible to force page break when printing by inserting
+  <div style="page-break-before:always"> into the markup (Greg Chicares)
+- wxHtmlWindow now uses double buffering to prevent flicker
+
+
+OLD CHANGES
+===========
 
 INCOMPATIBLE CHANGES SINCE 2.2.x
 ================================
 
+    Please take a few minutes to read the following list, especially
+    paying attention to the most important changes which are marked
+    with '!' in the first column.
+
+    Also please note that you should ensure that WXWIN_COMPATIBILITY_2_2
+    is defined to 1 if you wish to retain maximal compatibility with 2.2
+    series -- however you are also strongly encouraged to try to compile
+    your code without this define as it won't be default any longer in
+    2.6 release.
+
+    NB: if you want to build your program with different major versions
+        of wxWindows you will probably find the wxCHECK_VERSION() macro
+        (see the documentation) useful.
+
+
 wxBase:
 
-- wxArray<T>::Remove(size_t) has been removed to fix compilation problems
+! wxArray<T>::Remove(size_t) has been removed to fix compilation problems
   under 64 bit architectures, please replace it with RemoveAt() in your
   code.
 
-- wxArray<T> macros have been changed to fix runtime problems under 64 bit
+! wxArray<T> macros have been changed to fix runtime problems under 64 bit
   architectures and as a side effect of this WX_DEFINE_ARRAY() can only be
   used now for the pointer types, WX_DEFINE_ARRAY_INT should be used for the
   arrays containing non-pointers.
@@ -22,19 +516,39 @@ wxBase:
   by all derived classes, if you have user-defined event classes please
   add "wxEvent *Clone() const { return new MyEvent(*this); }" line to them
 
+- small change to wxStopWatch::Pause() semantics, please see the documentation
+
+- unlikely but possible incompatibility: the definition of TRUE has changed
+  from "1" to "(bool)1" (and the same thing for FALSE), so the code which
+  could be erroneously compiled previously such as doing "return FALSE" from
+  a function returning a pointer would stop compiling now (but this change
+  is not supposed to have any effects on valid code)
+
+- another minor change: wxApp::OnAssert() has a new "cond" argument, you
+  must modify YourApp::OnAssert() signature if you were using it to override
+  the default assert handling.
+
 All (GUI):
 
-- the event type constants are not constants any more but are dynamically
+! the event type constants are not constants any more but are dynamically
   allocated during run-time which means that they can't be used as case labels
   in the switch()es, you must rewrite them to use if()s instead
 
   You may also define WXWIN_COMPATIBILITY_EVENT_TYPES to get the old behaviour
-  but this is strongly discouraged, please consider changing your codei
+  but this is strongly discouraged, please consider changing your code
   instead!
 
-- wxDialog does not derive from wxPanel any longer - if you were using it in
+! wxDialog does not derive from wxPanel any longer - if you were using it in
   your code, please update it. The quick fix for the most cases is to replace
-  the occurences of wxPanel with wxWindow.
+  the occurrences of wxPanel with wxWindow.
+
+! if you handle (and don't skip) EVT_KEY_DOWN, the EVT_CHAR event is not
+  generated at all, so you must call event.Skip() in your OnKeyDown() if
+  you want to get OnChar() as well
+
+- in general, the key events sent for the various non ASCII key combinations
+  have been changed to make them consistent over all supported platforms,
+  please see the wxKeyEvent documentation for details
 
 - wxYES_NO is now wxYES | wxNO and the manifest values of both wxYES and wxNO
   have changed (to fix some unfortunate clashes), please check your code to
@@ -46,30 +560,52 @@ All (GUI):
         if ( flags & wxYES )
                 ... do something else ...
 
+- static wxWizard::Create() doesn't exist any more, the wizards are created
+  in the same way as all the other wxWindow objects, i.e. by directly using
+  the ctor
+
 - wxGLCanvas now derives directly from wxWindow, not wxScrolledWindow
 
 - wxGridCellAttrProvider class API changed, you will need to update your code
   if you derived any classes from it
 
-- wxImage::ComputeHistogram()'s signature changed to 
+- wxImage::ComputeHistogram()'s signature changed to
   unsigned long ComputeHistogram(wxImageHistogram&) const
 
 - wxEvtHandler cannot be copied/assigned any longer - this never worked but
   now it results in compile-time error instead of run-time crashes
 
+- WXK_NUMLOCK and WXK_SCROLL keys no longer result in EVT_CHAR() events,
+  they only generate EVT_KEY_DOWN/UP() ones
+
+- the dialogs use wxApp::GetTopWindow() as the parent implicitly if the
+  parent specified is NULL, use wxDIALOG_NO_PARENT style to prevent this
+  from happening
+
+- several obsolete synonyms are only retained in WXWIN_COMPATIBILITY_2_2 mode:
+  for example, use wxScrolledWindow::GetViewStart() now instead of ViewStart()
+  and GetCount() instead of Number() in many classes
+
+- wxCmdLineParser does not use wxLog to output messages anymore.
+  to obtain the previous behaviour, add
+  wxMessageOutput::Set(new wxMessageOutputLog); to your program
+  (you will need to #include <wx/msgout.h>)
+
 wxMSW:
 
-- build system changed: setup.h is not a static file in include/wx any more
-  but is created as part of the build process under lib/<toolkit>/wx/include
+! build system changed: setup.h is not a static file in include/wx any more
+  but is created as part of the build process under lib/<toolkit>/wx
   where <toolkit> is of the form (msw|univ)[dll][u][d]. You'll need to update
   the include path in your make/project files appropriately. Furthermore,
   xpm.lib is no longer used by wxMSW, it was superseded by the wxXPMDecoder
-  class. You'll need to remove all references to xpm.lib from your 
-  make/project files.
+  class. You'll need to remove all references to xpm.lib from your
+  make/project files. Finally, the library names have changed as well and now
+  use the following consistent naming convention: wxmsw[ver][u][d].(lib|dll)
+  where 'u' appears for Unicode version, 'd' -- for the debug one and version
+  is only present for the DLLs builds.
 
 - child frames appear in the taskbar by default now, use wxFRAME_NO_TASKBAR
-  style to avoid it, wxFRAME_FLOAT_ON_PARENT style is now obsolete and has no
-  effect
+  style to avoid it
 
 - all overloads of wxDC::SetClippingRegion() combine the given region with the
   previously selected one instead of replacing it
@@ -78,40 +614,115 @@ wxMSW:
   return the programs directory any longer but its value (this function has
   never been meant to return the programs directory anyhow)
 
+- wxHTML apps don't need to include wx/html/msw/wxhtml.rc in resources file
+  anymore. The file was removed from wxMSW
+
+
 Unix ports:
 
-- You should use `wx-config --cxxflags` in your makefiles instead of
+! You should use `wx-config --cxxflags` in your makefiles instead of
   `wx-config --cflags` for compiling C++ files. CXXFLAGS contains CFLAGS
   and the compiler flags for C++ files only, CFLAGS should still be used
   to compile pure C files.
 
 
+wxThread and related classes:
+
+- The thread-related classes have been heavily changed since 2.2.x versions
+  as the old code had many serious problems. This could have resulted in
+  semantical changes other than those mentioned here, please review use of
+  wxThread, wxMutex and wxCondition classes in your code.
+
+! wxCondition now *must* be used with a mutex, please read the (updated) class
+  documentation for details and revise your code accordingly: this change was
+  unfortunately needed as it was impossible to ensure the correct behaviour
+  (i.e. absense of race conditions) using the old API.
+
+- wxMutex is not recursive any more in POSIX implementation (it hasn't been
+  recursive in 2.2.x but was in 2.3.1 and 2.3.2), please refer to the class
+  documentation for the discussion of the recursive mutexes.
+
+- wxMutex::IsLocked() doesn't exist any more and should have never existed:
+  this is was unique example of a thread-unsafe-by-design method.
+
+
 OTHER CHANGES
 =============
 
+2.4.0
+-----
+
+wxMSW:
+
+- fixed loss of client data in wxChoice::SetString()
+
+2.3.4
+-----
+
+All:
+
+- added (partial) Indonesian translations (Bambang Purnomosidi D. P.)
+- added wxSizer::Show()/Hide() (Carl Godkin)
+- fixed bugs in wxDateTime::SetToWeekDay()/GetWeek()
+
+Unix (Base/GUI):
+
+- minor OpenBSD compilation/linking fixes, now builds OOB under OpenBSD 3.1
+- don't include -I/usr/include nor -I/usr/local/include in wx-config output
+- shared library symbols are now versioned on platforms that support it (Linux)
+
+wxGTK:
+- Further work for GTK 2.0 and Unicode support.
+- Addition of native frame site grip.
+
+wxX11:
+- Unicode support through Pango library.
+
+wxMSW:
+
+- fixed crashes in wxListCtrl under XP
+- added context menu for rich edit wxTextCtrl
+
+wxHTML:
+
+- fixed wxHTML to work in Unicode build
+
 2.3.3
 -----
 
 wxBase:
 
+- building wxBase with Borland C++ is now supported (Michael Fieldings)
+- wxSemaphore class added, many fixed to wxCondition and wxThread (K.S. Sreeram)
 - fixes to the command line parsing error and usage messages
 - modified wxFileName::CreateTempFileName() to open the file atomically
   (if possible) and, especially, not to leak the file descriptors under Unix
-- memory leak in wxHTTP fixed (Dimitri)
+- memory leak in wxHTTP fixed (Dimitri Schoolwerth)
 - fixes to AM_PATH_WXCONFIG autoconf macro
 - added wxHashMap class that replaces type-unsafe wxHashTable and is modelled
-  after STL hash_map
+  after (non standard) STL hash_map
 - wxLocale now works in Unicode mode
 - wxLocale can now load message catalogs in arbitrary encoding
-- fixed the bug related to the redrawing on resize introduced in 2.3.2
+- added wxShutdown() function (Marco Cavallini)
+- added wxEXPLICIT macro
+- IPC classes improved and memory leaks fixed (Michael Fielding).
+  Global buffer removed, duplication in docs removed
+- debug new/free implementations made thread-safe
 
 Unix (Base/GUI):
 
 - wxWindows may be built using BSD and Solaris (and possibly other) make
   programs and not only GNU make
+- wxTCP-based IPC classes now support communicating over Unix domain sockets
+- wxWindows may be built as a dynamic shared library under Darwin / Mac OS X
+  lazy linking issues have been solved by linking a single module (.o) into
+  the shared library (two step link using distrib/mac/shared-ld-sh)
+- fixed thread priority setting under Linux
 
 All (GUI):
 
+- it is now possible to set the icons of different sizes for frames (e.g. a
+  small and big ones) using the new wxIconBundle class
 - implemented radio menu items and radio toolbar buttons
 - added possibility to show text in the toolbar buttons
 - added wxArtProvider class that can be used to customize the look of standard
@@ -121,17 +732,39 @@ All (GUI):
   wxHashTable
 - added IFF image handler
 - fixed using custom renderers in wxGrid which was broken in 2.3.2
-- support for multiple images in one file added to wxImage (TIFF, GIF and ICO formats)
+- support for multiple images in one file added to wxImage
+  (TIFF, GIF and ICO formats)
 - support for CUR and ANI files in wxImage added (Chris Elliott)
 - wxTextCtrl::GetRange() added
 - added wxGetFontFromUser() convenience function
 - added EVT_MENU_OPEN and EVT_MENU_CLOSE events
 - added Hungarian translations (Janos Vegh)
 - added wxImage::SaveFile(filename) method (Chris Elliott)
+- added wxImage::FloodFill and implemented wxWindowDC::DoFloodFill method
+  for GTK+, Mac, MGL, X11, Motif ports (Chris Elliott)
+- added (platform-dependent) scan code to wxKeyEvent (Bryce Denney)
+- added wxTextCtrl::EmulateKeyPress()
+- Added wxMouseCaptureChangedEvent
+- Added custom character filtering to wxTextValidator
+- wxTreeCtrl now supports incremental keyboard search
+- wxMessageOutput class added
+- wxHelpProvider::RemoveHelp added and called from ~wxWindowBase
+  so that erroneous help strings are no longer found as the hash
+  table fills up
+- updated libpng from 1.0.3 to 1.2.4
+- Added wxView::OnClosingDocument so the application can do cleanup.
+- generic wxListCtrl renamed to wxGenericListCtrl, wxImageList
+  renamed to wxGenericImageList, so they can be used on wxMSW
+  (Rene Rivera).
+- Added wxTreeEvent::IsEditCancelled so the application can tell
+  whether a label edit was cancelled.
+- added static wxFontMapper::Get() accessor
 
 wxMSW:
 
 - small appearance fixes for native look under Windows XP
+- fixed the bug related to the redrawing on resize introduced in 2.3.2
+- fixed multiple bugs in wxExecute() with IO redirection
 - refresh the buttons properly when the window is resized (Hans Van Leemputten)
 - huge (40*) speed up in wxMask::Create()
 - changing wxWindows styles also changes the underlying Windows window style
@@ -140,7 +773,10 @@ wxMSW:
 - fixed redraw problems in dynamically resized wxStaticText
 - improvements to wxWindows applications behaviour when the system colours
   are changed
+- choose implicit parent for the dialog boxes better
 - fixed wxProgressDialog for ranges > 65535
+- wxSpinButton and wxSpinCtrl now support full 32 bit range (if the version
+  of comctl32.dll installed on the system supports it)
 - wxFontEnumerator now returns all fonts, not only TrueType ones
 - bugs in handling wxFrame styles (border/caption related) fixed
 - showing a dialog from EVT_RADIOBUTTON handler doesn't lead to an infinite
@@ -149,6 +785,24 @@ wxMSW:
 - the separators are not seen behind the controls added to the toolbar any more
 - wxLB_SORT style can be used with wxCheckListBox
 - wxWindowDC and wxClientDC::GetSize() works correctly now
+- Added wxTB_NODIVIDER and wxTB_NOALIGN so native toolbar can be used in FL
+- Multiline labels in buttons are now supoprted (simply use "\n" in the label)
+- Implemented wxMouseCaptureChangedEvent and made wxGenericDragImage check it
+  has the capture before release it.
+- fixed bugs in multiple selection wxCheckListBox
+- default button handling is now closer to expected
+- setting tooltips for wxSlider now works
+- disabling a parent window also disables all of its children (as in wxGTK)
+- multiple events avoided in wxComboBox
+- tooltip asserts avoided for read-only wxComboBox
+- fixed a race condition during a thread exit and a join
+- fixed a condition where a thread can hang during message/event processing
+- increased space between wxRadioBox label and first radio button
+- don't fail to register remaining window classes if one fails to register
+- wxFontDialog effects only turned on if a valid colour was
+  provided in wxFontData
+- Added wxTE_LEFT, wxTE_CENTRE and wxTE_RIGHT flags for text control alignment.
+- Bitmap printing uses 24 bits now, not 8.
 
 wxGTK:
 
@@ -156,6 +810,38 @@ wxGTK:
 - wxButton now honours wxBU_EXACTFIT
 - wxStaticBox now honours wxALIGN_XXX styles
 - added support for non alphanumeric simple character accelerators ('-', '=')
+- new behaviour for wxWindow::Refresh() as it now produces a delayed refresh.
+  Call the new wxWindow::Update() to force an immediate update
+- support for more SGI hardware (12-bit mode among others)
+- fixed wxDC::Blit() to honour source DC's logical coordinates
+- implemented wxIdleEvent::RequestMore() for simple background tasks
+- implemented wxChoice::Delete()
+- fixed bad memory leak in wxFileDialog (Chris Elliott)
+- made internal GC pool dynamically growable
+- added GTK+ 2 and Unicode support
+
+wxMotif:
+
+- improved colour settings return values (Ian Brown)
+- improved border style handling for wxStaticText (Ian Brown)
+- improved toolbar control alignment
+- implemented wxSpinButton
+- implemented wxCheckListBox
+- fixed wxSpinCtrl and wxStaticLine when used with sizers
+- wxStaticBitmap now shows transparent icons correctly
+
+wxX11:
+
+- added generic MDI implementation (Hans Van Leemputten)
+- first cut at wxSocket support (not yet working)
+
+wxMac:
+
+- Many improvements
+
+wxOS2:
+
+- First alpha-quality release
 
 wxHTML:
 
@@ -194,6 +880,7 @@ All (GUI):
 - wxGrid cell editing veto support (Roger Gammans)
 - wxListCtrl ITEM_FOCUSED event added
 - support for ICO files in wxImage added (Chris Elliott)
+- improvements to wxDragImage (Chuck Messenger)
 
 wxMSW:
 
@@ -204,6 +891,14 @@ wxMSW:
 wxGTK:
 
 - fixed popup menu positioning bug
+- fixed the edit function for wxListCtrl (Chuck Messenger)
+- fixed the key-hitting events for wxListCtrl and wxTreeCtrl, so they
+  correctly return the key which was pressed (Chuck Messenger)
+
+wxMac:
+
+- support for configuration and build under Mac OS X using the Apple Developer
+  Tools
 
 wxHTML:
 
@@ -382,7 +1077,7 @@ wxMSW:
 - fixed "missing" initial resize of wxMDIChildFrame
 - wxFrame restores focus better
 - Now ignore wxTHICK_FRAME in wxWindow constructor: only relevant to
-  frames anddialogs, interferes with other window styles otherwise
+  frames and dialogs, interferes with other window styles otherwise
   (sometimes you'd get a thick frame in a subwindow)
 - wxTextCtrl insertion point set to the beginning of the control by SetValue
 - Fix so wxMDIParentFrame is actually shown when Show(TRUE) is called.
@@ -465,7 +1160,7 @@ all (GUI):
 
 - Added wxImage::Rotate.
 - new wxCalendarCtrl class for picking a date interactively
-- wxMenu(Bar)::Insert() and Remove() functions for dynamic menu menagament
+- wxMenu(Bar)::Insert() and Remove() functions for dynamic menu management
 - wxToolBar supports arbitrary controls (not only buttons) and can be
   dynamically changed (Delete/Insert functions)
 - vertical toolbars supported by MSW and GTK native wxToolBar classes
@@ -481,7 +1176,7 @@ all (GUI):
 - wxScrolledWindow now has keyboard interface
 - wxTextEntryDialog may be used for entering passwords (supports wxTE_PASSWORD)
 - added wxEncodingConverter and improved wxFontMapper
-  for dealing with convertions between different encodings,
+  for dealing with conversions between different encodings,
   charsets support in wxLocale and wxHTML
 - wxDragImage class added
 - samples/help improved to show standard and advanced HTML help
@@ -523,11 +1218,11 @@ wxHTML:
   including faster search, bookmarks, printing, setup dialog
   and cross-platform binary compatible .cached files for faster
   loading of large helpbooks, case insensitive search
-  splitted into 3 parts: wxHtmlHelpData, Frame and Controller
+  split into 3 parts: wxHtmlHelpData, Frame and Controller
 - added support for charsets and <meta> tag
 - added support for font faces and justified paragraphs,
   taken some steps to prepare wxHTML for frames
-- added dynamic pushing/poping of wxHtmlParser tag handlers
+- added dynamic pushing/popping of wxHtmlParser tag handlers
 - improved HTML printing
 - added extensive table of HTML characters substitutions (&nbsp; etc.)
 - fixed wxHtmlWindow flickering, several minor bugfixes
@@ -790,7 +1485,7 @@ wxMotif:
   global memory operators (usually OK) and #defining new to be
   WXDEBUG_NEW (sometimes it might not be OK).
 - Added time.cpp to makefile; set wxUSE_DATETIME to 1.
-- Added a parent-existance check to popup menu code to make it not crash.
+- Added a parent-existence check to popup menu code to make it not crash.
 - Added some optimization in wxWindow::SetSize to produce less flicker.
   It remains to be seen whether this produces any resize bugs.
 
@@ -846,7 +1541,7 @@ wxMSW:
 - wxConfig API improved, documentation updated.
 - Printing classes name conventions cleaned up.
 - wxUpdateUIEvent now derives from wxCommandEvent
-  so event can travel up the window hierachy.
+  so event can travel up the window hierarchy.
 
 Alpha 14, July 31st 1998
 ------------------------
@@ -1107,7 +1802,7 @@ Generic:
 - Added wxMouseEvent::GetPosition and
   wxMouseEvent::GetLogicalPosition, both returning wxPoints.
 - Made wxSize and wxRect contain longs not ints.
-- Cured some lemory leaks (thanks Vadim).
+- Cured some memory leaks (thanks Vadim).
 - Tidied up OnIdle and introduced RequestMore/MoreRequested so
   will only keep processing OnIdle if it returns TRUE from
   MoreRequested.
@@ -1136,7 +1831,7 @@ All:
   implementation updated to use these base classes.
 - wxHelpInstance now separated into wxHelpControllerBase (base
   for all implementations), wxWinHelpController (uses standard
-  WinHelp), wxXLPHelPController (talks to wxHelp by DDE or
+  WinHelp), wxXLPHelpController (talks to wxHelp by DDE or
   TCP/IP). There will be others eventually, such as
   wxHTMLHelpController for Microsoft (and Netscape?) HTML Help.
 - Added Vadim Zeitlin's wxString class plus
@@ -1217,7 +1912,7 @@ At this point, the following has been achieved:
   Windows types where needed e.g. WXHWND.
 - PrologIO revised.
 - wxScrolledWindow, wxStatusBar and new MDI classes added.
-  MDI is now achived using separate classes, not window styles.
+  MDI is now achieved using separate classes, not window styles.
 - wxSystemSettings added, and made use of to reflect standard
   Windows settings.
 - SetButtonFont/SetLabelFont replaced by SetFont; font and colour