X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cc506697c10445fd2d8f8872c120a2df8740506c..0e497a9db63c011d6a444f61291b670c382cd69b:/docs/doxygen/overviews/changes_since28.h diff --git a/docs/doxygen/overviews/changes_since28.h b/docs/doxygen/overviews/changes_since28.h index a822f168aa..f7dc4dffb2 100644 --- a/docs/doxygen/overviews/changes_since28.h +++ b/docs/doxygen/overviews/changes_since28.h @@ -46,6 +46,22 @@ passing it to @c printf() will now result in a crash. It is strongly advised to recompile your code with a compiler warning about passing non-POD objects to vararg functions, such as g++. +The change of the type of wxString::c_str() can also result in compilation +errors when passing its result to a function overloaded to take both narrow and +wide strings and in this case you must select the version which you really want +to use, e.g.: +@code + void OpenLogFile(const char *filename); + void OpenLogFile(const wchar_t *filename); + + wxString s; + OpenLogFile(s); // ERROR: ambiguity + OpenLogFile(s.c_str()); // ERROR: ambiguity + OpenLogFile(s.wx_str()); // OK: function called depends on the build + OpenLogFile(s.mb_str()); // OK: always calls narrow string overload + OpenLogFile(s.wc_str()); // OK: always calls wide string overload +@endcode + The other class of incompatible changes is due to modifying some virtual methods to use @c wxString parameters instead of @c const @c wxChar* ones to make them accept both narrow and wide strings. This is not a problem if you @@ -62,8 +78,85 @@ Finally, a few structure fields, notable @c wxCmdLineEntryDesc::shortName, @section overview_changes_other Miscellaneous Other Changes -Please see @c docs/changes.txt for details of the other changes until they are -described in more details here. - +- 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. + +- wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in + your code you need to override DoFreeze/Thaw() instead now. + +- wxCalendarCtrl has native implementation in wxGTK, but it has less features + than the generic one. The native implementation is used by default, but you + can still use wxGenericCalendarCtrl instead of wxCalendarCtrl in your code if + you need the extra features. + +- wxDocument::FileHistoryLoad() and wxFileHistory::Load() now take const + reference to wxConfigBase argument and not just a reference, please update + your code if you overrode these functions and change the functions in the + derived classes to use const reference as well. + +- Calling wxConfig::Write() with an enum value will fail to compile because + wxConfig now tries to convert all unknown types to wxString automatically + using wxToString() function. + + The simplest solution is to cast the enum value to int, e.g. + @code + enum Colour { Red, Green, Blue }; + + wxConfig conf; + conf.Write("MyFavouriteColour", Red); // ERROR: no match + conf.Write("MyFavouriteColour", int(Red)); // OK + @endcode + + Another possibility which exists now is to provide an overload of + wxToString() (and wxFromString()) for your own type, e.g. + + @code + wxString wxToString(Colour col) + { + return col == Red ? "R" : col == Green ? "G" : "B"; + } + + bool wxFromString(const wxString& s, Colour* col) + { + if ( s.length() != 1 ) + return false; + + switch ( s[0].GetValue() ) + { + case 'R': *col = Red; return true; + case 'G': *col = Green; return true; + case 'B': *col = Blue; return true; + } + + return false; + } + @endcode + + Of course, this will change the format of the wxConfig output which may be + undesirable. + +- wxTE_AUTO_SCROLL style is deprecated as it's always on by default anyhow in + the ports which support it so you should simply remove any mentions of it + from your code. + +- If you use wxScrolled::SetTargetWindow() you must override + wxScrolled::GetSizeAvailableForScrollTarget() method to compute the size + available for the scroll target as function of the main window size, please + see the documentation of this method for more details. */