]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/changes.txt
Use UTF16 for text data object on Mac. Fixes #10902
[wxWidgets.git] / docs / changes.txt
... / ...
Content-type: text/html ]> git.saurik.com Git - wxWidgets.git/blame_incremental - 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 349.
CommitLineData
1-------------------------------------------------------------------------------
2 wxWidgets Change Log
3-------------------------------------------------------------------------------
4
5INCOMPATIBLE CHANGES SINCE 2.8.x
6================================
7
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
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
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
25 strings are always ANSI; may still be NULL). This change is normally
26 backwards compatible except:
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
34 should be replaced with an empty string.
35
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.
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.
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).
50
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.
56 Also notice that connection classes should change the parameter types of
57 their overridden OnExecute() or override a more convenient OnExec() instead.
58
59
60wxODBC and contrib libraries removal
61------------------------------------
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
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
76
77Changes in behaviour not resulting in compilation errors, please read this!
78---------------------------------------------------------------------------
79
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
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
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
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
98- wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
99 your code you need to override DoFreeze/Thaw() instead now.
100
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
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
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.
113
114- wxDocument::OnNewDocument() doesn't call OnCloseDocument() any more.
115
116- If you use wxScrolledWindow::SetTargetWindow() you must implement its
117 GetSizeAvailableForScrollTarget() method, please see its documentation for
118 more details.
119
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
125- wxLoadFileSelector() now allows the user to select existing files only.
126
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
131
132Changes in behaviour which may result in compilation errors
133-----------------------------------------------------------
134
135- WXWIN_COMPATIBILITY_2_4 doesn't exist any more, please update your code if
136 you still relied on features deprecated since version 2.4
137
138- wxDC classes hierarchy has changed, if you derived any classes from wxDC you
139 need to review them as wxDC doesn't have any virtual methods any longer and
140 uses delegation instead of inheritance to present different behaviours.
141
142- wxWindow::ProcessEvent() (and other wxEvtHandler methods inherited by wxWindow)
143 has been made protected to prevent wrongly using it instead of correct
144 GetEventHandler()->ProcessEvent().
145 New ProcessWindowEvent() was added for convenience.
146
147- Return type of wxString::operator[] and wxString::iterator::operator* is no
148 longer wxChar (i.e. char or wchar_t), but wxUniChar. This is not a problem
149 in vast majority of cases because of conversion operators, but it can break
150 code that depends on the result being wxChar.
151
152- The value returned by wxString::c_str() cannot be casted to non-const char*
153 or wchar_t* anymore. The solution is to use newly added wxString methods
154 char_str() (which returns a buffer convertible to char*) or wchar_str()
155 (which returns a buffer convertible to wchar_t*). These methods are
156 available in wxWidgets 2.8 series beginning with 2.8.4 as well.
157
158- The value returned by wxString::operator[] or wxString::iterator cannot be
159 used in switch statements anymore, because it's a class instance. Code like
160 this won't compile:
161 switch (str[i]) { ... }
162 and has to be replaced with this:
163 switch (str[i].GetValue()) { ... }
164
165- Return type of wxString::c_str() is now a helper wxCStrData struct and not
166 const wxChar*. wxCStrData is implicitly convertible to both "const char *"
167 and "const wchar_t *", so this only presents a problem if the compiler cannot
168 apply the conversion. This can happen in 2 cases:
169
170 + There is an ambiguity because the function being called is overloaded to
171 take both "const char *" and "const wchar_t *" as the compiler can't choose
172 between them. In this case you may use s.wx_str() to call the function
173 matching the current build (Unicode or not) or s.mb_str() or s.wc_str() to
174 explicitly select narrow or wide version of it.
175
176 Notice that such functions are normally not very common but unfortunately
177 Microsoft decided to extend their STL with standard-incompatible overloads
178 of some functions accepting "const wchar_t *" so you may need to replace
179 some occurrences of c_str() with wx_str() when using MSVC 8 or later.
180
181 + Some compilers, notably Borland C++ and DigitalMars, don't correctly
182 convert operator?: operands to the same type and fail with compilation
183 error instead. This can be worked around by explicitly casting to const
184 wxChar*: wxLogError(_("error: %s"), !err.empty() ? (const wxChar*)err.c_str() : "")
185
186- wxCtime() and wxAsctime() return char*; this is incompatible with Unicode
187 build in wxWidgets 2.8 that returned wchar_t*.
188
189- DigitalMars compiler has a bug that prevents it from using
190 wxUniChar::operator bool in conditions and it erroneously reports type
191 conversion ambiguity in expressions such as this:
192 for ( wxString::const_iterator p = s.begin(); *p; ++p )
193 This can be worked around by explicitly casting to bool:
194 for ( wxString::const_iterator p = s.begin(); (bool)*p; ++p )
195
196- Virtual wxHtmlParser::AddText() takes wxString, not wxChar*, argument now.
197
198- Functions that took wxChar* arguments that could by NULL in wxWidgets 2.8
199 are deprecated and passing NULL to them won't compile anymore, wxEmptyString
200 must be used instead.
201
202- wxTmemxxx() functions take either wxChar* or char*, not void*: use memxxx()
203 with void pointers.
204
205- Removed insecure wxGets() and wxTmpnam() functions.
206
207- Removed global GetLine() function from wx/protocol/protocol.h, use
208 wxProtocol::ReadLine() instead.
209
210- wxVariant no longer derives from wxObject. wxVariantData also no longer
211 derives from wxObject; instead of using wxDynamicCast with wxVariantData you
212 can use the macro wxDynamicCastVariantData with the same arguments.
213
214- wxWindow::Next/PrevControlId() don't exist any more as they couldn't be
215 implemented correctly any longer because automatically generated ids are not
216 necessarily allocated consecutively now. Use GetChildren() to find the
217 next/previous control sibling instead.
218
219- Calling wxConfig::Write() with an enum value will fail to compile because
220 wxConfig now tries to convert all unknown types to wxString automatically.
221 The simplest solution is to cast the enum value to int.
222
223- Several wxImage methods which previously had "long bitmaptype" parameters
224 have been changed to accept "wxBitmapType bitmaptype", please use enum
225 wxBitmapType in your code.
226
227- wxGridCellEditor::EndEdit() signature has changed and it was split in two
228 functions, one still called EndEdit() and ApplyEdit(). See the documentation
229 of the new functions for more details about how grid editors should be
230 written now.
231
232- wxEVT_GRID_CELL_CHANGE event renamed to wxEVT_GRID_CELL_CHANGED and shouldn't
233 be vetoed any more, use the new wxEVT_GRID_CELL_CHANGING event to do it.
234
235- wxListCtrlCompare function used with wxListCtrl::SortItems() must now declare
236 its third parameter as wxIntPtr and not long (this allows passing pointers
237 to it under 64 bit platforms too).
238
239- Global wxPendingEvents and wxPendingEventsLocker objects were removed.
240 You may use wxEventLoopBase::SuspendProcessingOfPendingEvents instead of
241 locking wxPendingEventsLocker now.
242
243- wxBitmapButton::GetBitmapXXX() overloads returning non-const wxBitmap
244 references have been removed, modifying the returned bitmaps never worked and
245 now results in compile-time error.
246
247
248Deprecated methods and their replacements
249-----------------------------------------
250
251- wxCreateGreyedImage() deprecated, use wxImage::ConvertToGreyscale() instead.
252- wxString::GetWriteBuf() and UngetWriteBuf() deprecated, using wxStringBuffer
253 or wxStringBufferLength instead.
254- wxDIRCTRL_SHOW_FILTERS style is deprecated, filters are alwsys shown if
255 specified so this style should simply be removed
256- wxDocManager::MakeDefaultName() replaced by MakeNewDocumentName() and
257 wxDocument::GetPrintableName() with GetUserReadableName() which are simpler
258 to use
259- wxXmlProperty class was renamed to wxXmlAttribute in order to use standard
260 terminology. Corresponding wxXmlNode methods were renamed to use
261 "Attribute" instead of "Property" or "Prop" in their names.
262- wxConnection::OnExecute() is not formally deprecated yet but new code should
263 use simpler OnExec() version which is called with wxString argument
264- Various wxMenuItem methods were deprecated in favour of more consisently
265 named new versions:
266 . GetLabel() is now GetItemLabelText()
267 . GetText() is not GetItemLabel()
268 . GetLabelFromText() is now GetLabelText()
269 . SetText() is now SetItemLabel()
270- wxBrush's, wxPen's SetStyle() and GetStyle() as well as the wxBrush/wxPen
271 ctor now take respectively a wxBrushStyle and a wxPenStyle value instead of a
272 plain "int style"; use the new wxBrush/wxPen style names (wxBRUSHSTYLE_XXX
273 and wxPENSTYLE_XXX) instead of the old deprecated wxXXX styles.
274- EVT_GRID_CELL_CHANGE was deprecated, use EVT_GRID_CELL_CHANGED instead if you
275 don't veto the event in its handler and EVT_GRID_CELL_CHANGING if you do.
276- EVT_CALENDAR_DAY event has been deprecated, use EVT_CALENDAR_SEL_CHANGED.
277- EVT_CALENDAR_MONTH and EVT_CALENDAR_YEAR events are deprecated,
278 use EVT_CALENDAR_PAGE_CHANGED which replaces both of them.
279- wxCalendarCtrl::EnableYearChange() and wxCAL_NO_YEAR_CHANGE are deprecated.
280 There is no replacement for this functionality, it is being dropped as it is
281 not available in native wxCalendarCtrl implementations.
282- wxDC::SetClippingRegion(const wxRegion&) overload is deprecated as it used
283 different convention from the other SetClippingRegion() overloads: wxRegion
284 passed to it was interpreted in physical, not logical, coordinates. Replace
285 it with SetDeviceClippingRegion() if this was the correct thing to do in your
286 code.
287- wxTE_AUTO_SCROLL style is deprecated as it's always on by default anyhow.
288- wxThreadHelper::Create() has been renamed to CreateThread which has a better
289 name for a mix-in class, and allows setting the thread type.
290- wxDos2UnixFilename, wxUnix2DosFilename, wxStripExtension, wxGetTempFileName,
291 wxExpandPath, wxContractPath, wxRealPath, wxCopyAbsolutePath, wxSplitPath
292 were deprecated in favour of wxFileName methods. See docs for more info.
293- wxEvtHandler::TryValidator/Parent() are deprecated, override the new and
294 documented TryBefore/After() methods if you used to override these ones.
295- wxGetMultipleChoices() is deprecated, use wxGetSelectedChoices() which has
296 the same signature but returns -1 and not 0 if the dialog was cancelled.
297- building the windows which are placed inside wxStaticBoxes as siblings of the
298 wxStaticBox is still allowed but it's deprecated as it gives some problems
299 on some ports (e.g. wxGTK).
300 You should now create windows placed inside a wxStaticBox as children of
301 the static box itself.
302- wxMouseState::{Left,Middle,Right}Down() were renamed to XXXIsDown() for
303 consistency with wxMouseEvent and the old names were deprecated.
304
305
306Major new features in this release
307----------------------------------
308
309- wxWidgets is now always built with Unicode support but provides the same
310 simple (i.e. "char *"-tolerant) API as was available in ANSI build in the
311 past.
312
313- wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally,
314 depending on what is optimal for the target platform.
315
316- New propgrid library containing wxPropertyGrid and related classes.
317
318- Many enhancements to wxDataViewCtrl.
319
320- Event loops, timers and sockets can now be used in wxBase, without GUI.
321
322- Events can now be connected to any functor, not necessarily a method of
323 wxEvtHandler-derived class. The compile-time safety was also improved.
324
325- Documentation for wxWidgets has been converted from LaTex to C++ headers
326 with Doxygen comments and significantly improved in the process (screenshots
327 of various controls were added, more identifiers are now linked to their
328 definition &c). Any reports about inaccuracies in the documentation are
329 welcome (and due to using the simple Doxygen syntax it is now easier than
330 ever to submit patches correcting them! :-)
331
332- Support for persistent objects automatically saving and restoring their state
333 was added.
334
335
3362.9.1:
337------
338
339All:
340
341- Added wxStd{Input,Output}Stream classes (Jonathan Liu).
342- Include port number in host header in wxHTTP (Marcin 'Malcom' Malich).
343- Added wxTempFile::Flush().
344- Added support for wxLongLong and wxULongLong in wxVariant.
345
346All (GUI):
347
348- wxWindow::SetAutoLayout() now works for all windows, not just panels.
349