Commit Graph

63288 Commits

Author SHA1 Message Date
Vadim Zeitlin
e35aff4684 Checkout submodules in Appveyor builds
Unlike Travis CI, Appveyor doesn't do this automatically, but we will
need them soon (the currently existing Catch submodule is not used by
Appveyor builds but, arguably, should be too).
2017-11-10 17:44:03 +01:00
Vadim Zeitlin
fc8b7e4e61 Build bundled 3rd party libraries on Travis
Configure Travis CI to run at least one build using the bundled versions
of third party libraries to make sure this is tested too.
2017-11-10 17:43:01 +01:00
Vadim Zeitlin
99be9a25f2 Compile expat even without entropy source when using configure
There is no other choice but to continue without a high quality entropy
source if it's just not available on the current system as determined by
configure.

This problem was fixed in Expat fd9581a34e5665958939e3db408893fd4fac7398
which is not yet included in our version, and the (hopefully soon to be
implemented) real solution is to just upgrade Expat version, but for now
at least allow building without any extra hacks such as putting
XML_POOR_ENTROPY in CPPFLAGS.
2017-11-10 17:39:38 +01:00
Vadim Zeitlin
66c644fe20 Merge branch 'text-stream-nuls'
Fixes for wxTextInputStream and wxMBConvUTF{7,16} classes bug fixes.
2017-11-10 03:14:01 +01:00
Kevin Ollivier
0ad45d3e0e Fix generic wxTimePickerCtrl to accept max values from keyboard
Allow entering times such as 23:59:59 which were previously mistakenly
flagged as invalid due to off by one error in the comparison in the
validation function.
2017-11-10 00:02:49 +01:00
Vadim Zeitlin
4502e7563b Fix wxTextInputStream for input starting with BOM-like bytes
Contrary to what a comment in wxTextInputStream::GetChar() said, it is
actually possible to get more than one wide character from a call to
wxMBConv::ToWChar(len+1) even if a previous call to ToWChar(len) failed
to decode anything at all. This happens with wxConvAuto because it keeps
returning an error while it doesn't have enough data to determine if the
input contains a BOM or not, but then returns all the characters
examined so far at once if it turns out that there was no BOM, after
all.

The simplest case in which this created problems was just input starting
with a NUL byte as it as this could be a start of UTF-32BE BOM.

The fix consists in keeping all the bytes read but not yet decoded in
the m_lastBytes buffer and retrying to decode them during the next
GetChar() call. This implies keeping track of how much valid data is
there in m_lastBytes exactly, as we can't discard the already decoded
data immediately, but need to keep it in the buffer too, in order to
allow implementing UngetLast(). Incidentally, UngetLast() was totally
broken for UTF-16/32 input (containing NUL bytes in the middle of the
characters) before and this change fixes this as a side effect.

Also add test cases for previously failing inputs.
2017-11-09 23:49:59 +01:00
Vadim Zeitlin
46ea3cb8c0 Refactor: merge decode_utf16() into wxDecodeSurrogate()
No real changes, but just get rid of two functions doing the same thing
but using (semantically) different API, this was just too confusing.

Change all the code to use wxDecodeSurrogate() that encapsulates
decoding the surrogate and advancing the input pointer as needed and so
is less error-prone.

More generally, change the code to use end pointers instead of
decrementing the length to check for the end condition: this is more
clear, simpler and probably even more efficient.
2017-11-09 23:49:53 +01:00
Vadim Zeitlin
d82e3d4429 Never read uninitialized memory when decoding UTF-16 again
Pass length value to decode_utf16() and end pointer to
wxDecodeSurrogate() to ensure that we never read beyond the end of the
buffer when decoding UTF-16 when the last (complete) 16 bit value in the
buffer is the first half of a surrogate.

This had been previously partially addressed by ad hoc changes, e.g.
f72aa7b1c9 did it for wxMBConvUTF16swap,
but the problem still remained for wxMBConvUTF16straight. Ensure that
this bug is fixed everywhere now but making it impossible to even try
decoding a surrogate without providing the buffer length.
2017-11-09 23:48:20 +01:00
Vadim Zeitlin
2ee199acac Change decode_utf16() to take wxChar16 instead of wxUint16
Under Unix systems, this is the same thing, but under MSW, where
sizeof(wchar_t) == 2, this allows to pass wchar_t pointers to this
function without casts.

It also makes it consistent with wxDecodeSurrogate() and allows to get
rid of another ugly cast there.

No real changes.
2017-11-09 23:47:22 +01:00
Vadim Zeitlin
9d5ff447e1 Add subsections to MBConvTestCase::NonBMPCharTests()
This allows to immediately see which of the tests failed just looking at
the logs instead of having to check the failure line number manually.

No real changes.
2017-11-09 23:38:03 +01:00
Vadim Zeitlin
666ff421bb Fix an out of bounds read in UTF-7 decoding code
Calling wxMBConvUTF7::ToWChar(..., "+", 1) resulted in reading
uninitialized memory as the decoding code didn't check that there were
any bytes left when switching to the "shifted" mode.

Fix this by explicitly checking for this and returning an error if
nothing is left.
2017-11-09 23:38:00 +01:00
PB
022a725bf9 Fix few minor issues in wxAutomationObject documentation
Remove redundant consts, document GetDispatchPtr() return type.
2017-11-09 22:18:57 +01:00
Stefan Csomor
fac481f6ea Removing whitespace which lead to incorrect processing by update-setup-h on macOS 2017-11-09 11:43:05 +01:00
Stefan Csomor
895a86886d Modelling setup.h modification on osx along msw, having a separate file
Note that for update-setup-h to work properly on osx, gnu-sed is needed
2017-11-09 11:35:36 +01:00
Vadim Zeitlin
f365b0712b Get rid of wxTextInputStream code dealing with wxEOT
Having NextChar() returning wxEOT only for GetChar() to turn it back to
NUL didn't make any sense, just return NUL directly and get rid of
GetChar/NextChar() distinction.

No real changes, just simplify the code.
2017-11-08 23:27:13 +01:00
Vadim Zeitlin
46fe849db6 Restore access to wxLogStderr::m_fp from derived classes
This was allowed before, but m_fp became private after the refactoring
of a7dddd9f3b.

Make it protected again now to avoid breaking existing code that
accesses it.
2017-11-07 22:40:32 +01:00
VZ
d3db5b30f6
Fix or disable currently failing wxGTK GUI tests
Try to ensure that the GUI test suite passes so that buildbot has a
chance to warn us if/when anything breaks.
2017-11-07 20:56:09 +01:00
Vadim Zeitlin
b130595975 Remove accidental global variable from the font sample
This variable was never used and appears to have been created
accidentally, so just remove it and avoid variable shadowing warnings
from MSVS 2015 when building the sample.
2017-11-07 18:28:54 +01:00
Vadim Zeitlin
83b02930f4 Remove cppunit.m4 inclusion from aclocal.m4
This should have been done in e70fc11ef1
when CppUnit was replaced with Catch.
2017-11-07 18:27:44 +01:00
Vadim Zeitlin
c212941ad5 Merge branch 'qt-fixes'
See https://github.com/wxWidgets/wxWidgets/pull/589

Closes https://github.com/wxWidgets/wxWidgets/pull/319
2017-11-07 16:42:12 +01:00
Vadim Zeitlin
7ba933c694 Disable wxPaintEvent propagation tests for wxGTK3
They're currently broken and just always fail, it's useless to continue
running them until the issue described in the comment in this commit is
fixed.
2017-11-07 16:37:25 +01:00
Vadim Zeitlin
80a11ae17f Use wxGtkObject instead of g_object_unref() calls in Cairo code
Make the code safer and shorter.

No real changes.
2017-11-07 16:32:36 +01:00
Vadim Zeitlin
3b76e590d4 Return descent from Cairo GetTextExtent() even for empty strings
This method still needs to return the correct descent in this case.

Fixes MeasuringTextTestCase::LeadingAndDescent() unit test failure with
GTK+ 3.
2017-11-07 16:26:12 +01:00
Vadim Zeitlin
643071fc77 Add more new lines around GTK errors in the test suite
Try to make things a bit more readable.
2017-11-07 16:21:38 +01:00
Vadim Zeitlin
c13e28ebfb Disable wxTopLevelWindow::IsActive() unit test for wxGTK
It just doesn't work in the test, so live without it for now.

Also use CHECK() instead of CPPUNIT_ASSERT(), which expands into
REQUIRE(), for independent tests to let later tests to still be done
even if an earlier one fails.
2017-11-07 16:16:08 +01:00
Vadim Zeitlin
548d7a0518 Disable keyboard event unit tests for wxGTK
They suffer from the same problem as all the other tests using
wxUIActionSimulator: it is flaky with GTK+ 2 and doesn't work at all
with GTK+ 3.
2017-11-07 16:10:19 +01:00
Vadim Zeitlin
f0a32f0e1f Wait for the focus event to occur in the unit test
The test failed unless we dispatched events with wxGTK (both 2 and 3).
2017-11-07 15:44:18 +01:00
Vadim Zeitlin
66324470f1 Fix wxTextCtrl::GetStyle() with GTK+ 3
The text and background colours are now stored in the rgba array instead
of fg_color and bg_color as with GTK+ 2 (the latter ones seem to have
been repurposed for the underline and strike-through colours!).

Also make the unit test for this method more robust.
2017-11-07 15:40:29 +01:00
Vadim Zeitlin
5fb740fed8 Add a layout hack to PositionToCoords() unit test for wxGTK
The text control needs a few event loop iterations in order to layout
itself correctly, so give it up to 1 second to do it in order to avoid
spurious test failures that occurred if just a single call to wxYield()
were done (or, worse, none at all as it was the case before).

Also log the value returned by PositionToCoords() in case of test
failures.
2017-11-07 15:03:59 +01:00
Vadim Zeitlin
407d38d9ed Always use wxTE_MULTILINE explicitly in PositionToCoords() test
While it is added implicitly when running all tests in the order, this
style wasn't used if just this test was ran using "-c PositionToCoords"
option.

Specify wxTE_MULTILINE in it explicitly to allow this to work too.
2017-11-07 14:23:07 +01:00
Vadim Zeitlin
faad429b0f Fix wxTextCtrl::XYToPosition() for last position in wxGTK
Change this method to consider the coordinates corresponding to the last
position (i.e. the one beyond the last text character) as valid, for
consistency with wxMSW and to conform to the documented behaviour.

Also give more information about the failures in the corresponding unit
test to make debugging problems with this function simpler.
2017-11-07 14:12:48 +01:00
Vadim Zeitlin
af9f78852a Fix archivers test suite broken by transition to Catch
The code of ziptest and tartest classes still compiled, but actually
didn't do anything during the run-time because makeSuite() method was
never called.

Replace this unused method with DoRunTest() and override runTest() in
the test suite classes to actually run the tests.
2017-11-07 13:50:47 +01:00
Vadim Zeitlin
5195e788d4 Fix unsigned integer overflow in ZIP reading code
Blindly adding 4 to an unsigned length field could result in 0 and this
led to an infinite loop while iterating over all header fields.

Avoid this by promoting the length to int first, before adding 4 to it.

Credit to OSS-Fuzz: this solves its issue 4083.
2017-11-07 13:24:29 +01:00
Martin Srebotnjak
8fe3745b14 Complete Slovenian translations
All messages are translated now.
2017-11-07 13:03:37 +01:00
Vadim Zeitlin
6d55a533a3 Add overview of wxTextCtrl positions and coordinates
Explain the various coordinates that can be used and which positions are
considered valid and which are not.
2017-11-07 03:46:50 +01:00
Vadim Zeitlin
1c4e8377b7 Fix XYToPosition() for the last position in first line in wxGTK
This is similar to e74fb5effe for wxMSW
and ensures that we don't consider the last position on the first line
invalid in wxGTK neither.

This fixes TextCtrlTestCase::XYToPositionSingleLine() unit test failure.
2017-11-07 03:46:26 +01:00
Vadim Zeitlin
72fe57ec18 Use wxTextEntry::Clear() in wxOwnerDrawnComboBox::Clear()
This seems more natural than calling SetValue(wxEmptyString).

No real changes.
2017-11-07 03:14:49 +01:00
Vadim Zeitlin
13163fb315 Send event when clearing wxTextCtrl in wxGTK again
This was broken by 1c946a469a and resulted
in test failures in OwnerDrawnComboBoxTestCase::TextChangeEvents() unit
test because wxOwnerDrawnComboBox::Clear() used SetValue("") and didn't
generate any events any more.

Fix this regression by explicitly sending an event if we're returning
early and add a unit test explicitly checking that SetValue("") does
generate an event.
2017-11-07 03:12:10 +01:00
Vadim Zeitlin
3069167dd4 Do set the current test name when running the tests
The variables and helper TempStringAssign class were added in order to
implement this, but somehow it was never done, so wxGetCurrentTestName()
always returned an empty string.

Fix this and so store the class/method name of the currently running
test in the global variables to give more context, notably for GTK+
errors.
2017-11-07 02:54:25 +01:00
Vadim Zeitlin
79d35109f0 Avoid assert if there is no selection in wxListCtrl::DeleteItem()
Don't try making the current item visible if there is no current item.

This is another fix after 99d7b13e3f (in
addition to the previous 925a1c0734).
2017-11-07 02:54:24 +01:00
Vadim Zeitlin
cacb49c4ad Remove "test" from the sections names in Catch unit tests
It doesn't really add anything and it's more convenient to specify the
section on the command line (using the "-c" option) if it's just a
single word, without spaces, as it doesn't need to be quoted then.
2017-11-07 02:54:18 +01:00
Vadim Zeitlin
e8ceaabb87 Avoid gcc -Wunused-function warnings in wxEvtHandler unit test
The warnings are justified as the functions defined by the event table
macros are indeed not used here because we only write them to test that
they compile, but not useful, so suppress them.
2017-11-07 02:54:05 +01:00
Vadim Zeitlin
2b02da2bbd Revert "fix build without graphics context"
This reverts commit 44c91fedb8 which is
not necessary for wxQt any more as wxGraphicsContext is available for it
now and didn't make much sense because wxActivityIndicator just can't be
used without wxGraphicsContext, so a proper fix would be to disable the
former completely if the latter is unavailable.
2017-11-06 02:16:07 +01:00
R.J.V. Bertin
3da6b9c14f Make wxQt build again, with less compiler warnings
This fixes a missing include in qt/nonownedwnd.cpp and a missing method
in qt/glcanvas.cpp, allowing the build to complete again. A number of
missing wxOVERRIDE statements were added to reduce the important number of
compiler warnings about those missing labels.
2017-11-06 02:06:02 +01:00
Sean D'Epagnier
1c249a6934 additional code style improvements from github comments 2017-11-06 02:06:02 +01:00
Sean D'Epagnier
7338f32dfd declare member override to ensure virtual overload 2017-11-06 02:05:40 +01:00
Sean D'Epagnier
169d61edb7 wxqt: correct formatting and casting, no functional change 2017-11-06 02:05:40 +01:00
Sean D'Epagnier
42144b93b7 improve wxqt color implementation thanks @catalinr 2017-11-06 02:05:40 +01:00
Sean D'Epagnier
bf9eacad16 correct ppi implementation in wxqtdc 2017-11-06 02:05:40 +01:00
Sean D'Epagnier
2a2e17c050 correct small errors in wxqt implementation 2017-11-06 02:05:40 +01:00