Commit Graph

39762 Commits

Author SHA1 Message Date
mimi89999
70659b6b7c Set tab label colour in AUI native MSW tab art
We must always change the text colour when using non-default background
colour, as otherwise the text may become unreadable in some themes,
which was exactly what happened in the standard "High contrast" theme
when using wxAUI under MSW before.

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

Closes #18832.
2020-07-20 00:47:54 +02:00
Vadim Zeitlin
1a4eff90ae Make opening wxComboCtrl popup under MSW work again
This was recently broken in 3bcbc8fe8e (Implement dismissal for
unfocused wxPopupTransientWindow, 2020-07-09) as the changes in it
resulted in the popup being dismissed as soon as it was opened with a
mouse click.

Fix this by changing several things:

- Check for wxCurrentPopupWindow before processing the message, not
  after, as the message handler itself could create a new popup and we
  definitely don't want to dismiss it immediately after its creation.

- Check for mouse DOWN events only, not UP and DBLCLK ones, as otherwise
  it might be possible that UP matching the same DOWN whose handler
  showed the popup would dismiss it. As for DBLCLK, it's just
  unnecessary, as it should be always preceded by a DOWN message anyhow.

- Don't dismiss the popup if the message is sent to it or one of its
  children, as in this case the popup itself is supposed to deal with it
  (as wxComboCtrl popup does) and we don't want to prevent it from doing
  it.

With these changes both wxComboCtrl and wxTipWindow seem to work as
expected.

Closes #18844.
2020-07-20 00:41:55 +02:00
Vadim Zeitlin
ae7a033cbd Fix units produced by wxSVGFileDC after the previous commit
Reimplement the logic of 16a02e6338 (Use DPI independent text size in
wxSVGFileDC, 2019-08-06) without using GetContentScaleFactor(), but
using wxDC::GetPPI() directly and do it under the platforms not using
logical pixels only.

This makes the units correct again in SVGs produced when using high DPI
under MSW even although wxDC::GetContentScaleFactor() now returns 1 in
this case.
2020-07-19 19:33:53 +02:00
Zane U. Ji
42bf26730f Implement keyboard navigation in rich text editor symbols dialog
Enable and fix keys processing in wxSymbolListCtrl::OnKeyDown().

Also set focus to this control initially as it's more useful and it's
expected that cursor arrows can be used to move the selection in it
rather than changing selection in the font comboboxes.

Note that "Enter" key still doesn't work correctly, i.e. doesn't close
the dialog when it's pressed in the symbols list control.

Closes #16033.

Co-authored-by: Igor Korot <ikorot01@gmail.com>
Co-authored-by: Vadim Zeitlin <vadim@wxwidgets.org>
2020-07-19 19:24:22 +02:00
Vadim Zeitlin
0079e9a278 Don't assert for unsupported logical functions in wxGCDC
wxGCDC is often used from wxEVT_PAINT handler and showing an assert
dialog from any of its methods results in wxEVT_PAINT being generated
again, resulting in another assert and abort, which is not useful, so
remove this assert to at least avoid crashes whenever unsupported
logical function is used, as it happens e.g. in the "Mask Screen" of our
own drawing sample.
2020-07-19 19:23:12 +02:00
Vadim Zeitlin
005b6dc88b Fix window focus after the last commit
Initialize m_disableFocusFromKbd, added by the parent commit, correctly
to "false" and not "true".

See https://github.com/wxWidgets/wxWidgets/pull/1516
2020-07-19 17:24:43 +02:00
Tomay
bbdd5b4984 Add wxWindow::DisableFocusFromKeyboard()
This allows to easily exclude a window from the TAB chain.

Closes https://github.com/wxWidgets/wxWidgets/pull/1516
2020-07-19 14:55:51 +02:00
michael
5c1f7733ab Mark IE-based wxWebView as being DPI aware
This makes it work (better) in high DPI.

Closes #17894.
2020-07-19 14:28:33 +02:00
michael
6023925ef6 Allow using XMLHTTP ActiveX object with custom scheme handlers
Fix the problem of the access-denied error when using a 'new
window.ActiveXObject("Microsoft.XMLHTTP")' to access URIs from custom
WebView scheme handler of the Internet Explorer WebView.

The solution here is to implement PARSE_SECURITY_URL and
PARSE_SECURITY_DOMAIN in ParseUrl of the IInternetProtocolInfo interface
of the Internet Explorer Control.

The direct implementation of VirtualProtocol::QueryInterface() instead
of using IMPLEMENT_IUNKNOWN_METHODS works, but is not nice. The better
approach would be probably enhancing ADD_RAW_IID to support multiple
inheritance.

Closes #17893.
2020-07-19 14:28:33 +02:00
Vadim Zeitlin
73bd293416 Revert "Implement GetContentScaleFactor for wxMSWDCImpl"
This reverts commit b0152155c0.

After changing wxWindow::GetContentScaleFactor() to return 1 on
platforms without logical pixels, such as MSW, in the grandparent
commit, make wxDC::GetContentScaleFactor() consistent with it too.
2020-07-19 13:39:27 +02:00
Vadim Zeitlin
564676e773 Don't crash if wxWebView::EnableContextMenu() is called too early
Although caller of wxWebViewEdgeImpl::GetSettings() check if it returns
NULL and handle it gracefully, this function itself can crash if it's
called too early, i.e. if ICoreWebView2 hasn't been created yet.

Add a check to avoid this and just return NULL settings in this case.

Closes #18840.
2020-07-19 13:10:08 +02:00
Vadim Zeitlin
2e51076159 Merge branch 'osx-overlay'
Fix wxOverlay under recent macOS versions.

Closes https://github.com/wxWidgets/wxWidgets/pull/1977
2020-07-19 00:20:36 +02:00
Vadim Zeitlin
b1e168b946 Remove _() macros from assert messages
We don't translate those, as they're meant for (presumably
English-speaking) developers only.
2020-07-19 00:20:22 +02:00
Stefan Csomor
130e11688b New macOS overlay window implementation
Make wxOverlay work on recent macOS versions.

Closes #18399.
2020-07-19 00:18:15 +02:00
Vadim Zeitlin
379e718a33 Remove recently added GetOpenGLScaleFactor()
It has become unnecessary after the previous commit, as now the generic
GetContentScaleFactor() can be used instead of it on all platforms, so
revert the changes of f6cc8ff52c (Add GetOpenGLScaleFactor() to abstract
OpenGL coordinates scaling, 2020-07-10).

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

See #17391.
2020-07-18 23:51:05 +02:00
Vadim Zeitlin
cd8b2d3096 Make wxWindow::GetContentScaleFactor() return 1 under MSW again
This reverts bc492a9e6e (Make wxWindow::GetContentScaleFactor() useful
for non-OSX platforms., 2015-03-18) and restores the old behaviour from
wxWidgets 3.0, which consisted in only returning factor different from 1
from this function for the platforms distinguishing logical and physical
pixels.

After this change, the return value of this function can be portably
used on all platforms to convert between logical and physical pixels,
independently of the current DPI.
2020-07-18 23:44:58 +02:00
Vadim Zeitlin
1422991602 Add wxWindow::GetDPIScaleFactor()
This function replaces some uses of GetContentScaleFactor(), where a
factor greater than 1 must be used even under the platforms not doing
any logical/physical pixel mapping, such as MSW.

For now GetContentScaleFactor() is still unchanged, but it will return 1
for such platforms in the future and adding GetDPIScaleFactor() allows
to avoid changing the behaviour of the code which relied on its current
behaviour.
2020-07-18 23:42:44 +02:00
Stefan Csomor
9f89467ff1 Support arbitrary scale factors, not just 2, when loading bitmaps
This notably enables support for @3x icons used under iOS.

Closes https://github.com/wxWidgets/wxWidgets/pull/1983
2020-07-18 19:44:43 +02:00
Vadim Zeitlin
ceb21d5e86 Also call wxAuiManager::UnInit() when manager itself is destroyed
This completes the changes of the previous commit and should ensure that
UnInit() is always called, whoever is destroyed first -- the managed
window or the manager itself.

Also update the documentation to mention that calling UnInit()
explicitly is not necessary any longer.
2020-07-18 17:51:41 +02:00
Hans Mackowiak
f646532889 Call wxAuiManager::UnInit() if associated frame is destroyed
Don't require the application code to explicitly do it if the frame is
destroyed before the manager itself.
2020-07-18 17:47:34 +02:00
mimi89999
2ea7090de2 Change AUI panel button color to wxSYS_COLOUR_BTNTEXT
This colour is more appropriate when using wxGTK and is the same as the
previously used wxSYS_COLOUR_CAPTIONTEXT in wxOSX and should be also a
good choice for wxMSW.

Closes https://github.com/wxWidgets/wxWidgets/pull/1966
2020-07-18 17:15:41 +02:00
Arrigo Marchiori
3aaa31e703 use wxConvWhateverWorks for translation strings
Revert the introduction of wxGet-SetInlineEncoding()
2020-07-17 17:52:16 +02:00
Arrigo Marchiori
860f6076b8 Explicit encoding for implicit conversion in wxGetTranslation() 2020-07-17 17:52:16 +02:00
Arrigo Marchiori
c86bcf962d Use wxASCII_STR() on string literals
Fix the build with wxNO_IMPLICIT_WXSTRING_ENCODING.
2020-07-17 17:52:16 +02:00
Stefan Csomor
051152ff95 Support GetFilterIndex() when filter choice is not shown in wxOSX
Platform native behaviour is not to show a filter, but to allow all
supported types to be selectable. Make sure GetFilterIndex still is a
valid choice (and not -1 as before).

Closes https://github.com/wxWidgets/wxWidgets/pull/1976
2020-07-17 15:06:58 +02:00
Vadim Zeitlin
7687d10c51 Merge branch 'empty-text-extent'
Make Get[MultiLine]TextExtent() behave consistently for empty strings on
all platforms, in particular return (0, 0) size for them from
GetTextExtent() in wxGTK, which is an incompatible change but is needed
to make it behave in the same way as the others.

See https://github.com/wxWidgets/wxWidgets/pull/1970
2020-07-16 11:43:05 +02:00
Lauri Nurmi
e6945aeedc Eliminate public header file's dependency on CoreServices.h
wx public headers are not supposed to include platform-specific headers
defining many macros that can conflict with the identifiers defined in
the application code. In this particular case, including CoreServices.h
ultimately #included AssertMacros.h, which by default on older SDKs
(<10.12) introduces various macros whose names very easily conflict with
user code.

For example, if you #included <wx/fswatcher.h> in your own code, and
your code happened to contain a symbol called 'check', or 'verify',
compilation failed.

Fix this by using pImpl idiom to move the variable requiring a type
defined in the SDK header into the source file.

Closes https://github.com/wxWidgets/wxWidgets/pull/1666
2020-07-16 01:54:24 +02:00
Vadim Zeitlin
99f210a0e7 Avoid uninitialized variable warnings in debug MSVC build
The compiler is smart enough to determine that the variables are always
initialized when they're actually used when using optimizations, but
gives a bunch of C4701 warnings for them if we don't initialize them in
the non-optimized debug builds.
2020-07-16 01:49:23 +02:00
Vadim Zeitlin
857bb9e806 Merge branch 'im/gridcombo' of https://github.com/imciner2/wxWidgets
Close the cell editor when the editor's combobox is closed.

See https://github.com/wxWidgets/wxWidgets/pull/1941
2020-07-15 16:15:42 +02:00
Vadim Zeitlin
1bf5e536e9 Merge branch 'generic-treectrl-cleanup'
Improve wxGenericTreeCtrl code handling system colours/theme changes.

See #18823.
2020-07-15 14:26:55 +02:00
Vadim Zeitlin
c14053c211 Merge branch 'osx-11'
Adaptations for macOS 11.0.

See https://github.com/wxWidgets/wxWidgets/pull/1940
2020-07-15 14:26:05 +02:00
Vadim Zeitlin
33e8684356 Merge branch 'ios-menu'
Add support for wxMenu under iOS.

See https://github.com/wxWidgets/wxWidgets/pull/1965
2020-07-15 14:25:30 +02:00
Jouk
dd444cc943 OpenVMS : add wxUSE_MENUBAR definition + fix for building wxMOTIF 2020-07-15 08:34:59 +02:00
Vadim Zeitlin
d57c688d89 Return non-zero height from GetMultiLineTextExtent("") in wxMSW
This restores the previous behaviour inadvertently changed by bfeae1922d
(Minor optimizations in GetMultiLineTextExtent(), 2020-06-10) and makes
it official by documenting it and adding tests checking for it.

It wasn't completely obviously if this was intentional or accidental
before, but at least wxStaticText itself relied on the old behaviour,
and chances are that so did some code outside the library, so make this
part of the API now.

See #18825.
2020-07-15 02:10:49 +02:00
Vadim Zeitlin
46d6866c9f Make wxGCDC::GetTextExtent("") return (0, 0)
This seems more logical and is compatible with wxDC in wxMSW and wxGTK2,
as well as other kinds of DC, e.g. wxPostScriptDC.

It also looks like the current behaviour was unintentional as it
happened only because wxGCDCImpl::DoGetTextExtent() always passed all
non-null parameters to wxGraphicsContext::GetTextExtent(), even if it
didn't need the values for all of them, and thus bypassed the special
case for the empty string which was already present in the latter
function.

Fix this, making DoGetTextExtent() more efficient as a side effect (we
now avoid unnecessary calls to pango_layout_iter_get_baseline() in the
most common case), and also add another test for empty string to
wxGraphicsContext itself, for non-GTK case.

Also document this behaviour and add a test checking for it.
2020-07-15 02:10:34 +02:00
Vadim Zeitlin
844ec191f0 Use CallGetTextExtent() directly in GetMultiLineTextExtent()
There is no need to pass by GetTextExtent() now that we already make
sure width/height are non-null in this function, so just construct the
MeasuringGuard slightly earlier and call CallGetTextExtent() directly.

No real changes.
2020-07-15 01:23:23 +02:00
Vadim Zeitlin
55c71fdac9 Ensure that pointers in GetMultiLineTextExtent() are always valid
Do the same thing as in GetTextExtent() to simplify the code a little
and also avoid temporary variables.

No real changes.
2020-07-15 01:21:14 +02:00
Vadim Zeitlin
2280e43fe9 Factor out wxTextMeasureBase::GetEmptyLineHeight()
No real changes, just refactor to extract a trivial helper function.
2020-07-15 01:16:23 +02:00
PB
88a6c8c905 Fix building wxMSW using GCC 10.1 with C++20 standard
Add comparison operator overloads using NativeFormat to wxDataFormat
to prevent ambiguous operator overload errors.

Closes https://github.com/wxWidgets/wxWidgets/pull/1962
2020-07-14 22:09:47 +02:00
Vadim Zeitlin
c073995352 Merge branch 'aui-dark-mode'
Fixes for AUI in dark mode, especially, but not only, under macOS.

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

Closes #18812.
2020-07-14 20:26:52 +02:00
Vadim Zeitlin
33038a2ce7 Remove the now unnecessary empty wxMessageDialog dtor
No real changes, just some minor cleanup after 220dfe17ea (Replace
deprecated API usage for window modal dialogs, 2020-07-09).
2020-07-14 20:16:03 +02:00
Stefan Csomor
ab858b5805 Produce NFD in wxConvFileName::FromWChar() on macOS
This ensures that fn_str() returns the string in the expected,
decomposed, format.

Also simplify the code by removing workarounds for old systems which are
not supported any more and make explicit the fact that under macOS
ToWChar() always produced NFC.
2020-07-14 20:15:04 +02:00
Stefan Csomor
47cc0b8946 Replace deprecated NSDate dateWithString 2020-07-14 20:10:51 +02:00
Stefan Csomor
add925e359 Modernize accessibility API usage 2020-07-14 20:10:47 +02:00
Stefan Csomor
065f2a283f Stop using deprecated API for assert output handler 2020-07-14 20:10:46 +02:00
Stefan Csomor
74bc9b5f71 Avoid infinite recursion between wxStockGDI and wxSystemSettions
There was a possible recursion from wxStockGDI::GetFont to
wxSystemSettings::GetFont and back, resolve by using direct font
creation, adding fixed system font.
2020-07-14 20:10:46 +02:00
Stefan Csomor
7be80a858d Replace deprecated LSGetApplicationForInfo() 2020-07-14 20:10:46 +02:00
Stefan Csomor
c53e9d913b Removing unused file-related functions
This should be done back in 5ba67c67e4 (Remove wxOSX/Carbon support.,
2016-01-22).
2020-07-14 20:10:46 +02:00
Stefan Csomor
220dfe17ea Replace deprecated API usage for window modal dialogs
Remove the delegate objects that are not used any longer.

Move wxGetAvailableDrives() to Objective-C code file dirdlg.mm to allow
for Cocoa implementation.
2020-07-14 20:10:46 +02:00
Stefan Csomor
dd0033d817 Removing unused obsolete code from wxFileDialog
We don't need workaround for macOS earlier than 10.6 any longer.
2020-07-14 19:49:21 +02:00