]> git.saurik.com Git - wxWidgets.git/blame - docs/changes.txt
Fixed GtkBorder allocation (hopefully)
[wxWidgets.git] / docs / changes.txt
Content-type: text/html ]> git.saurik.com Git - wxWidgets.git/blame - docs/changes.txt


500 - Internal Server Error

Malformed UTF-8 character (fatal) at /usr/lib/x86_64-linux-gnu/perl5/5.40/HTML/Entities.pm line 485, <$fd> line 1798.
CommitLineData
70cf18ef
VZ
1-------------------------------------------------------------------------------
2 wxWidgets Change Log
3-------------------------------------------------------------------------------
d643b80e 4
5ec9d741 5INCOMPATIBLE CHANGES SINCE 2.8.x
aae53500
VZ
6================================
7
500b128d
VZ
8
9 Notice that these changes are described in more details in
10 the "Changes Since wxWidgets 2.8" section of the manual,
11 please read it if the explanation here is too cryptic.
12
13
e6d4038a
VZ
14Unicode-related changes
15-----------------------
16
17The biggest changes in wxWidgets 3.0 are the changes due to the merge of the
18old ANSI and Unicode build modes in a single build. See the Unicode overview
19in the manual for more details but here are the most important incompatible
20changes:
21
22- Many wxWidgets functions taking "const wxChar *" have been changed to take
3dac8f8a
VS
23 either "const wxString&" (so that they accept both Unicode and ANSI strings;
24 the argument can't be NULL anymore in this case) or "const char *" (if the
e0e7a341
VS
25 strings are always ANSI; may still be NULL). This change is normally
26 backwards compatible except:
4baf7800
VZ
27
28 a) Virtual functions: derived classes versions must be modified to take
29 "const wxString&" as well to make sure that they continue to override the
30 base class version.
31
32 b) Passing NULL as argument: as NULL can't be unambiguously converted to
33 wxString, in many cases code using it won't compile any more and NULL
0d5ab92f
VZ
34 should be replaced with an empty string.
35
b7aadf25
VZ
36- Functions returning "const wxChar *" were changed as well. Mostly they now
37 return wxString which is then transparently convertible to either "const char
38 *" or "const wchar_t *" but in some cases, notably wxDateTime::ParseXXX(),
39 the returned string could be NULL and so a separate helper class is used. If
40 you obtain compilation errors because of this, you can always correct them by
41 explicitly assigning the function return value to a variable of wanted type.
c398434d
VZ
42 A slightly more intrusive but better solution is to use ParseXXX() version
43 with wxString::const_iterator output parameter which simply returns bool to
44 indicate the parsing success.
0d5ab92f
VZ
45
46- Some structure fields which used to be of type "const wxChar *" (such as
47 wxCmdLineEntryDesc::shortName, longName and description fields) are now of
48 type "const char *", you need to remove wxT() or _T() around the values used
49 to initialize them (which should normally always be ASCII).
e6d4038a 50
50c549b9
VZ
51- wxIPC classes didn't work correctly in Unicode build before, this was fixed
52 but at a price of breaking backwards compatibility: many methods which used
53 to work with "wxChar *" before use "void *" now (some int parameters were
54 also changed to size_t). While wxIPC_TEXT can still be used to transfer 7
55 bit text, the new wxIPC_UTF8TEXT format is used for transferring wxStrings.
f01a77c7
VZ
56 Also notice that connection classes should change the parameter types of
57 their overridden OnExecute() or override a more convenient OnExec() instead.
e6d4038a
VZ
58
59
6f67af05
FM
60wxODBC and contrib libraries removal
61------------------------------------
1e6b2edf
VZ
62
63wxODBC library was unmaintained since several years and we couldn't continue
64supporting it any longer so it was removed. Please use any of the other open
65source ODBC libraries in the future projects.
66
6f67af05
FM
67Also the "applet", "deprecated", "fl", "mmedia" and "plot" contrib libraries
68were removed as they were unmaintained and broken since several years.
69The "gizmos", "ogl", "net" and "foldbar" contribs have been moved to
70wxCode (see http://wxcode.sourceforge.net/complist.php); they are now
71open for futher development by volunteers.
72
73The "stc" and "svg" contribs instead have been moved respectively into a new
74"official" library stc and in the core lib.
75
1e6b2edf 76
b1f3b29c
VZ
77Changes in behaviour not resulting in compilation errors, please read this!
78---------------------------------------------------------------------------
79
466e87bd
VZ
80- Default location of wxFileConfig files has changed under Windows, you will
81 need to update your code if you access these files directly.
82
47a8a4d5
VZ
83- wxWindow::IsEnabled() now returns false if a window parent (and not
84 necessarily the window itself) is disabled, new function IsThisEnabled()
85 with the same behaviour as old IsEnabled() was added.
86
5644933f
VZ
87- Generating wxNavigationKeyEvent events doesn't work any more under wxGTK (and
88 other platforms in the future), use wxWindow::Navigate() or NavigateIn()
89 instead.
90
89064717
VZ
91- Sizers distribute only the extra space between the stretchable items
92 according to their proportions and not all available space. We believe the
93 new behaviour corresponds better to user expectations but if you did rely
94 on the old behaviour you will have to update your code to set the minimal
95 sizes of the sizer items to be in the same proportion as the items
96 proportions to return to the old behaviour.
97
17808a75 98- wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
47d9ca16 99 your code you need to override DoFreeze/DoThaw() instead now.
17808a75 100
628e155d
VZ
101- wxCalendarCtrl has native implementation in wxGTK, but it has less features
102 than the generic one. The native implementation is used by default, but you
103 can still use wxGenericCalendarCtrl instead of wxCalendarCtrl in your code if
104 you need the extra features.
105
9c8116f8
VZ
106- wxDocument::FileHistoryLoad() and wxFileHistory::Load() now take const
107 reference to wxConfigBase argument and not just a reference, please update
108 your code if you overrode these functions and change the functions in the
109 derived classes to use const reference as well.
110
a6eac99d
VZ
111- Under MSW wxExecute() arguments are now always properly quoted, as under
112 Unix, and so shouldn't contain quotes unless they are part of the argument.
17808a75 113
c6e4d276
VZ
114- wxDocument::OnNewDocument() doesn't call OnCloseDocument() any more.
115
1d7b600d
VZ
116- If you use wxScrolledWindow::SetTargetWindow() you must implement its
117 GetSizeAvailableForScrollTarget() method, please see its documentation for
118 more details.
119
0e1e143d
FM
120- Processing of pending events now requires a running event loop.
121 Thus initialization code (e.g. showing a dialog) previously done in wxApp::OnRun()
122 or equivalent function should now be done into wxApp::OnEventLoopEnter().
123 See wxApp::OnEventLoopEnter() and wxApp::OnEventLoopExit() docs for more info.
124
f2a18fbe
VZ
125- wxLoadFileSelector() now allows the user to select existing files only.
126
9c61c5b0
VZ
127- Erase background events are now not generated at all when background style is
128 changed. See the updated wxWindow::SetBackgroundStyle() description in the
129 manual for more details.
130
febebac1 131- wxTreeCtrl::GetSelection now asserts if the tree has the wxTR_MULTIPLE style.
bc73d5ae 132 Instead use GetSelections() for multiple items; or if you want only the
febebac1
VZ
133 single item last touched, the new wxTreeCtrl::GetFocusedItem.
134
bc73d5ae
VZ
135- Custom log targets should be updated to override wxLog::DoLogRecord() method
136 instead of DoLog() or DoLogString() and must be updated if they call the base
137 class versions of these functions as this won't work any more; please see the
138 documentation of wxLog for more information.
139
7e6edd27
VZ
140- Confusing wxGridSizer(int cols, int vgap = 0, int hgap = 0) ctor which was
141 easy to mistake for wxGridSizer(int rows, int cols) overload was removed, you
142 will need to specify both vertical and horizontal gap if you want to use this
143 overload or specify both rows and columns and the gap otherwise. Use of the
4a00e77c
VZ
144 new constructors taking wxSize for the gap argument is preferred. The same
145 applies to wxFlexGridSizer as well.
7e6edd27 146
1d7b600d 147
b1f3b29c
VZ
148Changes in behaviour which may result in compilation errors
149-----------------------------------------------------------
150
c1dc9f83
VZ
151- WXWIN_COMPATIBILITY_2_4 doesn't exist any more, please update your code if
152 you still relied on features deprecated since version 2.4
153
ddc0ac4a
VZ
154- wxDC classes hierarchy has changed, if you derived any classes from wxDC you
155 need to review them as wxDC doesn't have any virtual methods any longer and
156 uses delegation instead of inheritance to present different behaviours.
157
8cc208e3 158- wxWindow::ProcessEvent() (and other wxEvtHandler methods inherited by wxWindow)
bca627de
FM
159 has been made protected to prevent wrongly using it instead of correct
160 GetEventHandler()->ProcessEvent().
161 New ProcessWindowEvent() was added for convenience.
3b7fa206 162
c9f78968
VS
163- Return type of wxString::operator[] and wxString::iterator::operator* is no
164 longer wxChar (i.e. char or wchar_t), but wxUniChar. This is not a problem
165 in vast majority of cases because of conversion operators, but it can break
166 code that depends on the result being wxChar.
167
ef0f1387
VS
168- The value returned by wxString::c_str() cannot be casted to non-const char*
169 or wchar_t* anymore. The solution is to use newly added wxString methods
170 char_str() (which returns a buffer convertible to char*) or wchar_str()
171 (which returns a buffer convertible to wchar_t*). These methods are
172 available in wxWidgets 2.8 series beginning with 2.8.4 as well.
173
c9f78968
VS
174- The value returned by wxString::operator[] or wxString::iterator cannot be
175 used in switch statements anymore, because it's a class instance. Code like
176 this won't compile:
177 switch (str[i]) { ... }
178 and has to be replaced with this:
179 switch (str[i].GetValue()) { ... }
180
73ba5ab9
VZ
181- Return type of wxString::c_str() is now a helper wxCStrData struct and not
182 const wxChar*. wxCStrData is implicitly convertible to both "const char *"
183 and "const wchar_t *", so this only presents a problem if the compiler cannot
184 apply the conversion. This can happen in 2 cases:
a6eac99d 185
73ba5ab9
VZ
186 + There is an ambiguity because the function being called is overloaded to
187 take both "const char *" and "const wchar_t *" as the compiler can't choose
188 between them. In this case you may use s.wx_str() to call the function
189 matching the current build (Unicode or not) or s.mb_str() or s.wc_str() to
190 explicitly select narrow or wide version of it.
191
192 Notice that such functions are normally not very common but unfortunately
193 Microsoft decided to extend their STL with standard-incompatible overloads
194 of some functions accepting "const wchar_t *" so you may need to replace
195 some occurrences of c_str() with wx_str() when using MSVC 8 or later.
196
197 + Some compilers, notably Borland C++ and DigitalMars, don't correctly
198 convert operator?: operands to the same type and fail with compilation
199 error instead. This can be worked around by explicitly casting to const
200 wxChar*: wxLogError(_("error: %s"), !err.empty() ? (const wxChar*)err.c_str() : "")
c9f78968 201
52de37c7 202- wxCtime() and wxAsctime() return char*; this is incompatible with Unicode
5bce3e6f 203 build in wxWidgets 2.8 that returned wchar_t*.
52de37c7 204
c9f78968
VS
205- DigitalMars compiler has a bug that prevents it from using
206 wxUniChar::operator bool in conditions and it erroneously reports type
207 conversion ambiguity in expressions such as this:
208 for ( wxString::const_iterator p = s.begin(); *p; ++p )
209 This can be worked around by explicitly casting to bool:
210 for ( wxString::const_iterator p = s.begin(); (bool)*p; ++p )
211
d03dab2a 212- Virtual wxHtmlParser::AddText() takes wxString, not wxChar*, argument now.
5bce3e6f 213
73ba5ab9 214- Functions that took wxChar* arguments that could by NULL in wxWidgets 2.8
d38f70b2 215 are deprecated and passing NULL to them won't compile anymore, wxEmptyString
ab29bb87 216 must be used instead.
d38f70b2 217
de34bb08
VZ
218- wxTmemxxx() functions take either wxChar* or char*, not void*: use memxxx()
219 with void pointers.
220
d03dab2a
VS
221- Removed insecure wxGets() and wxTmpnam() functions.
222
6a4cbac1
VS
223- Removed global GetLine() function from wx/protocol/protocol.h, use
224 wxProtocol::ReadLine() instead.
17808a75 225
c8058a09
JS
226- wxVariant no longer derives from wxObject. wxVariantData also no longer
227 derives from wxObject; instead of using wxDynamicCast with wxVariantData you
228 can use the macro wxDynamicCastVariantData with the same arguments.
6a4cbac1 229
1a8a13ee 230- wxWindow::Next/PrevControlId() don't exist any more as they couldn't be
08f1c27c 231 implemented correctly any longer because automatically generated ids are not
1a8a13ee 232 necessarily allocated consecutively now. Use GetChildren() to find the
08f1c27c
VZ
233 next/previous control sibling instead.
234
500b128d
VZ
235- Calling wxConfig::Write() with an enum value will fail to compile because
236 wxConfig now tries to convert all unknown types to wxString automatically.
237 The simplest solution is to cast the enum value to int.
d03dab2a 238
e98e625c
VZ
239- Several wxImage methods which previously had "long bitmaptype" parameters
240 have been changed to accept "wxBitmapType bitmaptype", please use enum
241 wxBitmapType in your code.
242
763163a8
VZ
243- wxGridCellEditor::EndEdit() signature has changed and it was split in two
244 functions, one still called EndEdit() and ApplyEdit(). See the documentation
245 of the new functions for more details about how grid editors should be
246 written now.
247
248- wxEVT_GRID_CELL_CHANGE event renamed to wxEVT_GRID_CELL_CHANGED and shouldn't
249 be vetoed any more, use the new wxEVT_GRID_CELL_CHANGING event to do it.
250
6e2f3084 251- wxListCtrlCompare function used with wxListCtrl::SortItems() must now declare
b18e2046 252 its third parameter as wxIntPtr and not long (this allows passing pointers
6e2f3084
VZ
253 to it under 64 bit platforms too).
254
8cc208e3
VZ
255- Global wxPendingEvents and wxPendingEventsLocker objects were removed.
256 You may use wxEventLoopBase::SuspendProcessingOfPendingEvents instead of
257 locking wxPendingEventsLocker now.
258
2352862a
VZ
259- wxBitmapButton::GetBitmapXXX() overloads returning non-const wxBitmap
260 references have been removed, modifying the returned bitmaps never worked and
261 now results in compile-time error.
262
34a083c9
VZ
263- wxLogXXX() are now macros, not functions. Because of this calling them with
264 an explicit scope resolution operator ("::wxLogError()") doesn't work any
265 longer, just remove it. Also notice that using them inside an "if" statement
266 without enclosing parentheses results in warnings from g++ with -Wparentheses,
267 add parentheses around the if statement body to work around it.
268
763163a8 269
5ec9d741
VZ
270Deprecated methods and their replacements
271-----------------------------------------
272
13dd765c 273- wxCreateGreyedImage() deprecated, use wxImage::ConvertToGreyscale() instead.
7890307b
VS
274- wxString::GetWriteBuf() and UngetWriteBuf() deprecated, using wxStringBuffer
275 or wxStringBufferLength instead.
d0bc78e2
VZ
276- wxDIRCTRL_SHOW_FILTERS style is deprecated, filters are alwsys shown if
277 specified so this style should simply be removed
724b119a
VZ
278- wxDocManager::MakeDefaultName() replaced by MakeNewDocumentName() and
279 wxDocument::GetPrintableName() with GetUserReadableName() which are simpler
280 to use
288b6107
VS
281- wxXmlProperty class was renamed to wxXmlAttribute in order to use standard
282 terminology. Corresponding wxXmlNode methods were renamed to use
283 "Attribute" instead of "Property" or "Prop" in their names.
022a8a5a
VZ
284- wxConnection::OnExecute() is not formally deprecated yet but new code should
285 use simpler OnExec() version which is called with wxString argument
8cc208e3
VZ
286- Various wxMenuItem methods were deprecated in favour of more consisently
287 named new versions:
288 . GetLabel() is now GetItemLabelText()
289 . GetText() is not GetItemLabel()
290 . GetLabelFromText() is now GetLabelText()
291 . SetText() is now SetItemLabel()
292- wxBrush's, wxPen's SetStyle() and GetStyle() as well as the wxBrush/wxPen
293 ctor now take respectively a wxBrushStyle and a wxPenStyle value instead of a
294 plain "int style"; use the new wxBrush/wxPen style names (wxBRUSHSTYLE_XXX
295 and wxPENSTYLE_XXX) instead of the old deprecated wxXXX styles.
e557577d
VZ
296- EVT_GRID_CELL_CHANGE was deprecated, use EVT_GRID_CELL_CHANGED instead if you
297 don't veto the event in its handler and EVT_GRID_CELL_CHANGING if you do.
628e155d
VZ
298- EVT_CALENDAR_DAY event has been deprecated, use EVT_CALENDAR_SEL_CHANGED.
299- EVT_CALENDAR_MONTH and EVT_CALENDAR_YEAR events are deprecated,
300 use EVT_CALENDAR_PAGE_CHANGED which replaces both of them.
301- wxCalendarCtrl::EnableYearChange() and wxCAL_NO_YEAR_CHANGE are deprecated.
fdaad94e
VZ
302 There is no replacement for this functionality, it is being dropped as it is
303 not available in native wxCalendarCtrl implementations.
304- wxDC::SetClippingRegion(const wxRegion&) overload is deprecated as it used
305 different convention from the other SetClippingRegion() overloads: wxRegion
306 passed to it was interpreted in physical, not logical, coordinates. Replace
307 it with SetDeviceClippingRegion() if this was the correct thing to do in your
308 code.
053ac76f 309- wxTE_AUTO_SCROLL style is deprecated as it's always on by default anyhow.
8cc208e3
VZ
310- wxThreadHelper::Create() has been renamed to CreateThread which has a better
311 name for a mix-in class, and allows setting the thread type.
bca627de
FM
312- wxDos2UnixFilename, wxUnix2DosFilename, wxStripExtension, wxGetTempFileName,
313 wxExpandPath, wxContractPath, wxRealPath, wxCopyAbsolutePath, wxSplitPath
314 were deprecated in favour of wxFileName methods. See docs for more info.
8cc208e3
VZ
315- wxEvtHandler::TryValidator/Parent() are deprecated, override the new and
316 documented TryBefore/After() methods if you used to override these ones.
e5cfb314
VZ
317- wxGetMultipleChoices() is deprecated, use wxGetSelectedChoices() which has
318 the same signature but returns -1 and not 0 if the dialog was cancelled.
39cdc95f
FM
319- building the windows which are placed inside wxStaticBoxes as siblings of the
320 wxStaticBox is still allowed but it's deprecated as it gives some problems
321 on some ports (e.g. wxGTK).
322 You should now create windows placed inside a wxStaticBox as children of
323 the static box itself.
c1ea6afb
VZ
324- wxMouseState::{Left,Middle,Right}Down() were renamed to XXXIsDown() for
325 consistency with wxMouseEvent and the old names were deprecated.
326
41ae85f8 327
5ec9d741
VZ
328Major new features in this release
329----------------------------------
330
9135f74e
VZ
331- wxWidgets is now always built with Unicode support but provides the same
332 simple (i.e. "char *"-tolerant) API as was available in ANSI build in the
333 past.
334
335- wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally,
336 depending on what is optimal for the target platform.
337
058f225a
VZ
338- New propgrid library containing wxPropertyGrid and related classes.
339
340- Many enhancements to wxDataViewCtrl.
1c4293cb 341
89ff7d64
VZ
342- Event loops, timers and sockets can now be used in wxBase, without GUI.
343
3c778901
VZ
344- Events can now be connected to any functor, not necessarily a method of
345 wxEvtHandler-derived class. The compile-time safety was also improved.
346
89ff7d64
VZ
347- Documentation for wxWidgets has been converted from LaTex to C++ headers
348 with Doxygen comments and significantly improved in the process (screenshots
349 of various controls were added, more identifiers are now linked to their
350 definition &c). Any reports about inaccuracies in the documentation are
351 welcome (and due to using the simple Doxygen syntax it is now easier than
352 ever to submit patches correcting them! :-)
6f8dd114 353
0fa541e8
VZ
354- Support for persistent objects automatically saving and restoring their state
355 was added.
356
12dc0a01 357
ae901b23
VZ
3582.9.1:
359------
360
3aaaf1aa
VZ
361All:
362
72a7c559 363- Added wxStd{Input,Output}Stream classes (Jonathan Liu).
1c7a6772 364- Include port number in host header in wxHTTP (Marcin 'Malcom' Malich).
f1a73c6a 365- Added wxTempFile::Flush().
4e00b908 366- Added support for wxLongLong and wxULongLong in wxVariant.
dbe0872f 367- Added wxVector::swap().
acad886c
VZ
368- Many wxLog improvements:
369 * wxLogXXX() functions are now thread-safe.
370 * Log levels can now be set independently for different log components.
371 * wxLog::DoLogRecord() has access to the location of the log message
372 (file, line and function name) and id of the thread which generated it.
373 * SetThreadActiveTarget() allows to set up thread-specific log targets.
07890fbe 374- Fix output buffer overflow in wxBase64Decode() (Eric W. Savage).
180f3c74 375- Added bilinear image resizing algorithm to wxImage (bishop).
2e51fb30 376- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
1c7a6772
VZ
377
378All (GUI):
379
e5d05b90 380- Added support for showing bitmaps in wxButton.
6528a7f1 381- wxWindow::SetAutoLayout() now works for all windows, not just panels.
ef18e792 382