Commit Graph

19825 Commits

Author SHA1 Message Date
Tobias Taschner
3af4702b11 Implement wxWebView::EnableAccessToDevTools() for GTK 2021-02-26 18:53:46 +01:00
Tobias Taschner
04d22cc9f6 Add RemoveScriptMessage handler and return bool 2021-02-26 16:59:57 +01:00
Tobias Taschner
c3d0d7d000 Identify script handler in message event 2021-02-26 16:59:56 +01:00
Tobias Taschner
5b838ae6c1 Fix unused warning 2021-02-26 16:59:56 +01:00
Tobias Taschner
a7ff7a8012 Implement script message for WKWebView backend 2021-02-26 16:59:56 +01:00
Vadim Zeitlin
6819b5512b Make BinarySearch() interface slightly more readable
Replace "equal" parameter with the (opposite) "lowerBound" one with a
more descriptive name, add a comment describing it and also remove the
default value to force explaining how it is used in the caller.

No real changes.
2021-02-26 16:25:28 +01:00
Tobias Taschner
edcaf5210e Implement script message for edge backend 2021-02-26 15:41:42 +01:00
Tobias Taschner
011035ef08 Add wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED event 2021-02-26 15:41:41 +01:00
Pavel Tyunin
00fec01308 Fex search in wxSortedArrayString with custom compare function in STL build 2021-02-26 11:52:44 +02:00
Pavel Tyunin
2451f8085b Fix search in wxSortedArrayString with custom compare function 2021-02-25 21:28:32 +02:00
Vadim Zeitlin
0728262640 Provide descriptions for WinHTTP error messages
Just the error code is not very useful as it doesn't say anything about
what exactly failed, e.g. seeing "The buffers supplied to a function was
too small." doesn't help understanding which function was passed a too
small buffer, so add an extra parameter to SetFailed[WithLastError]() to
log this information too.

Also log the error code itself, because SEC_E_BUFFER_TOO_SMALL is
arguably more clear than its ungrammatical error message.

No real changes.

Closes https://github.com/wxWidgets/wxWidgets/pull/2247
2021-02-23 21:53:11 +01:00
Vadim Zeitlin
2c9f6770a5 Merge branch 'valnum-unsigned'
Fix handling of unsigned types in numeric validators: don't accept
negative numbers as unsigned, allow using the full 64-bit range.

See https://github.com/wxWidgets/wxWidgets/pull/2244

Closes #12967.
2021-02-23 21:52:27 +01:00
Vadim Zeitlin
483856f3d3 Add wxIntegerValidatorBase::ULongestValueType typedef
Allow just writing ULongestValueType instead of writing #ifdefs in
several places.
2021-02-22 12:58:14 +01:00
Vadim Zeitlin
cddc657505 Use min/max values of correct type in numeric validators
Use the actual type of the value, not LongestValueType, for storing
m_min and m_max as this is necessary for the comparisons between the
value and them to work correctly for unsigned types.

Also check for precision loss when converting from the bigger
LongestValueType to the actual type.

Add new unit tests, that failed before, but pass now.
2021-02-22 11:49:19 +01:00
Vadim Zeitlin
f1e6af089a Fix parsing unsigned numbers in wxIntegerValidatorBase
Use wxNumberFormatter::FromString() overload taking wxULongLong_t to
allow parsing numbers greater than LLONG_MAX.
2021-02-22 11:49:19 +01:00
Vadim Zeitlin
eb64202ad4 Add support for unsigned long long to wxNumberFormatter
This is necessary in order to deal with the numbers greater than
wxINT64_MAX that can't be represented in just long long.

It also allows to implement the intuitive handling of minus sign for the
unsigned numbers, i.e. not to accept it in FromString(), unlike the
standard functions which do (and parse -1 as 0xffff...fff).

Also extend the tests to check for more boundary cases.
2021-02-22 11:49:19 +01:00
Vadim Zeitlin
06bb60f0f8 Merge branch 'curlmultisocket' of https://github.com/NewPagodi/wxWidgets
Rewrite CURL-based wxWebRequest implementation using multi-socket
support for much better efficiency and reliability.

See https://github.com/wxWidgets/wxWidgets/pull/2193
2021-02-22 00:40:53 +01:00
Vadim Zeitlin
d8113b36c3 Merge branch '12764-faster-grid-attr-lookup' of https://github.com/discnl/wxWidgets
Improve responsiveness of a wxGrid with many attributes by using hash
map instead of array for storing them and looking them up.

See https://github.com/wxWidgets/wxWidgets/pull/2229
2021-02-22 00:21:31 +01:00
Vadim Zeitlin
b53f7ac904 Restore support for using faster dotted pens in wxMSW
Changes of d245dc9e1f (Fix drawing of dotted lines with wxDC in wxMSW,
2020-03-27) improved the appearance of dotted and dashed lines in wxMSW
but at the expense of significant (up to a factor of 300) slowdown.

Allow the applications for which the drawing performance is important to
explicitly request the old behaviour, with uglier, but faster, pens by
choosing to use low quality pens.

Update the graphics benchmark to allow specifying the pen quality and
verify that the performance when using it is the same as before 3.1.4.

See https://github.com/wxWidgets/wxWidgets/pull/2218

See #7097.

Closes #18875.
2021-02-22 00:04:07 +01:00
Vadim Zeitlin
7371131f1e Fix confusion around '-' handling in numeric validators code
Actual implementation of IsCharOk() didn't correspond to the comments in
it or near the function declaration which stated that it's never called
with ch='-' as argument -- it was called with it and called IsMinusOk()
right before a comment saying that it doesn't need to do it, which was
very confusing.

Fix this by making the behaviour really correspond to the comments and
handling '-' at the base class level. This required introducing a new
pure virtual CanBeNegative() function, but it's going to be useful for
other things later too.

Still keep IsMinusOk() helper, but make it private now because it
doesn't need to be called from the derived class IsCharOk() any longer.
2021-02-21 15:13:10 +01:00
Vadim Zeitlin
709b259bbb Don't define copy ctor in numeric validator classes unnecessarily
There is just no need to do it manually, when the compiler can do the
job perfectly well itself.

No real changes, but this will simplify the upcoming refactoring.
2021-02-21 14:55:16 +01:00
Gary Allen
9b1829c300 Add wxRibbon panel border colour option
Add wxRIBBON_ART_PANEL_HOVER_BORDER_COLOUR and
wxRIBBON_ART_PANEL_HOVER_BORDER_GRADIENT_COLOUR to allow further
customization of wxRibbon panels.

Closes https://github.com/wxWidgets/wxWidgets/pull/2239
2021-02-20 13:29:33 +01:00
Dimitri Schoolwerth
7bf2dc71c3 Remove wxGridCellWithAttr
After the previous commit the coords stored by wxGridCellWithAttr have
become redundant as the coords are now also stored as part of the key
used for an attributes map. With then only an attribute remaining in
wxGridCellWithAttr it can be removed completely, letting the value of
an attributes map point directly to a (ref-counted) attribute instead.
2021-02-15 12:36:03 +01:00
Dimitri Schoolwerth
061191e659 Improve responsiveness of a wxGrid having plenty of attributes
Speed up grid attribute lookups by using a hash map instead of array.

Closes #12764.
2021-02-15 12:36:03 +01:00
Dimitri Schoolwerth
57688cf2da Refactor repetitions into wxFileDialogBase::UpdateExtraControlUI()
No real changes, just prepare for the next commit before repeating more
code.
2021-02-15 00:37:45 +01:00
Vadim Zeitlin
d2c3c6a35b Merge branch 'msw_webview_edge4' of https://github.com/TcT2k/wxWidgets
Fix missing events for in-document navigation with wxWebViewEdge,
implement Find() for it and add wxEVT_WEBVIEW_FULLSCREEN_CHANGED for it
and wxGTK.

See https://github.com/wxWidgets/wxWidgets/pull/2227
2021-02-14 19:37:44 +01:00
Maarten Bent
1e17e8f500 Improve per-monitor DPI in wxVListBoxComboPopup
Adjust the default item height before the drawing size is calculated.
2021-02-13 01:59:23 +01:00
Tobias Taschner
e09063186c Provide generic wxWebView::Find() implementation
This implementation is based on javascript 'window.find()'
https://developer.mozilla.org/en-US/docs/Web/API/Window/find
It's not standard, but implemented in most browsers.

It's not a complete implementation as it can't determine how
many search results can be found.

If the backends API provides a native find interface it should be
used instead of this implementation, but it's good fallback.
2021-02-10 23:55:18 +01:00
Tobias Taschner
f6a23a0431 Add wxEVT_WEBVIEW_FULLSCREEN_CHANGED event
The event is triggered by wxWebView when the page requests fullscreen view.

It's currently only implemented for the edge backend.
2021-02-09 22:28:29 +01:00
Tobias Taschner
fea23a0be4 Handle in-document navigation with wxWebViewEdge
Send EVT_WEBVIEW_NAVIGATING, EVT_WEBVIEW_NAVIGATED and EVT_WEBVIEW_LOADED
when an anchor is clicked within a document. This kind of navigation
cannot be vetoed.

Fixes: #19074
2021-02-09 17:55:37 +01:00
Vadim Zeitlin
f2d5ff0121 Make wxNumValidator::m_value protected rather than private
This is useful for writing overridden TransferXXX() methods in the
derived validator classes, give a motivating example in the docs.

See https://github.com/wxWidgets/wxWidgets/pull/2222
2021-02-08 22:43:48 +01:00
New Pagodi
ab63e73920 Record active sockets in wxWebSessionCURL
If a wxWebRequestCURL object is canceled or deleted before its transfer
is complete, we need to manually close its active socket.  Record each
transfer’s active socket in wxWebSessionCURL::SocketCallback so can use
it if needed.

Previously, this was done using curl_easy_getinfo, but this required
some compile time and run time checks and could fail in some specific
cases. Recording the socket ourselves significantly simplifies the code
and should always work.
2021-02-08 12:32:32 -06:00
Vadim Zeitlin
d4e5adf5d6 Merge branch 'webview_misc' of https://github.com/TcT2k/wxWidgets
More wxWebView miscellaneous improvements.

See https://github.com/wxWidgets/wxWidgets/pull/2221
2021-02-08 13:50:25 +01:00
Vadim Zeitlin
26eb738562 Merge branch 'drop-msw-it.po'
Remove platform-specific translations.

This is unnecessarily complicated for the single string that we
currently use this for, so just handle it specially.

Also some other minor translation-related improvements.

See https://github.com/wxWidgets/wxWidgets/pull/2213
2021-02-08 12:50:43 +01:00
Tobias Taschner
1cd0904260 Fix mixed line breaks in webview sources 2021-02-08 11:27:49 +01:00
Tobias Taschner
e0c705648f Add missing wxOVERRIDE to wxWebViewFactoryWebKit 2021-02-08 09:20:53 +01:00
New Pagodi
4c8f9ff34d Cancel a transfer if socket poller operation fails
When using the socket poller implementation using wxEventLoopSource
objects to monitor sockets, the operation
wxEventLoopBase::AddSourceForFD(... can sometimes return NULL. In these
cases the socket will not be monitored as needed. The only option seems
to be to cancel the transfer and report a failure
2021-02-07 20:56:27 -06:00
New Pagodi
88dca37b3f Change cancel method for wxWebRequestCURL objects
Previously wxWebRequestCURL objects were canceled by removing their
CURL easy handle from the CURLM multihandle. Unfortunately the really
only pauses the connection and does not truly cancel it. This commit
tries to stop the transfer by retrieving the active socket from the CURL
handle for the transfer and closing it.

There are some complications in doing this because the option curl uses
to get the socket have changed over the years. A combination of compile
time and run time checks are used to use the appropriate options to get
the socket. However in the case of 64bit windows using a curl version
older than 7.45.0 simply won’t have an usable option. In this case,
it seems nothing can be done.
2021-02-07 20:49:50 -06:00
New Pagodi
774a752bed Track active transfers in wxWebSessionCURL class
At various points in a transfer being managed by the wxWebSessionCURL
class we need to perform operations on a wxWebRequestCURL object.
However it’s possible for the request object to be deleted while the
transfer is in progress.

To ensure that the request objects are valid, keep track of the request
objects with a hash map. Objects are added to the map when a transfer is
started and removed when the transfer is complete or in the request’s
destructor.
2021-02-07 20:49:37 -06:00
New Pagodi
48cba4f88e Set wxWebResponseCURL buffer size as soon as known
Currently for wxWebRequestCURL objects using memory storage, a download
is processed by appending to a wxMemoryBuffer each time the write
callback is called. For a large transfer, this can result in many, many
reallocation calls and can block the main application.

This commit uses the progress callback for wxWebRequestCURL objects
added in a previous commit to set a minimum size for the buffer as soon
as it is known.
2021-02-07 20:43:51 -06:00
New Pagodi
3e5fd5462d Add a progress callback for wxWebRequestCURL
This commit adds a progress callback for use with wxWebRequestCURL
objects. This has some complications because over the years curl has
changed the signature of the callback.

A combination of compile-time and run-time checks is used to make sure
the appropriate callback and preferred return value are used.
2021-02-07 20:37:47 -06:00
Tobias Taschner
8a9db461ff Implement wxWebView::GetVersionInfo() for macOS
Return the operating system version as the WebKit
version used by WKWebView is bound to the OS.
(Also works for iOS)
2021-02-07 22:14:18 +01:00
Tobias Taschner
334872e726 Notify WebView2 API when minimizing a window with wxWebView
As suggested by the ICoreWebView2Controller documentation
call put_isVisible() when the window containing the
wxWebViewEdge is minimized/restored.
2021-02-07 21:48:02 +01:00
PB
623e6a4fc3 Make wxWebViewEdge visible after creating
Fixes: #18851
2021-02-07 21:33:28 +01:00
New Pagodi
b1b53ed85c Remove the worker thread from wxWebSessionCURL
Instead of having wxWebSessionCURL run a worker thread that uses curl
to monitor and process network activity, set up a separate socket
poller class to monitor socket activity. The socket poller class will
throw an event back to wxWebSessionCURL when it detects activity on the
sockets so that it can tell curl to process the activity in the main
thread.
2021-02-07 00:02:04 -06:00
Paul Cornett
62c119fa1e Fix RTL mirroring for wxClientDC, etc with GTK3
The changes to the Cairo context must be done before wxGC::CreateFromNative()
is called, otherwise they will be overwritten
2021-02-06 08:28:13 -08:00
Vadim Zeitlin
8293dcedef Factor out platform detection from XRC code into wxPlatformId
This will allow reusing the same strings in other places.

Also use this as opportunity to add "msw" as the (preferred) synonym for
"win" for general consistency.
2021-02-06 14:58:09 +01:00
Vadim Zeitlin
67fc7c5508 Merge branch 'remove-setup0.h'
Drop wx/setup0.h files hack and just use wx/setup.h.

See https://github.com/wxWidgets/wxWidgets/pull/2205
2021-02-06 14:26:25 +01:00
Tobias Taschner
d17e8978a6 Make wxWebView::RunScript() const 2021-02-05 22:18:31 +01:00
Tobias Taschner
2e94551f6f Clear string in wxJSON::DecodeString() to avoid unintentional appending 2021-02-05 22:18:30 +01:00