Commit Graph

10676 Commits

Author SHA1 Message Date
Václav Slavík
15b0648041 Fix wxReadlink signature to return ssize_t
Introduced in 53bd139, wxReadlink() trivially wraps readlink(), but
returned int instead of ssize_t as defined for readlink() by POSIX.

Fixes "Implicit conversion loses integer precision: 'ssize_t' (aka
'long') to 'int'" on platforms with sizeof(ssize_t)>sizeof(int).
2021-04-18 11:00:41 +02:00
Vadim Zeitlin
c6d6ec9295 Merge branch 'msw-fix-decimal-point' of https://github.com/vslavik/wxWidgets
Fix decimal point assertions with unknown Win32 locales.

See https://github.com/wxWidgets/wxWidgets/pull/2330
2021-04-18 02:10:51 +02:00
Václav Slavík
b466e3c769 Restore Win32 locale in wxLocale destructor 2021-04-17 15:12:45 +02:00
Václav Slavík
c9e2143a7a Fix wxLocale::GetInfo() for unknown Windows locales
wxWidgets may be unaware of the locale being used and may be unable to
get correct information from its languages database. For example, en-AT
locale, supported by Windows 10 and using "," for decimal point, would
be interpreted as en-US by wx, and return "." here.

The other situation, when wx supports a locale that the OS doesn't,
shouldn't make a difference here because in that case, CRT wouldn't
support the locale either and CRT formatting functions wouldn't be set
to use it.

See also somewhat related 9fc78c8167.
2021-04-17 15:12:45 +02:00
Vadim Zeitlin
b9bd932077 Micro optimize string concatenation in wxFileSystem::OpenFile()
Concatenate the string only once instead of doing it several times.
Compiler might be optimizing this anyhow in release builds, but it
definitely helps in at least the debug ones and doesn't cost anything.
2021-04-15 19:20:32 +01:00
Vadim Zeitlin
97750eb282 Don't try relative paths in wxFileSystem if current path is empty
This seems redundant, as the loop is the same as the one just below it
which is executed in any case if this one doesn't find anything.
2021-04-15 19:20:32 +01:00
Vadim Zeitlin
fd7386ed83 Move workaround for initial TLW size to wxGTK itself
Add wxWindow::WXSetInitialFittingClientSize() instead of handling wxGTK
TLWs specially in the common wxSizer code and override it in wxGTK to
remember that we need to reset the client size once the window is shown.

This commit shouldn't result in any changes in the observed behaviour.
2021-04-12 21:19:25 +02:00
Vadim Zeitlin
bc12930061 Merge branch 'filename-resolve-symlink'
Add wxFileName::ResolveLink().

See https://github.com/wxWidgets/wxWidgets/pull/2300
2021-04-07 12:38:37 +02:00
Vadim Zeitlin
b67bd4c3cb Merge branch 'file-history-styles'
Allow finer control over showing or hiding paths in wxFileHistory menus.

See https://github.com/wxWidgets/wxWidgets/pull/2282
2021-04-07 12:37:06 +02:00
Vadim Zeitlin
e551549015 Don't define unused variable in !wxHAS_NATIVE_READLINK case
Also make it const because it can be.

No real changes.
2021-04-07 01:43:56 +02:00
Vadim Zeitlin
1035ae27a7 Make wxSplit(wxJoin()) idempotent for string ending with escape
Previously, splitting a string obtained by joining together array
with (any but last) elements ending in the escape character (normally
the backslash), didn't recover the original array because the separator
character following it in the resulting string was considered to be
escaped by wxSplit().

Fix this by escaping the trailing escape character itself.

Add a test confirming that this works as expected now, document this
behaviour and also slightly simplify wxSPlit() logic.

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

Closes #19131.
2021-04-07 01:38:43 +02:00
Tobias Taschner
0ff1bdec09 Add wxFullScreenEvent for macOS
Send a wxFullScreenEvent when the user enters or exits full screen on
macOS. EnableFullScreenView() has to be used to enable the native
full screen API.

Closes https://github.com/wxWidgets/wxWidgets/pull/2284
2021-04-06 19:01:25 +02:00
Paul Cornett
52cc838b12 Implement 0-width pen consistently in wxGraphicsContext
Emulate a 1-pixel pen width as closely as possible.

This reverts:
334cf1cc91 (Take HiDPI scale into account for wxGCDC 0-width pen, 2021-04-03)
0d80050057 (Make wxGCDC behavior with 0-width wxPen consistent with MSW wxDC, 2021-03-02)

See #19077, #19115
2021-04-05 09:56:28 -07:00
Vadim Zeitlin
979c1bccc9 Make DoRefreshLabels() code more obviously correct
Use switch over enum instead of a series of chained ifs.

This has the same effect, but can be read and understood more easily.

No real changes.
2021-04-05 16:30:51 +02:00
Vadim Zeitlin
d46ba0b435 Very minor code cleanup in AddFileToHistory()
Declare "i" inside the loop and make a variable that could be const
actually const.

No real changes.
2021-04-05 16:21:19 +02:00
Vadim Zeitlin
f8f0b8b50c Remove public wxFileHistory::RefreshLabels()
Replace it with a private DoRefreshLabels() and call it ourselves from
SetMenuPathStyle() to make the class simpler (and less error-prone, as
it's now impossible to forget to call RefreshLabels() any more) to use.
2021-04-05 16:20:02 +02:00
Vadim Zeitlin
c89921d26d Rename wxFileHistoryMenuPathStyle values too
Use common wxFH_PATH_ prefix for consistency and try to make the values
more clear.
2021-04-05 16:15:49 +02:00
Vadim Zeitlin
036e35bf28 Rename wxFileHistoryMenuLabelStyle to wxFileHistoryMenuPathStyle
It seems useful to have the word "Path" in the name of this enum to
indicate that it applies to the paths shown in the menu labels.

Also rename the methods using this enum.
2021-04-05 16:09:34 +02:00
Paul Cornett
334cf1cc91 Take HiDPI scale into account for wxGCDC 0-width pen
See #19077, #19115
2021-04-03 13:03:56 -07:00
Ian McInerney
53bd1391f4 Add a new wxFileName function to resolve symlinks to absolute paths 2021-04-01 20:32:08 +01:00
Vadim Zeitlin
776c3e5b73 Don't make wxConfig::Do{Read,Write}LongLong() pure virtual
These functions, added in the recent fce8780297 (Add 64-bit integers
support to wxConfig, 2021-03-09) break compilation of existing code
defining classes inheriting from wxConfig, and we can avoid it by using
strings for storing long long values by default -- as this is what
wxFileConfig is doing, and wxRegConfig provides its own overridden
version anyhow.
2021-03-25 14:06:12 +01:00
Vadim Zeitlin
85b944d164 Merge branch 'webrequest-keep-alive'
Ensure that wxWebRequest objects stay alive as long as the request is in
progress.

See https://github.com/wxWidgets/wxWidgets/pull/2292
2021-03-25 14:04:24 +01:00
Vadim Zeitlin
0959cdb4e0 Check for memory allocation failure in all wxImage::ResampleXXX()
This was previously done in ResampleNearest() but not in all the other
variants, so add the checks there too to avoid crashing when trying to
use too big image sizes.

Closes #19119.
2021-03-25 14:03:06 +01:00
Vadim Zeitlin
360268ee25 Extend life time of wxWebRequest while it is in process
We already did it just before processing the state change event, but
this was too late, as the object could have been already deleted by then
and this actually happened with the example from wxWebRequest
documentation.

Do it earlier now, as soon as the request becomes active, which normally
happens when Start() is called, and keep the reference until the event
is processed after the request reaches one of the final states
(completed, failed or cancelled).

Add a unit test checking that deleting the wxWebRequest object doesn't
prevent the request from running to the completion any more.
2021-03-24 17:45:01 +01:00
Vadim Zeitlin
d7235ebb05 Show states using names, not ordinals, in trace message
This is much more readable.
2021-03-24 17:45:01 +01:00
Vadim Zeitlin
c0f8c0e0f2 Be stricter about changing to the same state in wxWebRequest
This shouldn't happen, and doesn't, but if it ever does we'd better
return immediately rather than doing something that will almost surely
be wrong.
2021-03-24 16:04:02 +01:00
Vadim Zeitlin
dd23d7dcd2 Merge branch 'safe-show-message'
Show message box from wxSafeShowMessage() in the other ports too, if
possible.

Currently this is done using wxMessageBox() if it can be sure that it's
safe to call and only MSW uses native function which is always safe to
call. Ideal would be to also use a native function under Mac, where it
should also be the case, but this doesn't seem to work for whichever
reason.

See https://github.com/wxWidgets/wxWidgets/pull/2270
2021-03-23 18:59:51 +01:00
Vadim Zeitlin
e442d90b0d Merge branch 'webrequest-build-fixes' of https://github.com/MaartenBent/wxWidgets
wxWebRequest-related build fixes for MinGW.

See https://github.com/wxWidgets/wxWidgets/pull/2283
2021-03-23 14:16:07 +01:00
Maarten Bent
1f36582d87 Initialize wxWinHTTP when wxWebSessionFactoryWinHTTP is created 2021-03-23 00:42:46 +01:00
Maarten Bent
953b71196b Fix extra semi warning in wxWebSessionCURL implementation 2021-03-23 00:42:06 +01:00
Stefan Csomor
d1c0d3b18c keeping the OSX specific use of origin for non-native borders
fixes #19108
2021-03-20 22:09:31 +01:00
Vadim Zeitlin
5d6525ccf1 Merge branch 'webview_useragent' of https://github.com/TcT2k/wxWidgets
Add support for custom user agent to wxWebView.

See https://github.com/wxWidgets/wxWidgets/pull/2280
2021-03-19 22:39:00 +01:00
Maarten Bent
5bdd5e1432 Check if wxUSE_WEBREQUEST is defined 2021-03-18 20:49:57 +01:00
Ian McInerney
71c26ec4da Add different menu label styles to wxFileHistory menus
These styles allow the program to choose to display file paths
in the menu or not
2021-03-18 02:11:33 +00:00
Paul Cornett
e375a68371 Restrict linkage of local functions 2021-03-17 10:26:18 -07:00
Paul Cornett
b5d4c6068e Make some member functions const 2021-03-17 09:44:48 -07:00
Tobias Taschner
97e469c255 Add access to user agent for wxWebView
Allow setting a custom user agent for a webview.
Also allow access to the current user agent.
2021-03-16 22:53:00 +01:00
Vadim Zeitlin
77593c5996 Add return value to wxSafeShowMessage()
This allows the caller to log the message to the console in addition to
showing the message box, for example. Previously, this would be
impossible to do without getting the duplicates if the message box was
not shown, but now it is.
2021-03-14 13:18:36 +01:00
Vadim Zeitlin
0c837e5310 Add support for size_t to wxConfig
Allow writing and reading size_t values directly too, there were not
previously accepted unlike all the other arithmetic types.

Closes #19091.
2021-03-13 15:15:37 +01:00
Vadim Zeitlin
fce8780297 Add 64-bit integers support to wxConfig
Serialize them to strings in wxFileConfig, just as we always did for
long, but use wxRegKey support for storing them directly to the registry
in wxRegConfig.
2021-03-13 15:14:58 +01:00
Vadim Zeitlin
e00d5e131b Use new wxAppTraits::SafeMessageBox() in wxSafeShowMessage()
This allows to show message boxes in ports other than wxMSW too by doing
it only when it is safe, i.e. when the GUI is initialized, while still
keeping the old code directly using the native MessageBox() function for
MSW for maximal robustness.
2021-03-07 23:51:54 +01:00
Vadim Zeitlin
fdd4ff8bf9 Make wxSafeShowMessage() msgbox app-modal in some cases
Although we don't want to use MB_TASKMODAL unconditionally, because it
results in non-optimal UI behaviour when there is a parent window, there
is no reason not to use it when we don't have any parent anyhow, so do
this, at least.
2021-03-07 23:51:54 +01:00
Vadim Zeitlin
39883a270a Disable main window when showing msgbox in wxSafeShowMessage()
Pass correct parent HWND to ::MessageBox() in order to disable the
window while the message box is shown, as this function is supposed to
be similar to modal wxMessageBox() and it was unexpected that the
application could be reentered via the event handlers from inside it.

This required adding wxAppTraits::GetMainHWND() in order to only use the
HWND in GUI applications from the function defined in non-GUI code.
2021-03-07 23:51:54 +01:00
Vadim Zeitlin
9073221584 Use wxApp::GetTraitsIfExists() wrappers when applicable
This is simpler and more clear than testing wxTheApp explicitly.

No real changes.
2021-03-07 23:51:54 +01:00
Vadim Zeitlin
69e48f036b Add wxApp::GetMainTopWindow() wrapper
This trivial function just allows to avoid checking if wxTheApp is not
null before calling GetTopWindow() on it.

Replace the existing "wxTheApp && wxTheApp->GetTopWindow()" calls with
wxApp::GetMainTopWindow().

No real changes.
2021-03-07 23:51:54 +01:00
Vadim Zeitlin
5ddf57c150 Add wxModule::AreInitialized()
This internal function will be useful to check if the modules are
already initialized, i.e. if the library is in the "steady state"
between the end of the initialization and the beginning of the cleanup
phases.
2021-03-07 20:39:09 +01:00
Vadim Zeitlin
e10e721120 Get rid of wxList and wxArray in wxModule code
Simply use wxVector instead, this shouldn't be less efficient (we rarely
remove the modules from the list and iterating over a vector should
actually be faster, as well as consuming less memory), but it avoids
ugly macros, is simpler to use and to debug and will be trivial to
replace with std::vector<> in the future.

No real changes, this is just pure cleanup.
2021-03-07 20:39:09 +01:00
Vadim Zeitlin
628514bcd3 Rename static wxModule::m_modules to use "ms_" prefix
No real changes, just use consisting naming convention.

Better late than never.
2021-03-07 20:39:09 +01:00
Vadim Zeitlin
bf8be6c58d Merge branch 'mac-filedlg-improvements' of https://github.com/discnl/wxWidgets
macOS wxFileDialog improvements.

See https://github.com/wxWidgets/wxWidgets/pull/2234
2021-03-06 12:18:43 +01:00
Andriy Byelikov
b2d97d1393 Add support for English locale for Israel (en_IL)
This locale is recognized by glibc, so add it to the known locales
database.

Closes https://github.com/wxWidgets/wxWidgets/pull/2252

See #19082.
2021-03-05 18:51:10 +01:00