Commit Graph

61681 Commits

Author SHA1 Message Date
Vadim Zeitlin
152b9fc0eb Fix sending of wxEVT_UPDATE_UI events when wxUSE_STATUSBAR==0
wxFrameBase code unintentionally excluded the function generating
wxUpdateUIEvents for the menus from compilation when wxUSE_STATUSBAR was
turned off.

Move OnMenuOpen() out of #if wxUSE_STATUSBAR section to ensure that it's
compiled whenever wxUSE_MENUS==1.

Closes #17553.
2016-06-04 21:59:36 +02:00
Vadim Zeitlin
d68eb10e3d Handle strings with embedded NULs in wxDataStream
Read/write the entire string and not just the part until the first NUL in it.

Closes #17556.
2016-06-04 21:47:12 +02:00
richard67
889cbd8e04 Fix wxTranslations::GetHeaderValue() to look for correct header
Correct the search to completely match the full header name and not only
its beginning by appending ": " to the specified search string.

This prevents GetHeaderValue("Language") from returning "eam: wxWidgets team"
if there is a "Language-Team" header in the catalog, for example.

Closes #17555.
2016-06-04 19:55:19 +02:00
Vadim Zeitlin
690ca5a1b4 Merge branch 'scintilla366' of https://github.com/pkulchenko/wxWidgets
Update bundled Scintilla version to 3.6.6.
2016-06-04 19:47:49 +02:00
Vadim Zeitlin
3536e37092 Merge branch 'secret-store'
Add support for storing passwords using the OS-provided facilities.

Closes https://github.com/wxWidgets/wxWidgets/pull/290
2016-06-04 19:33:59 +02:00
Vadim Zeitlin
b8a7a9809b Add a note about wxSecretValue size limit under MSW
Mention that passwords are limited to 2560 bytes under Windows 7.
2016-06-04 19:21:16 +02:00
Vadim Zeitlin
4154fbb8a3 Add conversions between wxSecretValue and wxString
This is less secure, but more convenient, than using raw pointers and in most
cases the password will already be stored in a wxString anyhow.
2016-06-04 19:19:15 +02:00
Vadim Zeitlin
1de80a72d9 Refactor wxSecretValue creation
No real changes, just add a new platform-specific NewImpl() method instead of
making wxSecretValue ctor itself platform-specific.

This makes adding other ctors for this class simpler.
2016-06-04 18:46:23 +02:00
Vadim Zeitlin
675d9d779d Add wxSecretStore
Add a new class allowing to store passwords and other sensitive information
using the OS-provided facilities.

Add implementations for all the main platforms, documentation and a new sample
(which contains an ad hoc unit test as the real unit test for this class would
probably be a bad idea as it wouldn't run in non-interactive contexts and
could show OS level dialog boxes if it did).
2016-06-04 18:29:15 +02:00
Artur Wieczorek
1f49c4bf40 Fixed adding arc to wxGraphicsPath with GDI+ renderer.
To handle properly all combinations of the start and end angles and to ensure consistency with Cairo renderer behaviour there is necessary:
1. To normalize angle values the same way as it is done in Cairo.
and
2. When end angle equals start angle then actually no arc should be added but current point of the path has to be updated.
3. When difference between end angle and start angle >= 2*pi then in addition to the arc itself also one or more full circles have to be added to the path.

Closes #17558
2016-06-04 11:13:13 +02:00
Artur Wieczorek
9f9d593019 Fixed adding arc to wxGraphicsPath with Direct2D renderer.
To handle properly all combinations of the start and end angles and to ensure consistency with Cairo renderer behaviour there is necessary
1. To normalize angle values the same way as it is done in Cairo.
and
2. When difference between end angle and start angle >= 2*pi then in addition to the arc itself also one or more full circles have to be added to the path.

See #17558
See #17557
2016-06-04 11:12:55 +02:00
Paul Kulchenko
4ad886ca86 Update build files to add new lexer in Scintilla 3.6.6 (LexJSON). 2016-06-02 21:45:09 -07:00
Dimitri Schoolwerth
90b9bcbcf3 Remove docs mentioning which MSVC projects include x64 configurations
Since 202f62b4c4 x64 configurations exist
for MSVC 8 and 9 projects. Because MSVC 7 is the minimal supported
version, and doesn't support 64-bit builds, remove the section in
install.txt about x64 configurations being available only in MSVC 10
project files and later.
2016-06-03 03:10:28 +02:00
Dimitri Schoolwerth
d3ca0c777b Mention MSVC 14 solution file in install.txt 2016-06-03 02:47:32 +02:00
Paul Kulchenko
8919528996 Updated makefiles to add NO_CXX11_REGEX to compile Scintilla 3.6.6+ where C++11 not fully supported. 2016-06-02 14:36:54 -07:00
Artur Wieczorek
9de3f8395c Updated wxPGEditor interface documentation
Editor controls are no longer bound to the fixed ID's wxPG_SUBID1 and wxPG_SUBID2.
2016-06-01 18:52:06 +02:00
Paul Kulchenko
36c5b5f9ca Updated Scintilla to add GetTargetTextRaw (closes #17426). 2016-05-31 23:06:51 -07:00
Paul Kulchenko
c03ce59b86 Upgrade Scintilla component to 3.6.6. 2016-05-31 22:19:10 -07:00
Artur Wieczorek
d81fb0be63 Use native methods to draw some geometric figures using GDI+ renderer
Use native methods provided by GDI+ renderer to draw circles and ellipses.

Closes #17554
2016-05-31 21:31:16 +02:00
Artur Wieczorek
a5d4a99bb0 Use native methods to draw some geometric figures using Cairo renderer
There are straightforward ways to draw rectangles, circles and ellipses using native methods provided by Cairo renderer and they should be used instead of generic implementations.

See #17554
2016-05-31 21:31:15 +02:00
Artur Wieczorek
b58d58adc0 Implemented new drawing benchmarks.
Since for some renderers circles and/or ellipses are basic figures so it would be worth to test the performance of drawing them.
Respective tests are enabled with new command line options: "--circles" or "--ellipses".
2016-05-31 21:31:15 +02:00
Artur Wieczorek
573cb961cb Added option to select graphics renderer in the graphics benchmark application
Since there are several graphics renderers available under wxMSW it would be good to have ability to test graphics performance of any of them and not only the performance of default one.
Therefore new feature to run the tests with selected graphics renderer has been implemented in the benchmark application. Renderer can be selected with optional command line option: "/r renderer_name", when `renderer_name` can be either gdiplus, direct2d, cairo.
When no renderer is explicitly selected then default renderer is used.
2016-05-31 21:30:54 +02:00
Vadim Zeitlin
21d90d48ba Fix another typo in a comment in the drawing sample
This went unnoticed in 5e500de7e8.
2016-05-31 18:58:38 +02:00
Vadim Zeitlin
c72c72fb5f Merge fixes for MinGW 4.8
Fix compilation problems in ANSI build and when using an old SDK.

Closes https://github.com/wxWidgets/wxWidgets/pull/289
2016-05-30 19:30:36 +02:00
Vadim Zeitlin
6d54c49b2a Fix build with classic MinGW in strict ANSI mode when using PCH
The hack used in cc774bb301 to include some
standard headers after undefining __STRICT_ANSI__ doesn't work when
precompiled headers are used because the headers had been already included
from wx/wxprec.h then.

So instead bite the bullet and just reproduce MinGW stdlib.h declarations to
define "environ" ourselves, it's not that bad and hopefully won't need much
maintenance as later versions won't need the strict ANSI workarounds at all.
As for tzset(), wxDECL_FOR_STRICT_MINGW32() can be used for it without any
problems at all, not sure why hasn't it been done like this since the
beginning.

See #16984.
2016-05-30 19:30:14 +02:00
Vadim Zeitlin
78bfde8ac0 Fix link errors with older MinGW due to use of GetLayout()
This function is not present in older MinGW import libraries, up to at least
MinGW 4.8.1, so we can't use it directly as it was done in
22f0801378 and we need to load it dynamically.

This was already done in wxDC code, so just reuse the same wrapper function
after extracting it (and a few others, for consistency) into a new header.
2016-05-30 19:30:07 +02:00
Václav Slavík
5d2b2b3d7a Don’t assert on weird custom number formatting settings
On OS X at least, the user is free to customize numbers formatting rules
and use more than one character for separators. Don’t assert in such
cases (the rules are untrusted input), but instead fall back to
something reasonable, as is already done if we can’t retrieve the rules.
2016-05-30 18:20:59 +02:00
Artur Wieczorek
60ae112694 Fixed adding lines connected with arc (AddArcToPoint) to wxGraphicsPath
Reworked calculations of the center of the arc and start/end angles of the arc to get correct results for any spatial orientation of starting and ending lines.

Closes #17552
2016-05-29 17:41:16 +02:00
Artur Wieczorek
eb2fc93a9b Fixed adding arc to wxGraphicsPath with Direct2D renderer
Modified calculations of sweep angle to get its correct value for all combinations of start/end angle values and clockwise/counter-clockwise drawing.

See #17552
2016-05-29 17:39:03 +02:00
Artur Wieczorek
5e500de7e8 Fixed minor typos in the drawing sample 2016-05-26 17:57:11 +02:00
Artur Wieczorek
7923cb222e Fixed cloning wxD2DPathData.
In addition to copying the underlying geometry sink itself also auxiliary data, like collection of transformed geometries and positional data have to copied the the new wxD2DPathData instance.
2016-05-26 17:55:34 +02:00
Artur Wieczorek
2b13dc7473 Modified wxGraphicsPath concatenation (with AddPath) for Direct2D renderer.
Because wxGraphicsPath comprises current ID2D1PathGeometry object and the collection of transformed (sub-)geometries (ID2D1TransformedGeometry objects) so to concatenate two paths we need to concatenate their current geometries as well as to combine the collections of transformed geometries.
2016-05-26 17:54:45 +02:00
Artur Wieczorek
fa01392788 Fixed transformation of wxGraphicsPath for Direct2D renderer.
Unfortunately, it seems that this is not a straightforward method to apply transformation to the current underlying path geometry (ID2D1PathGeometry object) "in-place" (ie. transform it and use for further graphics operations). Some simple methods offered by Direct2D are not useful for these purposes:
1. ID2D1Factory::CreateTransformedGeometry() converts ID2D1PathGeometry object to ID2D1TransformedGeometry object and ID2D1TransformedGeometry inherits from ID2D1Geometry (not from ID2D1PathGeometry) and cannot be used for path operations.
2. ID2D1Geometry::CombineWithGeometry() which could be used to get final geometry by combining empty geometry with transformed geometry doesn't offer any combine mode which would produce a "sum" of geometries (D2D1_COMBINE_MODE_UNION gives kind of outline). Moreover the result is stored in ID2D1SimplifiedGeometrySink not in ID2DGeometrySink.

So, it seems that ability to transform the wxGraphicsPath (even several times) and still use it after this operation(s) can be achieved by using a geometry group object (ID2D1GeometryGroup) this way:
1. After applying transformation to the current path geometry with ID2D1Factory::CreateTransformedGeometry() the result is stored in the collection of transformed geometries (an auxiliary array) and after that a new (empty) geometry is open (in the same state as just closed one) and this geometry is used as a current one for further graphics operations.
2. Above steps are done at every transformation so our effective geometry will be a superposition of all previously transformed geometries stored in the collection (array) and the current operational geometry.
3. If there is necessary to use this combined effective geometry in any operation then ID2D1GeometryGroup created with ID2D1Factory::CreateGeometryGroup() from the collection of stored geometries will act as a proxy geometry.

Closes #17549
2016-05-26 17:51:53 +02:00
Artur Wieczorek
b92c91bafb Fixed flushing underlying graphics path data for Direct2D renderer
Don't attempt to close already closed geometry sink.
2016-05-26 17:33:59 +02:00
Artur Wieczorek
a64a204749 Add more error checks to Direct2D wxGraphicsRenderer code.
Check the results of the native Direct2D operations.
2016-05-26 17:32:58 +02:00
Artur Wieczorek
993fcdac7d Added missing references to some dynamically loaded Direct2D API's.
Without this fix invoking D2D1::Matrix3x2F::IsInvertible() or D2D1::Matrix3x2F::Skew() functions breaks the build.
2016-05-26 17:32:09 +02:00
Paul Cornett
7e41ac405f Avoid blank menubar/toolbar when using wx[MT]B_DOCKABLE with GTK+ 3.20
A GTK+ bug involving GtkHandleBox somehow prevents drawing of its child
since 3.19.7.  Avoid this by disabling the docking functionality, which
is preferable to having the bar be blank.
See #17539
2016-05-25 09:39:50 -07:00
Vadim Zeitlin
8e76aab544 Demonstrate simulating menu item selection in the uiaction sample
This just checks that pressing a key with "Alt" modifier can be used to open a
menu and that pressing the menu item letter then selects an item from it.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
594d916dcb Support DPI scaling in wxUIActionSimulator when using GTK+ 3
Scale the coordinates passed to MouseMove() by the GTK scaling factor to
ensure that the mouse clicks are really delivered to the correct windows,
without this change wxUIActionSimulator was unusable on systems using high DPI
(i.e. GDK_SCALE of 2).

Per-monitor DPI scaling is still not supported however.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
38c8a10b79 Don't even compile in wxUIActionSimulatorX11Impl when using GTK+3
This code can never work anyhow, there is no reason to compile and link it.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
e2c98afd5a Sync with X server before simulating mouse clicks
Adding a call to XSync() to wxUIActionSimulatorX11Impl seems to fix the
problems with the focus snapping back to the control having it previously
after simulating a mouse click and changing the focus afterwards using
wxWindow::SetFocus(), as the uiaction sample did.

Admittedly, it's not really clear why does doing it help, but at the very
leasy this XSync() call shouldn't do any harm.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
7cf5804465 Determine wxUIActionSimulatorX11Impl version to use dynamically
Choose between wxUIActionSimulatorXTestImpl and
wxUIActionSimulatorPlainX11Impl dynamically, depending on whether XTest
extension is available during run-time or not.

Also decouple the two implementation to keep them clearly separated.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
4a0938d2b7 Allow "moving" wxX11Display objects
This is not a real move-ctor but std::auto_ptr<>-like "stealing" ctor. It
still allows to pass Display ownership to another function which is all that
is needed for our purposes.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
746b91c5d3 Open the display only once in wxUIActionSimulatorX11Impl
Instead of opening connection to X display in every method, do it once in
ctor, as we can store the display across multiple calls after the recent
refactoring.

This does require allocating a separate "impl" object for each public object,
but should still be much less wasteful than opening and closing the display
connections all the time.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
d1b537f953 Refactor: move SendButtonEvent() into wxUIActionSimulatorX11Impl
Make the function a method of the class in preparation for the next commit.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
cfc1681b4c Virtualize wxUIActionSimulator implementation
Extract platform-specific code in a wxUIActionSimulatorImpl-derived class
instead of keeping it in wxUIActionSimulator itself.

This will allow determining which implementation to use dynamically (i.e. at
run-time and not compile-time) to use later and already allows to get rid of
an __WXOSX__ #ifdef in common code.
2016-05-23 03:00:49 +02:00
Vadim Zeitlin
e82c619402 Only define wxUSE_XTEST in Unix-specific headers
This symbol is not needed and doesn't make sense in wxMSW.
2016-05-23 03:00:48 +02:00
Vadim Zeitlin
54a6c44a77 Disable wxUIActionSimulator if XTest not found when using GTK+ 3
The implementation using XSendEvent() with classic input events can't work
with GTK+ 3 anyhow because it uses XInput2 which is incompatible with them, so
warn the user about this and don't compile useless code into the library.
2016-05-23 03:00:48 +02:00
Vadim Zeitlin
ec4a41f3b7 Don't test for XTest when not using X11 wxUIActionSimulator
There is no need to check (and give a warning about it being not found) when
building wxMSW, wxOSX or even wxQt.
2016-05-23 03:00:48 +02:00
Scott Talbert
a4716916b7 Add support for using the XTest extension in wxUIActionSimulator
Fixes wxUIActionSimulator under wxGTK3, see #17530.
2016-05-23 03:00:48 +02:00