so that objects can stream themselves; added a wxXmlDocument-based method
of writing XML, though this turned out to be much slower than writing directly
so the direct approach is retained and is the default (can be changed with wxRICHTEXT_USE_XMLDOCUMENT_OUTPUT).
Loading and saving new attributes implemented. Added custom properties to objects.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
If the in-place text control was still alive when wxGenericListCtrl was
destroyed, it resulted in asserts from wxWindow dtor about child windows still
being alive, so explicitly destroy it from wxListMainWindow dtor.
As this required a slightly different behaviour from wxListTextCtrlWrapper::
EndEdit(), replace its bool argument with an enum one which can take more than
2 values. Not using bool values when calling it also made the code more clear.
Finally, added a unit test verifying that the in-place control is indeed
destroyed correctly.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65769 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This test crashes for unknown reasons on wxGTK ANSI build slave and prevents
the rest of the test suite from running, so disable it for now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This helps improve the extremely poor performance of XML saving if
you have, for example, hex data that does not need conversion.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Don't throw when already handling an exception as it would result in a call to
terminate() and no useful information about the test failure would be given.
Abort ourselves instead to at least give the message about the assert failure.
This should help debug the mysterious ListCtrlTestCase failures in buildbot
wxGTK builds.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxStopWatch::Time() returns a long value so use %ld, not %d.
This fixes assert failure when using "-t" option with the test suite under 64
bit Unix architectures.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Unit test suite didn't compile in wxX11 build because it doesn't support
tooltips, just disable the relevant test then.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Apple gcc refuses to compile comparisons between wchar_t and int for some
reason, so add explicit casts to int to make it work there.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65754 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Using the current insertion position in wxGridCellTextEditor::StartingKey()
didn't make much sense, it was always 0 -- so DELETE worked as expected and
did delete the first character of the cell but BACKSPACE never did anything.
Just always delete the first character when DELETE is used and always delete
the last one when BACKSPACE is.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65749 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Use wxKeyEvent::GetUnicodeKey() correctly, there is no need to guess about
what does it return now that its correct behaviour is documented and
implemented. Simply check if it returns WXK_NONE to check for non-characters.
Also use WXK_START instead of hard-coded 255 when checking GetKeyCode()
result.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
__thread keyword doesn't work correctly with at least some MinGW builds and in
particular TLS unit tests failed with the official 4.4 version.
Disable the use of __thread with MinGW entirely for now to be sure that the
generated code behaves correctly. In the future we should white list the known
good versions of MinGW and/or use run-time test for __thread support in
configure instead of compile-time one only.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65747 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
MinGW uses the same CRT as MSVC so we can use the same _putenv() call for it
too. This ensures that wxGetenv() returns the value updated by wxSetEnv() and
fixes CrtTestCase::SetGetEnv() unit test when using MinGW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65746 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Move USING_VC_CRT into testprec.h to allow its reuse in other files and rename
it to wxUSING_VC_CRT_IO as it only checks whether we're using MSVC STDIO
implementation and could be false even when we are otherwise using MSVC CRT.
Use this symbol for the tests whose result depends on the concrete version of
the CRT we use.
This fixes StringTestCase::FromDouble() failure under MinGW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65745 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
"C:" drive doesn't need to exist under Windows, rely on HOMEDRIVE environment
variable defined in all recent Windows versions to get a valid drive letter
(still fall back to "C:" if the variable is not defined -- we could have use
wxFSVolume to find it then but this seems like an overkill).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65744 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This test fails for MinGW, probably because its CRT doesn't use the same
locale names as MSVC CRT. Just disable it for now, as it was already disabled
for non-MSW platforms.
Also use LocaleSetter class (extracted from CLocaleSetter) to change the
locale for this test duration only to avoid affecting any tests running after
it.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65743 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Remove unnecessary casts and initialize the variable with its contents
directly instead of using strange looking wxWCharBuffer ctor from size_t (even
if it did work, it was unnecessary).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65741 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The value of the last error seems to change somewhere between our code and
::GetLastError() call, probably in MinGW CRT, so exclude the tests relying on
it being preserved.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65740 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
We didn't handle the case when the length of the input buffer was not
specified correctly and wxConvAuto::DetectBOM() could read beyond the end of
input. Moreover, the unit test actually relied on this as it didn't pass the
correct length for the literal strings with embedded NULs. This somehow worked
with MSVC but failed with MinGW (see #10713).
Correct the code to handle wxNO_LEN case correctly and fix the unit test to
pass the correct lengths.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
MinGW now uses its own printf() implementation which handles %p differently
from the VC CRT one and uses %8x instead of %8X for it. Compare the results of
wxPrintf("%p") case-insensitively to let the test pass in any case.
Also introduce a USING_VC_CRT macro instead of testing for
__USE_MINGW_ANSI_STDIO in two different places.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65738 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The entire VsnprintfTestCase is only used when using our own
wxUSE_WXVSNPRINTF so remove the redundant tests for it inside the enclosing #if.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65737 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This allows to create wxFileTypeInfo objects in a more readable even if more
verbose way.
This should also incidentally fix the unit tests compilation with VC6 which
seems to have some existential troubles with the vararg ctor in debug DLL
build (only). Using the non-vararg ctor should hopefully make it happy and let
the unit tests pass with this compiler.
Also document wxFileTypeInfo class which wasn't documented at all.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Not all ports define wxBitmapToggleButton class currently, so add a special
symbol which is defined only if this class is indeed available and test for it
in the unit test for this class.
This fixes the tests compilation under wxX11.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This test just doesn't want to work on MSW buildbot slaves even though it
works perfectly locally. No idea why but disable it when running on a build
bot slave for now to let the entire test suite pass.
Also add a comment explaining why the test is disabled for wxGTK.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65705 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This test fails on MSW buildbot slaves for unknown reasons so disable it to
make the test suite pass. The failure is irreproducible locally so no idea how
to debug this unfortunately.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65694 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
ConvertStringToBuf() helper function was defined incorrectly for converting
wxString to a char* buffer as it didn't fill the buffer at all if the string
didn't fit into it entirely instead of putting as much of the string into it
as possible as was already done for the conversion to wchar_t* buffer. This
broke wxSprintf()-related functions in when the ASCII output buffer was not
big enough as it was not filled at all.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The strings corresponding to %hs and %ls are always narrow/wide independently
of the build so using wxArgNormalizedString which is defined differently in
different builds doesn't make sense in wxPrintf().
Instead, simply expect the parameter of the appropriate matching type for
these conversion specifications. Any conversions to it, if necessary, had been
already done before by wxFormatString.
This fixes some VsnprintfTestCase::BigToSmallBuffer() unit test failures.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Count the number of asterisks before modifying the string we use to do this,
otherwise we were off by one for the format specifications containing two of
them.
This really fixes the handling of asterisks (used for width/precision) in
wxPrintf() format string, it wasn't done correctly by r60120 but now
VsnprintfTestCase::Asterisk() test does pass.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65689 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The call to wxPrintf() should provoke an assert if there are too many
parameters, so update the test to expect it.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Somehow the expected assert is not generated by wxString::Format("%d", ptr)
with VC6. Disable this test to make the test suite pass for VC6 for now to at
least be able to monitor the appearance of the new errors in it.
Of course, this one should ideally be debugged (by someone who is interested
in VC6 support) as well...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
For some reason the test fails with a single item in the control when running
on the buildbot slave, check if this is still the case if we add another item
to the control.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65686 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
We can't clear a NULL buffer, the code didn't make any sense any more because
it wasn't updated when the function was changed as part of UTF-8 transition.
Closes#12529.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65685 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775