-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
changes.txt
4662 lines (3833 loc) · 198 KB
/
changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-------------------------------------------------------------------------------
wxWidgets Change Log
-------------------------------------------------------------------------------
INCOMPATIBLE CHANGES SINCE 2.8.x
================================
Notice that these changes are described in more details in
the "Changes Since wxWidgets 2.8" section of the manual,
please read it if the explanation here is too cryptic.
Unicode-related changes
-----------------------
The biggest changes in wxWidgets 3.0 are the changes due to the merge of the
old ANSI and Unicode build modes in a single build. See the Unicode overview
in the manual for more details but here are the most important incompatible
changes:
- Many wxWidgets functions taking "const wxChar *" have been changed to take
either "const wxString&" (so that they accept both Unicode and ANSI strings;
the argument can't be NULL anymore in this case) or "const char *" (if the
strings are always ANSI; may still be NULL). This change is normally
backwards compatible except:
a) Virtual functions: derived classes versions must be modified to take
"const wxString&" as well to make sure that they continue to override the
base class version.
b) Passing NULL as argument: as NULL can't be unambiguously converted to
wxString, in many cases code using it won't compile any more and NULL
should be replaced with an empty string.
- Functions returning "const wxChar *" were changed as well. Mostly they now
return wxString which is then transparently convertible to either "const char
*" or "const wchar_t *" but in some cases, notably wxDateTime::ParseXXX(),
the returned string could be NULL and so a separate helper class is used. If
you obtain compilation errors because of this, you can always correct them by
explicitly assigning the function return value to a variable of wanted type.
A slightly more intrusive but better solution is to use ParseXXX() version
with wxString::const_iterator output parameter which simply returns bool to
indicate the parsing success.
- Some structure fields which used to be of type "const wxChar *" (such as
wxCmdLineEntryDesc::shortName, longName and description fields) are now of
type "const char *", you need to remove wxT() or _T() around the values used
to initialize them (which should normally always be ASCII). If you want your
code to remain compatible with Unicode build of previous wx version, please
use the special wxT_2, which is the same as wxT in 2.x only, instead.
- wxIPC classes didn't work correctly in Unicode build before, this was fixed
but at a price of breaking backwards compatibility: many methods which used
to work with "wxChar *" before use "void *" now (some int parameters were
also changed to size_t). While wxIPC_TEXT can still be used to transfer 7
bit text, the new wxIPC_UTF8TEXT format is used for transferring wxStrings.
Also notice that connection classes should change the parameter types of
their overridden OnExecute() or override a more convenient OnExec() instead.
wxODBC and contrib libraries removal
------------------------------------
wxODBC library was unmaintained since several years and we couldn't continue
supporting it any longer so it was removed. Please use any of the other open
source ODBC libraries in the future projects.
Also the "applet", "deprecated", "fl", "mmedia" and "plot" contrib libraries
were removed as they were unmaintained and broken since several years.
The "gizmos", "ogl", "net" and "foldbar" contribs have been moved to
wxCode (see http://wxcode.sourceforge.net/complist.php); they are now
open for further development by volunteers.
The "stc" and "svg" contribs instead have been moved respectively into a new
"official" library stc and in the core lib.
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.
- Interpretation of font height in pixels parameter has changed in wxFont
ctor and SetPixelSize() in wxMSW: it is now used as character height and not
the total cell height. If you previously used negative height to explicitly
request character height matching, you may now change your code to use
positive value (passing negative height still works but is undocumented and
deprecated). If you used positive height before you should retest your code
to check if the changes correspond to your expectations. And if you do need
the old behaviour please contact us at wx-dev to let us know about it!
- wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
your code you need to override DoFreeze/DoThaw() 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.
- Under MSW wxExecute() arguments are now always properly quoted, as under
Unix, and so shouldn't contain quotes unless they are part of the argument.
- wxDocument::OnNewDocument() doesn't call OnCloseDocument() any more.
- If you use wxScrolledWindow::SetTargetWindow() you must implement its
GetSizeAvailableForScrollTarget() method, please see its documentation for
more details.
- Processing of pending events now requires a running event loop.
Thus initialization code (e.g. showing a dialog) previously done in wxApp::OnRun()
or equivalent function should now be done into wxApp::OnEventLoopEnter().
See wxApp::OnEventLoopEnter() and wxApp::OnEventLoopExit() docs for more info.
- wxDialogs get wxEVT_SIZE events immediately after creation in wxMSW, as with
wxFrames. This means that this event handler may be called earlier than in
2.8, check that all the controls are initialized before using them in it.
- wxLoadFileSelector() now allows the user to select existing files only.
- Erase background events are now not generated at all when background style is
changed. See the updated wxWindow::SetBackgroundStyle() description in the
manual for more details.
- wxTreeCtrl::GetSelection now asserts if the tree has the wxTR_MULTIPLE style.
Instead use GetSelections() for multiple items; or if you want only the
single item last touched, the new wxTreeCtrl::GetFocusedItem.
- Custom log targets should be updated to override wxLog::DoLogRecord() method
instead of DoLog() or DoLogString() and must be updated if they call the base
class versions of these functions as this won't work any more; please see the
documentation of wxLog for more information.
- Confusing wxGridSizer(int cols, int vgap = 0, int hgap = 0) ctor which was
easy to mistake for wxGridSizer(int rows, int cols) overload was removed, you
will need to specify both vertical and horizontal gap if you want to use this
overload or specify both rows and columns and the gap otherwise. Use of the
new constructors taking wxSize for the gap argument is preferred. The same
applies to wxFlexGridSizer as well.
- wxBoxSizer::AddSpacer(x) now adds space in the direction of the sizer only
and not in both this and the orthogonal directions. This behaviour is what
most of the people expect but if you really relied on this overload adding
space in both directions you should change your code to use AddSpacer(x, x).
- wxTextCtrl::LoadFile no longer sends a text update event.
- wxXmlDocument::Save()'s indentstep argument's interpretation was fixed
to match the documentation: it now really is the number of spaces in
indentation instead of being its double. Its default value was changed
accordingly, to 2.
- wxLOCALE_CONV_ENCODING flag has no effect now, catalogs are converted
regardless of whether the flag was specified or not. This only affects
legacy ANSI builds.
- wxNotebook::GetSelection() returns the new page index when called from
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED event handler in wxMSW, not the old one.
The new behaviour is consistent with wxGTK and more logical but different
from the previous versions. Using wxNotebookEvent::GetSelection() instead of
querying the notebook selection avoids the problem and is recommended.
- wxMSW-specific wxAutomationObject::GetInstance() method now creates a new
instance if needed instead of failing if the application providing the
requested ProgID is not running. Pass wxAutomationInstance_UseExistingOnly
flag to it to revert to the old behaviour. It is also possible to use the
wxAutomationInstance_SilentIfNone flag to prevent the error message if no
currently running instances of this object are available.
- Signature of wxDataViewCustomRenderer::StartDrag() virtual method changed.
You will need to change it in your derived renderer class too if you override
it.
- wxDataViewCustomRenderer::Activate() and LeftClick() were replaced with the
new ActivateCell() method. You will need to change it in your derived
renderer class accordingly.
- wxThread::Wait() and wxThread::Delete() used to dispatch the events while
waiting for the thread to exit in wxMSW. They still do it in default build
with WXWIN_COMPATIBILITY_2_8 defined but won't dispatch any events, i.e. the
default wait mode will become wxTHREAD_WAIT_BLOCK in the next wxWidgets
release so you are strongly encouraged to upgrade your code to stop relying
on this behaviour.
- wxEVT_CHAR_HOOK events are not generated any more if the mouse is captured to
prevent the parent wxTopLevelWindow from interfering with the keyboard
handling of the window that captured the mouse.
- wxDataViewCtrl::GetSelection() now returns invalid item in all ports (this
behaved differently in wxMSW and wxGTK/wxOSX before) if more than one item
is selected in a control with wxDV_MULTIPLE style.
- wxEVT_COMMAND_MENU_SELECTED, MENU_OPEN and CLOSE events returned a menu from
GetEventObject() in all ports but the frame the menu was attached to in wxMSW.
Now all ports return the menu that was opened or closed as the event object.
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
- WXWIN_COMPATIBILITY_2_6 still exists but is 0 by default in this release and
will be removed in 3.2. You can set it to 1 and rebuild wxWidgets to access
the old and deprecated symbols but please consider updating your code
instead. Here are replacements for some of the obsolete symbols:
+ wxSAVE and wxOPEN -> wxFD_SAVE and wxFD_OPEN
+ WXK_PRIOR and WXK_NEXT -> WXK_PAGEUP and WXK_PAGEDOWN
+ wxRESIZE_BOX -> wxMAXIMIZE_BOX
+ wxTHICK_FRAME -> wxRESIZE_BORDER
+ wxPROCESS_ENTER and wxPASSWORD -> wxTE_PROCESS_ENTER and wxTE_PASSWORD
+ EVT_SCROLL_ENDSCROLL -> EVT_SCROLL_CHANGED
+ NewControlId -> wxWindow::NewControlId()
+ wxFileHistory::GetNoHistoryFiles() -> wxFileHistory::GetCount()
+ wxSizerItem::SetOption() -> wxSizerItem::SetProportion()
+ wxSizer::Remove(wxWindow*) -> wxSizer::Detach()
- wxDC classes hierarchy has changed, if you derived any classes from wxDC you
need to review them as wxDC doesn't have any virtual methods any longer and
uses delegation instead of inheritance to present different behaviours.
- wxWindow::ProcessEvent() (and other wxEvtHandler methods inherited by wxWindow)
has been made protected to prevent wrongly using it instead of correct
GetEventHandler()->ProcessEvent().
New ProcessWindowEvent() was added for convenience.
- 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 a helper wxCStrData struct and not
const wxChar*. wxCStrData is implicitly convertible to both "const char *"
and "const wchar_t *", so this only presents a problem if the compiler cannot
apply the conversion. This can happen in 2 cases:
+ There is an ambiguity because the function being called is overloaded to
take both "const char *" and "const wchar_t *" as the compiler can't choose
between them. In this case you may use s.wx_str() to call the function
matching the current build (Unicode or not) or s.mb_str() or s.wc_str() to
explicitly select narrow or wide version of it.
Notice that such functions are normally not very common but unfortunately
Microsoft decided to extend their STL with standard-incompatible overloads
of some functions accepting "const wchar_t *" so you may need to replace
some occurrences of c_str() with wx_str() when using MSVC 8 or later.
+ Some compilers, notably Borland C++ and DigitalMars, 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() : "")
- wxDateTime::ParseXXX() overloads don't return anything when called with
wxCStrData argument. If you need to test the parsing success, use a newer
overload taking wxString::const_iterator and returning bool or explicitly
select a narrow or wide char version to use by casting c_str() to either
"char*" or "wchar_t*". Or create a temporary wxString and parse it instead.
- 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.
- Functions that took wxChar* arguments that could be NULL in wxWidgets 2.8
are deprecated and passing NULL to them won't compile anymore, wxEmptyString
must be used instead.
- wxTmemxxx() functions take either wxChar* or char*, not void*: use memxxx()
with void pointers.
- Removed insecure wxGets() and wxTmpnam() functions.
- Removed global GetLine() function from wx/protocol/protocol.h, use
wxProtocol::ReadLine() instead.
- wxVariant no longer derives from wxObject. wxVariantData also no longer
derives from wxObject; instead of using wxDynamicCast with wxVariantData you
can use the macro wxDynamicCastVariantData with the same arguments.
- wxWindow::Next/PrevControlId() don't exist any more as they couldn't be
implemented correctly any longer because automatically generated ids are not
necessarily allocated consecutively now. Use GetChildren() to find the
next/previous control sibling instead.
- Calling wxConfig::Write() with an enum value will fail to compile because
wxConfig now tries to convert all unknown types to wxString automatically.
The simplest solution is to cast the enum value to int.
- Several wxImage methods which previously had "long bitmaptype" parameters
have been changed to accept "wxBitmapType bitmaptype", please use enum
wxBitmapType in your code.
- wxGridCellEditor::EndEdit() signature has changed and it was split in two
functions, one still called EndEdit() and ApplyEdit(). See the documentation
of the new functions for more details about how grid editors should be
written now.
- wxEVT_GRID_CELL_CHANGE event renamed to wxEVT_GRID_CELL_CHANGED and shouldn't
be vetoed any more, use the new wxEVT_GRID_CELL_CHANGING event to do it.
- wxListCtrlCompare function used with wxListCtrl::SortItems() must now declare
its third parameter as wxIntPtr and not long (this allows passing pointers
to it under 64 bit platforms too).
- Global wxPendingEvents and wxPendingEventsLocker objects were removed.
You may use wxEventLoopBase::SuspendProcessingOfPendingEvents instead of
locking wxPendingEventsLocker now.
- wxBitmapButton::GetBitmapXXX() overloads returning non-const wxBitmap
references have been removed, modifying the returned bitmaps never worked and
now results in compile-time error.
- wxLogXXX() are now macros, not functions. Because of this calling them with
an explicit scope resolution operator ("::wxLogError()") doesn't work any
longer, just remove it. Also notice that using them inside an "if" statement
without enclosing parentheses results in warnings from g++ with -Wparentheses,
add parentheses around the if statement body to work around it.
- wxList::Member() now returns bool and not a pointer/iterator. This shouldn't
require any changes as it was always meant to be used for checking for the
presence of an element in the list only. If you used it as Find(), simple do
use Find() instead.
- wxLongLongFmtSpec is now a normal and not wide string so you will need to
change expressions of the form wxT("%") wxLongLongFmtSpec wxT("x") to
just "%" wxLongLongFmtSpec "x", i.e. simply remove wxT() from the strings you
concatenate with it.
- wxST_MARKUP doesn't exist any more, use wxControl::SetLabelMarkup() instead.
- wxComboBox::IsEmpty(), which was previously available in some ports (but not
wxMSW), doesn't exist any more, use either IsListEmpty() or IsTextEmpty().
- wxSingleChoiceDialog ctors and Create() now have 2 overloaded versions: one
taking void** client data and the deprecated one taking char**. This can
result in compilation errors due to an ambiguity between them if you pass
NULL as client data. To fix this, cast NULL explicitly to "void**".
- wxChoicebookEvent, wxListbookEvent, wxNotebookEvent, wxToolbookEvent and
wxTreebookEvent are now all synonyms for wxBookCtrlEvent. The existing code
using the old names continues to work but they can't be forward-declared
any more. Use wxBookCtrlEvent in your code if you need to forward-declare
it or just include the appropriate header instead of forward declaration.
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
- wxXmlProperty class was renamed to wxXmlAttribute in order to use standard
terminology. Corresponding wxXmlNode methods were renamed to use
"Attribute" instead of "Property" or "Prop" in their names.
- wxConnection::OnExecute() is not formally deprecated yet but new code should
use simpler OnExec() version which is called with wxString argument
- Various wxMenuItem methods were deprecated in favour of more consisently
named new versions:
. GetLabel() is now GetItemLabelText()
. GetText() is not GetItemLabel()
. GetLabelFromText() is now GetLabelText()
. SetText() is now SetItemLabel()
- wxBrush's, wxPen's SetStyle() and GetStyle() as well as the wxBrush/wxPen
ctor now take respectively a wxBrushStyle and a wxPenStyle value instead of a
plain "int style"; use the new wxBrush/wxPen style names (wxBRUSHSTYLE_XXX
and wxPENSTYLE_XXX) instead of the old deprecated wxXXX styles.
- EVT_GRID_CELL_CHANGE was deprecated, use EVT_GRID_CELL_CHANGED instead if you
don't veto the event in its handler and EVT_GRID_CELL_CHANGING if you do.
- EVT_CALENDAR_DAY event has been deprecated, use EVT_CALENDAR_SEL_CHANGED.
- EVT_CALENDAR_MONTH and EVT_CALENDAR_YEAR events are deprecated,
use EVT_CALENDAR_PAGE_CHANGED which replaces both of them.
- wxCalendarCtrl::EnableYearChange() and wxCAL_NO_YEAR_CHANGE are deprecated.
There is no replacement for this functionality, it is being dropped as it is
not available in native wxCalendarCtrl implementations.
- wxDC::SetClippingRegion(const wxRegion&) overload is deprecated as it used
different convention from the other SetClippingRegion() overloads: wxRegion
passed to it was interpreted in physical, not logical, coordinates. Replace
it with SetDeviceClippingRegion() if this was the correct thing to do in your
code.
- wxTE_AUTO_SCROLL style is deprecated as it's always on by default anyhow.
- wxThreadHelper::Create() has been renamed to CreateThread which has a better
name for a mix-in class, and allows setting the thread type.
- wxDos2UnixFilename, wxUnix2DosFilename, wxStripExtension, wxGetTempFileName,
wxExpandPath, wxContractPath, wxRealPath, wxCopyAbsolutePath, wxSplitPath
were deprecated in favour of wxFileName methods. See docs for more info.
- wxEvtHandler::TryValidator/Parent() are deprecated, override the new and
documented TryBefore/After() methods if you used to override these ones.
- wxGetMultipleChoices() is deprecated, use wxGetSelectedChoices() which has
the same signature but returns -1 and not 0 if the dialog was cancelled.
- building the windows which are placed inside wxStaticBoxes as siblings of the
wxStaticBox is still allowed but it's deprecated as it gives some problems
on some ports (e.g. wxGTK).
You should now create windows placed inside a wxStaticBox as children of
the static box itself.
- wxMouseState::{Left,Middle,Right}Down() were renamed to XXXIsDown() for
consistency with wxMouseEvent and the old names were deprecated.
- wxFont::SetNoAntiAliasing() was deprecated, it never really worked in most
ports and was always marked as "experimental" API. It will be replaced with
wxDC-level anti-aliasing control in the future.
- wxValidator::SetBellOnError() incorrectly interpreted its argument (it
disabled the bell when it was true) and was replaced by SuppressBellOnError()
with more expected semantics.
- wxPORTRAIT and wxLANDSCAPE are now elements of wxPrintOrientation enum and
wxPrintData::SetOrientation(int) takes wxPrintOrientation and not int.
- Second parameter of wxSlider::SetTickFreq(int n, int pos) is deprecated,
simply remove it from your code and use wxSlider::SetTickFreq(int n) as it
was never used anyhow.
- wxSingleChoiceDialog ctor and Create() take "void**" client data pointer
instead of "char**". As the client data is typically untyped, you should
simply remove the casts to "char**" which you probably have in your code if
you use these functions.
- wxDataViewCtrl::StartEditor(item, n) taking column index is now deprecated,
use EditItem(item, GetColumn(n)), which takes the column itself, instead.
- wxWindow::MakeModal() is deprecated, use wxDialog::ShowModal() instead if
possible or wxWindowDisabler otherwise.
Changes in behaviour visible to end users
-----------------------------------------
- In wxMSW wxSpinCtrl used to prevent the user from entering more digits than
could fit in its visible area. This was inconsistent with the other ports and
now the control scrolls if too much text is added.
Major new features in this release
----------------------------------
- wxWidgets is now always built with Unicode support but provides the same
simple (i.e. "char *"-tolerant) API as was available in ANSI build in the
past.
- wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally,
depending on what is optimal for the target platform.
- New propgrid library containing wxPropertyGrid and related classes.
- new ribbon library for advanced toolbars.
- Many enhancements to wxDataViewCtrl.
- Event loops, timers and sockets can now be used in wxBase, without GUI.
- Events can now be connected to any functor, not necessarily a method of
wxEvtHandler-derived class. The compile-time safety was also improved.
- Documentation for wxWidgets has been converted from LaTex to C++ headers
with Doxygen comments and significantly improved in the process (screenshots
of various controls were added, more identifiers are now linked to their
definition &c). Any reports about inaccuracies in the documentation are
welcome (and due to using the simple Doxygen syntax it is now easier than
ever to submit patches correcting them! :-)
- Support for persistent objects automatically saving and restoring their state
was added.
2.9.4:
------
All:
- Added wxLogFormatter to allow customizing wxLog output (Sébastien Gallou).
- Added wxFSInputStream for reading data from wxFileSystem (Armel Asselin).
- Added "%z" support to wxDateTime::Format() and Parse() (Armel Asselin).
- Add wxHTTP::SetPostBuffer(wxMemoryBuffer) and SetPostText() (Eran Ifrah).
- Fix wrong time zone used in wxDateTime::UNow().
- Fix performance of wxStdInputStream with MSVC8/9 (wsu).
- Added wxFileName::Exists().
- Implement wxThread::SetConcurrency() for POSIX systems (Igor Korot).
- Fix deadlock due to too many events in Unix console apps (Lukasz Michalski).
- Added wxDir::GetNameWithSep().
All (GUI):
- Added strike-through support to wxFont (Igor Korot).
- Add support for horizontal mouse wheel events to MSW and GTK (Lauri Nurmi).
- Fix infinite loop in wxHtmlEasyPrinting when trying to page break images
taller than the page height in wxHtmlEasyPrinting (Laurent Poujoulat).
- Added wxFilePickerCtrl::SetInitialDirectory().
- Added wxDataViewItemAttr::SetBackgroundColour() and implemented it in generic
wxDataViewCtrl (Andrew Xu).
- Fix item alignment in icon view in the generic wxListCtrl.
- Support font-family/style, text-decoration in wxHtmlWindow (Blake Oleander).
- Show ribbon tools help strings in tooltips (John Roberts).
- Improve row/column selection modes in wxGrid (joostn).
- Send wxEVT_UPDATE_UI for wxRibbonButtonBar and wxRibbonToolBar (Emilien Kia).
- Add InsertXXXButton() to wxRibbonButtonBar and wxRibbonToolBar (Emilien Kia).
- Allow enabling/disabling and toggling tools in wxRibbonToolBar (Emilien Kia).
- Fix multiple item selection in generic wxTreeCtrl (Igor Korot).
- Implement wxMenuBar::IsEnabledTop() for all major ports (Igor Korot).
- Implement best size calculation for report mode wxListCtrl.
- Fix setting of the frame icon when using non-standard icon sizes (vid).
- Implement wxDV_ROW_LINES in generic wxDataViewCtrl (RedCAT).
- Added EVT_AUI_PANE_ACTIVATED event (Ronny Krüger).
- Added support for page tooltips to wxAuiNotebook (Armel Asselin).
- Added wxSplitterWindow::SetSashInvisible() (Armel Asselin).
- Enable/disable "Window" menu items in AUI MDI correctly (wsu).
- Added wxTimePickerCtrl::Get/SetTime().
- Fix WXK_MENU handling in wxStyledTextCtrl under wxGTK (cantabile).
- Added wxAcceleratorEntry::ToRawString() (Armel Asselin).
- Added wxDataViewEvent::SetDragFlags() and GetDropEffect() (Friedrich).
- Added support for fields and virtual attributes to wxRichTextCtrl.
- Added custom text and dimension scaling to wxRichTextCtrl.
- Added pixel font size capability to wxTextAttr and wxRichTextCtrl.
GTK:
- Implement support for wxBG_STYLE_TRANSPARENT (Armel Asselin).
- Fix wxNotebook best size calculation.
- Implement wxDirDialog::Create() and wxFileDialog::Create() (vinayakgarg).
- Fix const methods display in assert dialog (vinayakgarg).
- Implement native tab art for wxAUI (Jens Lody and Teodor Petrov).
- Fix pasting large amounts of text (Bradley Hawkins).
MSW:
- Fixed regression with initial focus in the dialogs in 2.9.3.
- Use new style directory selection dialog under Vista and later (PB).
- Added support for wxEXEC_MAKE_GROUP_LEADER to wxExecute (tteras).
- Set wxMenu being closed in wxEVT_MENU_CLOSE events (Marcin Malich).
- Fix coordinates and Z-position for joystick events (Markus Juergens).
- Fix size of the font returned by wxTextCtrl::GetStyle() (Igor Korot).
- Add wxActiveXContainer::QueryClientSiteInterface and implement it in
wxWebViewIE to improve the default behaviour (Allonii).
- Update stretchable spaces in wxToolBar after tool removal (Catalin Raceanu).
- Implement wxGraphicsContext::SetInterpolationQuality() (Eric Jensen).
- Fix coordinate handling in wxDC::Blit() when source DC is a DIB.
- Fix handling of composite windows in wxToolTip (Armel Asselin).
- Add VT_I8 support to wxAutomationObject (PB).
- Fix wxListbook size calculations to avoid spurious scrollbars.
- Fix non-GUI code compilation with wxUSE_UNICODE_UTF8 (Kolya Kosenko).
OSX:
- Provide native implementations of wxDatePickerCtrl and wxTimePickerCtrl.
- Fix handling of positional parameters in wxPrintf() &c (David Connet).
- Implement wxStackWalker.
Univ:
- Fix regression with read-only wxComboBox appearance (Jason Erb).
Unix:
- Fix bug with wxDir("/").GetName() returning empty string.
2.9.3: (released 2011-12-14)
------
INCOMPATIBLE CHANGES SINCE 2.9.2
- wxPanel::SetBackgroundBitmap() was removed, derive your class from
wxCustomBackgroundWindow and use its method with the same name instead.
All:
- Fix parsing of negated long options in wxCmdLineParser (roed_bis).
- Fix crash in wxArray::insert() overload taking iterator range (wsu).
- Added wxEventFilter class and wxEvtHandler::{Add,Remove}Filter().
- Added convenient wxCmdLineParser::AddLong{Option,Switch}() wrappers.
- Added wxStopWatch::TimeInMicro() and wxGetUTCTimeUSec() and improved
wxStopWatch precision.
- Made wxGetLocalTimeMillis() really return local time, added
wxGetUTCTimeMillis() returning what this function used to return.
- Added wxCriticalSection::TryEnter() (Catalin Raceanu).
- Add support for OpenBSD to wxDialUpManager (brad0).
- Added wxEXEC_HIDE_CONSOLE flag.
All (GUI):
- Added wxWebView library (Steven Lamerton & Auria, GSoC 2011 project).
- Added wxTreeListCtrl class.
- Added wxTimePickerCtrl class.
- Added wxRichToolTip class.
- Added documented, public wxNavigationEnabled<> class.
- Added wxTextCtrl::PositionToCoords() (Navaneeth).
- Added support for wxHELP button to wxMessageDialog.
- Added wxBannerWindow class.
- Allow setting window shape to arbitrary wxGraphicsPath.
- Added wxTextEntry::AutoCompleteDirectories().
- Support float, double and file name values in wxGenericValidator (troelsk).
- Add support for custom numeric formats to wxGrid (Kinaou Hervé).
- Fix keyboard navigation in wxGrid with hidden columns (ivan_14_32).
- Add wxDataViewEvent::IsEditCancelled() (Allonii).
- Send EVT_DATAVIEW_ITEM_CONTEXT_MENU events even when not clicking on an item.
- Allow marking wxTreeBook nodes to expand initially in XRC (RedTide).
- Added customizable wxDocManager::OnMRUFileNotExist() virtual method.
- Fix stock labels when not using mnemonics for Chinese (cw.ahbong).
- Added wxComboBox::IsListEmpty() and IsTextEmpty().
- Added wxDataViewCtrl::GetSelectedItemsCount() and HasSelection().
- Added wxFLP_SMALL and wxDIRP_SMALL styles.
- Added support for saving alpha with TIFF images.
- Added wxPersistentSplitter.
- Derive wxAuiNotebook from wxBookCtrlBase (Steven Lamerton).
- Fix tooltips in wxSearchCtrl and other composite controls (Catalin Raceanu).
- Allow converting to and from wxGraphicsBitmap and wxImage directly.
- Allow wxGraphicsFont creation without passing by wxFont.
- Added wxDataViewCustomRenderer::ActivateCell().
- Add "checked" property for toolbar tool elements in XRC.
- Allow customization of the locations where persistent settings are stored.
- Restore support for reusing ids more than 254 times (Armel Asselin).
- Added wxIMAGE_OPTION_ORIGINAL_{WIDTH,HEIGHT} (Catalin Raceanu).
- Add wxTopLevelWindow::SetRepresentedFilename() (Andrej Vodopivec).
OSX:
- Implement wxRegion::Equal() (Dr.Acula).
- Implement wxFileType::GetOpenCommand().
- wxGetOsVersion() now returns more sensible version numbers, e.g. 10 and 6
for OS X 10.6.
- Added wxApp::MacOpenFiles and deprecated wxApp::MacOpenFile.
- Implement wxEVT_CHAR_HOOK event generation in wxOSX/Cocoa.
- Implemented wxComboBox::Popup() and Dismiss() in wxOSX/Cocoa (joostn).
GTK:
- Generate events for two auxiliary mouse buttons in wxGTK (Marcin Wojdyr).
- Fix conflict between wxDIALOG_NO_PARENT and wxICON_EXCLAMATION (David Hart).
MSW:
- Added wxGCDC(wxEnhMetaFileDC) ctor (Marcin Wojdyr).
- Added wxTopLevelWindow::MSWGetSystemMenu().
- Multiline text controls no longer select all content when gaining focus from
the keyboard.
- Implement wxStackWalker for x86-64 (Artur Bać).
2.9.2: (released 2011-07-05)
------
All:
- Added cwd and env arguments to wxExecute() (Emilien Kia).
- Added "rest" argument to wxString::Before{First,Last}().
- Added wxThread::OnKill() and OnDelete() callbacks.
- Added wxFile::GetLastError() and ClearLastError() (ryazanov).
- Added negatable command line switches (Armel Asselin).
- Added wxVersionInfo and various GetLibraryVersionInfo() functions (troelsk).
- Added wxNumberFormatter for dealing with thousands separators.
- Added wxIntegerValidator<> and wxFloatingPointValidator<> validators.
- Added wxIMAGE_OPTION_GIF_COMMENT to read and write GIF comments (troelsk).
- Added wxStack<> template class.
- Added precision parameter to wxString::From[C]Double().
- Added wxThread::Wait() and Delete() "wait mode" parameter (Catalin Raceanu).
- Allow showing milliseconds in wxLog time stamps (tan).
- Added support for processing instructions in wxXmlDocument (Nick Matthews).
- Added wxThreadEvent for communicating between threads to wxBase.
Unix:
- Fix spurious errors when writing to child process pipe (ryazanov).
All (GUI):
- Implement support for markup in wxButton and wxStaticText.
- Added wxRichMessageDialog (Rickard Westerlund, GSoC 2010 project).
- Added wxCommandLinkButton (Rickard Westerlund, GSoC 2010 project).
- Added wxUIActionSimulator (Steven Lamerton, GSoC 2010 project).
- Added support for dynamic auto-completion in wxTextEntry.
- Added images support to wxToggleButton (Garrick Meeker).
- wxAUI: support auto-orientable toolbars (wsu).
- wxAUI: add support for icons in pane title bars (triton).
- Added wxPanel::SetBackgroundBitmap().
- Added wxDataViewCtrl::Set/GetCurrentItem().
- Added possibility to disable individual wxDataViewCtrl items (Neno Ganchev).
- wxHTML: render in RTL order inside RTL window (Richard Bullington-McGuire).
- wxRibbon: added EVT_RIBBONGALLERY_CLICKED event (John Roberts).
- wxRibbon: allow hiding the panels and showing tabs only (snowleopard).
- Add support for child documents to docview framework.
- Add support for CP-866 encoding to wxEncodingConverter (madnut).
- Consistency fixes for keyboard events across all major ports.
- Added EVT_RIBBONBAR_TAB_LEFT_DCLICK event (snowleopard).
- Fix display of right aligned columns in wxGenericListCtrl (jl).
- Restore text drag-and-drop in wxSTC broken by Scintilla 2 update (Jens Lody).
- Add support for id ranges to XRC (David Hart).
- Added wxToolbook XRC handler (Andrea Zanellato).
- Added wxDocManager::FindTemplate() (troelsk).
- Return bool, not void, from wxImage::ConvertAlphaToMask() (troelsk).
- Fixed resizing columns in wxGrid when they were reordered.
- Fixed keyboard navigation when wxGrid columns are reordered.
- Added wxImage::Rotate180() (Jeff Tupper).
- Added support for saving TGA files.
- Added wxArtProvider returning higher quality icons from Tango project.
- wxPropertyGrid: Added "HasAlpha" attribute for wxColourProperty.
- wxPropertyGrid: Disabling a property didn't work properly if a child item
was selected (Sébastien Gallou).
- Added support for saving PNG files with palette (troelsk).
- Added support for saving as GIF and animated GIF (troelsk).
- Fix wxWrapSizer minimal size calculation (Catalin Raceanu).
- Added wxFont::Underlined() and MakeUnderlined() methods.
- Added wxFont::SetSymbolicSize() and related methods.
- Fix SVG files generation in locales using decimal comma (snowleopard).
- Fix setting tooltips for generic wxSpinCtrl (Catalin Raceanu).
- Added support for reading image resolutions from PNG images (scottb).
- wxComboCtrl, wxOwnerDrawnComboBox: better support for themed and custom
panel backgrounds, especially on OS X.
- Add WXK_CONTROL_A..WXK_CONTROL_Z constants (Jan van Dijk).
- Add support for alpha channel in colours in wxSVGFileDC (snowleopard).
- Allow customizing AUI tab colours in wxAuiTabArt (snowleopard).
- Added wxAffineMatrix2D class (Catalin Raceanu).
- Allow showing preview frame non modally (John Roberts).
- Improve appearance of the generic wxHyperlinkCtrl (David Connet).
GTK:
- Improve print/page setup dialog (rafravago).
- Switch to GtkTooltip from deprecated GtkTooltips (Emilien Kia).
- wxTLW generates wxEVT_MAXIMIZE.
- Fix copying clipboard data to primary selection (David Hart).
- Implement wxGraphicsContext::GetSize() (Marcin Wojdyr).
- Implement wxCalendarCtrl::SetDateRange() for the native control.
MSW:
- Native implementation of wxHyperlinkCtrl and wxProgressDialog under modern
Windows versions (Rickard Westerlund, GSoC 2010 project).
- Fix Cygwin 1.7 build (David Gangola).
- Allow using wxDC::DrawText() with multiline texts.
- Fix wxBitmapButton best size determination broken in 2.9.1.
- Center task dialog-based wxProgressDialog on the parent (John Roberts).
- wxAutomationObject::GetInstance() creates objects on demand (Kolya Kosenko).
- Fix EVT_UPDATE_UI generation for items in submenus (wsu).
- Added support for world transformation matrix to wxDC (Catalin Raceanu).
OSX:
- Implement auto-completion support in wxTextEntry.
- Implement switching to default video mode in wxDisplay (soren).
2.9.1:
------
INCOMPATIBLE CHANGES SINCE 2.9.0
- wxStandardPaths doesn't use vendor name by default under MSW and OSX to
remain compatible with 2.8 behaviour but this makes it incompatible with
2.9.0. Please use UseAppInfo(AppInfo_AppName | AppInfo_VendorName) explicitly
to use the vendor name in the paths returned by wxStandardPaths.
- wxDataViewModel::GetAttr() is now const, as it should have been from the very
beginning. You will need to change it to be const in your derived model
class too if you override it.
All:
- Added wxFileSystemWatcher (Bartosz Bekier, Google Summer of Code project).
- Added wxStd{Input,Output}Stream classes (Jonathan Liu).
- Include port number in host header in wxHTTP (Marcin 'Malcom' Malich).
- Added wxTempFile::Flush().
- Added support for wxLongLong and wxULongLong in wxVariant.
- Added wxVector::swap().
- Many wxLog improvements:
* wxLogXXX() functions are now thread-safe.
* Log levels can now be set independently for different log components.
* wxLog::DoLogRecord() has access to the location of the log message
(file, line and function name) and id of the thread which generated it.
* SetThreadActiveTarget() allows to set up thread-specific log targets.
- Fix output buffer overflow in wxBase64Decode() (Eric W. Savage).
- Added bilinear image resizing algorithm to wxImage (bishop).
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
- Added wxImage::ClearAlpha() (Javier Torres).
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
- Added wxMBConv::cMB2WC(wxCharBuffer) and cWC2MB(wxWCharBuffer) overloads.
- Added wxAny class; a modern, backwards-incompatible replacement for
wxVariant.
- wxDateTime timezone functions now dynamic (no caching).
- Added wxHttp::GetCookie and wxHttp::HasCookies (dodge).
- Added support for unique volume names to wxFileName (Neno Ganchev).
- Correct bugs when using wxTextInputStream with wxConvAuto (Leon Buikstra).
- Don't crash when input is empty in wxFileConfig ctor (Lukasz Michalski).
- Correct wxSocket::Peek() to not block (Anders Larsen).
- Added IEC and SI units support to GetHumanReadableSize() (Julien Weinzorn).
- Add convenient wxString::ToStd{String,Wstring}() helpers.
- Added wxTranslations class to allow localization without changing locale.
It provides more flexible languages enumeration API as well.
- Added wxResourceTranslationsLoader for loading translations from Windows
resources.
- Added wxMessageQueue::Clear().
- Added wxConfig::Read(float *) overload (Terry Farnham).
- Always use decimal point (and not the current locale separator) in wxConfig.
- Fix posting of binary data using wxHTTP (Catalin Raceanu).
Unix:
- Return signed return code from wxExecute(wxEXEC_SYNC).
- Allow to use WX_APPNAME_DATA_DIR environment var to override the return value
of wxStandardPaths::GetDataDir().
All (GUI):
- Added support for showing bitmaps in wxButton.
- Added wxInfoBar.
- Added stretchable spaces support to wxToolBar.
- Added support for corner, row and column headers renderers to wxGrid.
- wxWindow::SetAutoLayout() now works for all windows, not just panels.
- Support wxListCtrl columns, items and image lists in XRC (Kinaou Hervé).
- Added support for wxFileCtrl to XRC (Kinaou Hervé).
- Added ownfg, ownbg and ownfont tags to XRC.
- Added wxEditableListBox XRC handler.
- Added multiple selection support to wxDirCtrl (Steve Lamerton).
- wxGrid: add possibility to prevent resizing of individual rows/columns.
- wxGrid: allow changing the horizontal alignment of numeric cells.
- wxHTML: add support for table borders width (Laurent Humbertclaude).
- wxHTML: add limited support for span elements styles (Nigel Paton).
- Added wxMouseEventsManager.
- Building OpenGL library is now enabled by default.
- Fixed wxDataViewCtrl::Set{Foreground,Background}Colour().
- Added wxDataViewRenderer::EnableEllipsize().
- Improve wxTreeCtrl::ScrollTo() in generic version (Raanan Barzel).
- Added wxFont::[Make]{Bold,Italic,Smaller,Larger} and Scale[d]() methods.
- Added wxDC::CopyAttributes() and use it in wxBufferedDC.
- Added wxTextWrapper helper class useful for wrapping lines of text.
- Added EVT_DATAVIEW_CACHE_HINT() event (Trigve).
- Added wxLB_NO_SB style (implemented for MSW only; Dario Senic).
- Added long version field to wxAboutDialogInfo (Jeff Tupper).
- Added wxWindow::CanScroll() behaving like the old HasScrollbar() and made
HasScrollbar() really check for the scrollbar existence.
- Added wxKeyEvent::IsKeyInCategory() (Jeff Tupper).
- Add A0 and A1 paper formats support (Martin Perktold).
- Fixed wxComboCtrl popup size on Mac (scrollbars were always shown).
- Fixed wxComboCtrl focus problem on Mac (first-time popup
dismissed immediately as text control grabbed the focus).
- wxPropertyGrid: added wxPG_EX_MULTIPLE_SELECTION.
- wxPropertyGrid: added functions for editing property labels.
- wxPropertyGrid: many fixes to property validation failure behaviour. Added
new flags: wxPG_VFB_SHOW_MESSAGEBOX and wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR.
- wxPropertyGrid: Added wxPropertyGrid::DedicateKey().
- wxPropertyGrid: wxArrayStringProperty now uses wxEditableListBox.
- wxPropertyGrid: Added "Delimiter" attribute for wxArrayStringProperty.
- wxPropertyGridManager: added wxPG_NO_INTERNAL_BORDER,
wxPG_EX_NO_TOOLBAR_DIVIDER and wxPG_EX_TOOLBAR_SEPARATOR styles for finer
control over borders. Borders around property grid are now native for
consistency.
- Added wxPropertyGridManager::ShowHeader().
- Added wxXmlResource::LoadObjectRecursively().
- Added wxColour::Set/GetRGB() and Set/GetRGBA() methods (Marcel Haß).
- wxRTC: added wxRICHTEXT_HANDLER_USE_CSS flag for HTML handler to use CSS
where possible.
- wxRTC: corrected centring and right-justification spacing.
- wxRTC: fixed style selection reset after editing a style.
- wxRTC: can now edit line spacing in .1 increments from 1 to 2.
- wxRTC: added PaintAboveContent function for drawing on top of text.
- Added wxBORDER_THEME to XRC.
- wxGraphicsContext is now enabled by default if supported by the platform.
- Fix building with using system libpng 1.4 (Volker Grabsch).
- Add wxComboBox::Popup() and Dismiss() methods (Igor Korot).
- Added wxTreeCtrl::SelectChildren() (Nikolay Tiushkov).
- Show pages icons in window list menu in wxAuiNotebook (Ronny Krüger).
- Add "initial selection" parameter to wxGetSingleChoice() (Nikolay Tiushkov).
- Implement wxDocument::Revert() (troelsk).
- Allow overriding print preview frame creation in docview (troelsk).
- Added support for gradient stops in wxGraphicsContext (Kit Bishop).
- Added wxTransparentColour.
- Added wxToolBar::GetToolByPos().
- Added wxProgressDialog::Was{Cancelled,Skipped}() (Julien Weinzorn).
- Added wxTreeCtrl::{Clear,Set}FocusedItem() (Nikolay Tiushkov).
- Added "filter changed" event to wxFileCtrl (Bill Jones).
- wxAUI: update floating window position and not only size on resize (MacGyver).
- Added wxComboCtrl::SetTextCtrlStyle().
- Also update client data in wxRearrangeList control (John Roberts).
- Generate more click events in wxGrid when using native header (John Roberts).
GTK:
- wxRadioBox constructor uses default consistent with other ports now.
- Implement wxMask copy ctor.
- Partially implemented wxTextCtrl::GetStyle() (Igor Romanov).
- Corrected themed border display.
- Fix wxClipboard::GetData() for asymmetric wxDataObjects (Timothy Lee).
Mac:
- Implement wxWindow::ShowWithEffect() in wxOSX/Cocoa.
- Correct min/max pages display in the print dialog (Auria).
- Fix wxDataViewColumn::GetWidth() in Cocoa (Neno Ganchev).
MSW:
- Translate wxMessageDialog labels to the language of the current locale.
- Allow changing the height of wxChoice and wxComboBox.
- Update CRT environment block in wxSetEnv() too.
- Fix wxMDIChildFrame::SetSize() (Lars Rosenboom).
- Fix wxTreeCtrl::UnselectItem() in single selection controls.
- Allow customizing wxStandardPaths logic for program directory determination.
- Use time in wxDateTime <-> SYSTEMTIME conversion (troelsk).
- Setting colours for wxSpinCtrl now works.
- Worked around child window and caret positioning bug (in Windows) when using
wxBORDER_THEME in a container window.
- Suppressed spurious character event for decimal key in numeric keypad.
- Allow to not create wxPaintDC in EVT_PAINT handler.
- Fix sending of wxEVT_COMMAND_LIST_COL_DRAGGING events in wxListCtrl.
- Allow putting the UAC symbol on buttons (Chris Spencer).
- Fix wxTaskBarIcon for older Windows systems (Daniel Wyatt).
- Fixed wxOwnerDrawnComboBox keyboard handling: drop-down is no longer
displayed when arrow key is pressed (without Alt).
- In some rare cases wxOwnerDrawnComboBox drop-down animation could display
as garbage. This has now been greatly reduced (mcben).
- Fixed wxComboCtrl::SetButtonPosition() on Vista/Win7.
- Allow accessing 64/32 bit registry from 32/64 bit code (Rickard Westerlund).
i18n:
- Korean translations added (Sungkee Jung).
- Romanian translations added (Manuel Ciosici).
2.9.0
-----
All:
- Added (experimental) IPv6 support to wxSocket (Arcen).
- Cleaned up wxURI and made it Unicode-friendly.
- Add support for wxExecute(wxEXEC_ASYNC) in wxBase (Lukasz Michalski).
- Added wxXLocale class and xlocale-like functions using it.
- Added wxMessageQueue class for inter-thread communications
- Use UTF-8 for Unicode data in wxIPC classes (Anders Larsen)
- Added support for user-defined types to wxConfig (Marcin Wojdyr).
- Added numeric options support to wxCmdLineParser (crjjrc)
- Added wxJoin() and wxSplit() functions (Francesco Montorsi).
- Added wxDateTime::FormatISOCombined() and ParseISODate/Time/Combined()
- Added wxMutex::LockTimeout() (Aleksandr Napylov).
- Added wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev).
- Implemented wxMemoryInputStream::CanRead().
- Implemented wxMemoryFSHandler::FindFirst/Next().
- Added wxEventLoop::DispatchTimeout().
- Added wxZlibStream::SetDictionary() (Axel Gembe).
- 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).
- Added functions for Base64 en/decoding (Charles Reimers).
- Added support for binary data to wxConfig (Charles Reimers).
- Added functions for atomically inc/decrementing integers (Armel Asselin).
- wxLogInterposer has been added to replace wxLogPassThrough and new
wxLogInterposerTemp was added.
- Added support for broadcasting to UDP sockets (Andrew Vincent).
- Documentation now includes the wx library in which each class is defined.
- wxrc --gettext now generates references to source .xrc files (Heikki
Linnakangas).
- wxVariant::Unshare allows exclusive allocation of data that must be shared,
if the wxVariantData::Clone function is implemented.
- Added wxWeakRef<T>, wxScopedPtr<T>, wxScopedArray<T>, wxSharedPtr<T> templates
and renamed old wx/ptr_{scpd,shrd}.h headers to wx/scoped{ptr,array}.h and
wx/sharedptr.h (but old headers are still provided for compatibility).
- Added wxVector<T> class templates
- Added wxON_BLOCK_EXIT_SET() and wxON_BLOCK_EXIT_NULL() to wx/scopeguard.h.