Commit Graph

19544 Commits

Author SHA1 Message Date
Vadim Zeitlin
01fd98c783 Merge branch 'generic-dvc-composite'
Use wxCompositeWindow for generic wxDVC implementation.

See https://github.com/wxWidgets/wxWidgets/pull/2382
2021-05-31 16:33:50 +02:00
Vadim Zeitlin
f1d84277b4 Merge branch 'nicer-boxsizer-asserts'
Improve the error messages by indicating what should be done to avoid
the asserts and provide a way to disable them if really needed.

See https://github.com/wxWidgets/wxWidgets/pull/2375
2021-05-31 15:18:37 +02:00
Vadim Zeitlin
f16b502f66 Forward key down/up events from wxCompositeWindow children too
There doesn't seem to be any reason to only forward CHAR events, but not
KEY_{DOWN,UP} ones, so do the same thing for the latter ones too.

This allows to get rid of GetMainWindow() call in wxDataViewCtrl unit
tests, as wxEVT_KEY_DOWN are now correctly received in the control
itself and not just its main window.
2021-05-24 14:24:24 +01:00
Vadim Zeitlin
3ed930c736 Use wxCompositeWindow for generic wxDataViewCtrl implementation
This makes several methods that didn't have any effect before work
correctly, including SetToolTip(), whose effect is now shown in the
sample, but also SetCursor() and SetLayoutDirection().

Some methods would now actually work too well: SetForegroundColour() and
SetBackgroundColour() implementations in wxCompositeWindow apply to all
sub-windows, but in wxDataViewCtrl they are only supposed to affect the
items, but not the header, so we need to override them to prevent the
base class version from being used. It is still preferable to explicitly
disable these two methods and inherit all the other ones (including any
possibly added in the future) from wxCompositeWindow to implementing all
the methods manually in wxDataViewCtrl itself.
2021-05-24 14:24:24 +01:00
Vadim Zeitlin
fa00fd24f0 Fix event origin for wxEVT_CHAR from wxCompositeWindow children
Use the just added wxEventObjectOriginSetter to set the event object and
ID to that of wxCompositeWindow itself, rather than that of the child
window where the event had actually occurred.
2021-05-24 14:24:24 +01:00
Vadim Zeitlin
9a150ba486 Add wxEventObjectOriginSetter helper class
This RAII helper can be used to temporarily change the event object and
ID of a wxEvent and will be used when redirecting events to make events
from one object to appear as coming from another one.
2021-05-24 14:24:24 +01:00
Vadim Zeitlin
0b20b97704 Merge branch 'spinctrl-digits'
Improve setting the number of digits in wxSpinCtrlDouble and make it
consistent on all platforms.

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

Closes #17085.
2021-05-22 21:25:32 +01:00
Vadim Zeitlin
2e289d7231 Add wxSizerFlags::DisableConsistencyChecks()
This allows to (hopefully temporarily) disable size flag check asserts.
2021-05-20 13:27:06 +01:00
Vadim Zeitlin
a352dee1f1 Disable warnings inside winsock2.h when using MSVC too
We already disabled the warnings inside windows.h, but since bf5090bcf3
(Enable Winsock 2 and IPv6 build options by default, 2021-04-24) we
could get warnings from winsock2.h, so move its inclusion inside the
region where the warnings were disabled too.

For the record, the warnings were, rather surprisingly, C4668, which is
disabled by default, but apparently was enabled somewhere inside (at
least some versions of) SDK headers.

This commit is best viewed with --color-moved git option.
2021-05-19 18:51:30 +01:00
Vadim Zeitlin
fc2e01d9a2 Make GtkPageSetup-related functions private
These functions don't need to be members of wxGtkPrintNativeData as they
don't use this object at all, so one shouldn't be required to call them.

And rather than making them static, just make them private functions
instead.

No real changes, this is just a refactoring.
2021-05-16 00:55:04 +02:00
Vadim Zeitlin
0585c96a3b Restore wxObject::ms_classInfo public access
This undoes accidental change of ms_classInfo from public to protected
in 95c98a0b5f (Work around -Wuggest-override for event table macros from
gcc 11, 2021-04-25).

Also add a unit test checking that using wxCLASSINFO(wxObject) compiles
and works as expected.
2021-05-04 23:14:41 +02:00
Jouk
0943beb241 wxGTK1 : adding missing ctors foe wxCursor & wxBitmap 2021-05-03 08:04:00 +02:00
Paul Cornett
43beca8196 Avoid warning: g_object_ref_sink redefined with GTK2 2021-05-02 07:48:35 -07:00
Tim Stahlhut
e80ab67b54 Fix wxUniv/MSW build by defining MSW-specific wxUSE_XXX options
Add definitions of the missing MSW-specific options to wx/univ/setup.h
to avoid errors in wx/msw/chkconf.h when building wxUniv.

Closes https://github.com/wxWidgets/wxWidgets/pull/2355
2021-05-01 14:28:13 +02:00
Tomay
0e39566b3a Add wxImage Change{Saturation,Brightness,HSV,Lightness}()
Add more functions for manipulating wxImage colours.

Show using them in the same and add new unit tests for them.

This is a squashed commit of branch 'tomay3000/image-lightness'.

Closes https://github.com/wxWidgets/wxWidgets/pull/2310
2021-05-01 14:03:04 +02:00
Paul Cornett
3217a4e8a2 Fix best size for windows which are hidden when TLW is shown with GTK3
GTK3's style cache is not updated for hidden windows until after they are shown
See #16088
2021-04-30 12:15:33 -07:00
Stefan Csomor
228f5becab adding bridging info to our own definitions (#2354)
attempt to solve #19159
2021-04-30 18:10:21 +02:00
Vadim Zeitlin
1e4f0a370f Merge branch 'drop-vc7'
Remove MSVS 2003 support.

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

Closes #18821.
2021-04-27 14:10:06 +02:00
Vadim Zeitlin
1c8af332cf Only set wxLocale as active once it has been fully initialized
Previously wxLocale object was set as the global local as soon as it was
created, even when the default ctor was used, i.e. the locale wasn't
really changed at all. This was always wrong, but only started to result
in visible problems since the changes of c6d6ec9295 (Merge branch
'msw-fix-decimal-point' of https://github.com/vslavik/wxWidgets,
2021-04-18) as we now could use the existing but not yet active locale
when checking for the decimal separator mismatch, resulting in spurious
asserts.

Fix this by postponing the call to wxSetLocale() and the rest of what
was previously done in the ctor until Init() is called (which is done by
all non default ctors).

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

Closes #19154.
2021-04-27 14:09:41 +02:00
Vadim Zeitlin
17e0f23cd0 Merge branch 'listctrl-fixes'
Various generic wxListCtrl fixes and improvements.

Closes https://github.com/wxWidgets/wxWidgets/pull/2340
2021-04-27 14:08:38 +02:00
Ian McInerney
797bc2c087 Introduce ABI shims for wxListCtrl column ordering functions
This way it is easier to add the functions later on without
breaking ABI.
2021-04-27 14:07:46 +02:00
Ian McInerney
e0ef3830c1 Fix centering of images in wxListCtrl items when selected
Closes #11331.
2021-04-27 14:07:36 +02:00
Vadim Zeitlin
41268e014d Remove MSVS 2003, a.k.a. MSVC 7, support from the code
It was probably not supported since quite some time anyhow, because wx
own code uses CallAfter() which wouldn't compile with it, but now we can
can get rid of wxHAS_CALL_AFTER checks too.
2021-04-26 15:18:39 +01:00
Vadim Zeitlin
84bcc109ad Merge branch 'cxx20-warning-fixes'
Build fixes for gcc 11 and clang 12, including in C++ 20 mode.

See https://github.com/wxWidgets/wxWidgets/pull/2347
2021-04-26 16:10:33 +02:00
Vadim Zeitlin
86d1a25624 Merge branch 'winsock-2'
Use WinSock 2 rather than 1.1 by default and also enable IPv6 support,
requiring WinSock 2, by default now that it can be done.

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

Closes #15562.
2021-04-26 15:07:13 +01:00
Vadim Zeitlin
95c98a0b5f Work around -Wuggest-override for event table macros from gcc 11
Disabling -Wsuggest-override inside macros is broken in gcc, see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578, and has started
affecting wxWARNING_SUPPRESS_MISSING_OVERRIDE since gcc 11, i.e. this
macro doesn't have any effect any more and the warning is still given.

Avoid it by actually specifying "override" for gcc 11 (as doing it for
all compilers would result in -Winconsistent-missing-override from
clang) and check that we don't get this warning in the allheaders test.

Also don't use wxDECLARE_ABSTRACT_CLASS() inside wxObject itself, now
that it uses "override", which is not appropriate for the base class
version. This is arguably more clear and should have been done like this
since the beginning anyhow.
2021-04-26 11:55:33 +02:00
Vadim Zeitlin
ccbf0b2f9a Define wxDataFormat comparison operator overload taking it itself
We still can't avoid defining the overload taking NativeFormat due to an
ambiguity that we would have otherwise between converting from
NativeFormat to wxDataFormat or vice versa when comparing them (it would
have been better to avoid implicit conversions in all directions, of
course, but this is how it was done back in e1ee679c2e (wxDataObejct and
related changes (won't compile right now), 1999-10-21) and it's too late
to change it now), but we can at least define an overload taking
wxDataFormat itself and not wxDataFormatId to make things slightly more
logical and avoid -Wambiguous-reversed-operator clang 12 warnings.
2021-04-26 11:44:40 +02:00
Vadim Zeitlin
ffc3168f6f Make wxFontBase::operator==() symmetric by taking wxFontBase
Taking wxFont here resulted in a potential ambiguity when comparing
wxFont objects, at least according to clang 12 in C++20 mode.

Avoid this by just taking wxFontBase here, as now the operator is fully
symmetric, rather than exactly matching only (wxFontBase, wxFont) and
matching (wxFont, wxFont) either directly or with reversed arguments
order.
2021-04-26 11:44:40 +02:00
Vadim Zeitlin
3481598cc6 Make wxSpinCtrlDouble::SetIncrement() update digits in wxGTK too
Follow the generic version and increase the number of digits if
necessary.
2021-04-25 21:17:31 +02:00
Vadim Zeitlin
a44bb13a0c Make DetermineDigits() reusable in other ports
Move this function, and the associated constant, to common code.

This required moving wxSpinCtrlDouble::Create() implementation to the
source file, but there are no real changes.
2021-04-25 20:14:46 +01:00
Vadim Zeitlin
c16f85bd4d Simplify after recent changes by adding DoSetDigitsAndUpdate()
There is no need for a separate UpdateAfterDigitsChange(), it is always
called together with DoSetDigits().
2021-04-25 20:08:05 +01:00
Vadim Zeitlin
0153a6673e Don't decrease the number of digits implicitly
wxSpinCtrlDouble::SetIncrement() should increase the number of digits if
necessary because not doing it would be inconsistent with the initial
determination of the number of digits in the ctor and would actually
lose the digits displayed, but it seems unnecessary to decrease the
number of digits and it might be surprising, so don't do it.

Add a test for this behaviour and document it.
2021-04-25 19:54:27 +01:00
Vadim Zeitlin
6938d91942 Update number of digits in wxSpinCtrlDouble::SetIncrement()
This is consistent with using the value of the increment specified in
the ctor for setting the initial number of digits, it was surprising
that creating the control with some value of the increment (e.g. 0.1)
and calling SetIncrement(0.1) later resulted in very different outcomes,
as in the former case the value was shown with a digit after the period
while in the latter case only the integer part was shown.

This also makes the behaviour compatible with that of the previous
versions of the generic wxSpinCtrlDouble, which used "%g" to format the
number before the changes of edc553870f (Fix displaying wxSpinCtrlDouble
values with default precision, 2020-05-18), as they did show the
fractional part even in the latter case.

Add a test checking that this works as expected: before this commit, the
test failed with "1 == 1.2" and "1 == 1.23" errors.
2021-04-25 19:45:34 +01:00
Vadim Zeitlin
eecc62ba65 Factor out wxSpinCtrlDouble::DoSetDigits()
Make this part of SetDigits() reusable in order to be able to also use
it in DetermineDigits() now and in SetIncrement() in the upcoming
commit.

No real changes yet.
2021-04-25 19:44:24 +01:00
Vadim Zeitlin
e2d2b367af Always initialize m_format in DetermineDigits()
It doesn't seem right to leave it unchanged when increment is outside of
[0, 1] interval, we should still set it to something in this case.

And doing this makes it unnecessary and redundant to initialize m_format
in Init(), as it will be always done when DetermineDigits() is called
from Create() anyhow.
2021-04-25 19:13:22 +01:00
Vadim Zeitlin
e748c2b56c Make wxSpinCtrlDouble::DetermineDigits() private
There is no need to allow calling this function from derived classes.

No real changes.
2021-04-25 19:11:38 +01:00
Vadim Zeitlin
51cb0e53b1 Use wxMEMBER_DELETE instead of "Disabled" comment
No real changes, but this is more clear and should result in better
error messages.
2021-04-25 18:59:20 +02:00
Vadim Zeitlin
7f246330de Remove wrong template arguments from wxArgNormalized ctors
Ctor of a template class specialization shouldn't actually repeat the
specialized template arguments, as it was done in 65cbf40b7e (Add
wxNO_UNSAFE_WXSTRING_CONV2 macro, 2019-10-21), so remove them because
this doesn't compile with g++ 11, even though it (wrongly?) did with the
previous gcc versions.
2021-04-25 18:59:20 +02:00
Vadim Zeitlin
3d278ee75f Avoid warnings about operations on different enums in C++20 mode
Arithmetic operations on the elements of different enums are deprecated
in C++20 and the latest compiler versions warn about them.

While individual warnings could be fixed in wxWidgets itself (although
it would be quite an effort to do it for all ~500 of them), it wouldn't
help with the same warnings in the applications using wx, so prefer to
do it by explicitly defining the operations on the enums that can be
combined with each other by using wxALLOW_COMBINING_ENUMS() macro,
except for a single warning in wxTar code where it's easier to just not
use an anum at all.
2021-04-25 18:59:20 +02:00
Vadim Zeitlin
5ab5172930 Avoid warnings about mixing different enums with C++20
C++20 deprecates arithmetic operations with the elements of different
enums and at least clang 10 and MSVS 2019 already warn about this when
compiling in C++20 mode, so avoid such operations at least in the public
headers to avoid warnings in the applications using wxWidgets and C++20.
2021-04-24 19:06:49 +01:00
Vadim Zeitlin
bf5090bcf3 Enable Winsock 2 and IPv6 build options by default
In addition to linking with Winsock 2, also use winsock2.h.

This allows to turn on IPv6 support on by default under MSW, so turn it
on under Unix too for consistency.

Predefine _WINSOCK_DEPRECATED_NO_WARNINGS to avoid warnings about
deprecated (but still available and very unlikely to be ever removed)
Winsock 1 functions that we still use.
2021-04-24 18:06:43 +01:00
Vadim Zeitlin
db22d12a47 Merge branch 'osx-dataview-native-key'
Implement wxEVT_CHAR generation for wxDataViewCtrl under Mac.

Closes https://github.com/wxWidgets/wxWidgets/pull/2324
2021-04-24 00:40:15 +02:00
Vadim Zeitlin
16ba1daebf Use wxOVERRIDE in wx/osx/cocoa/dataview.h
No real changes, just add wxOVERRIDE.
2021-04-24 00:38:29 +02:00
Vadim Zeitlin
e46b6d7758 Also remove useless wxDataViewCtrl::OnMouse() from Mac version
This empty event handler doesn't do anything useful.
2021-04-24 00:32:14 +02:00
Vadim Zeitlin
ccdfd28b48 Remove empty wxDataViewCtrl::OnChar() added in the parent commit
This is not really useful to have, so just remove it.
2021-04-24 00:31:17 +02:00
Stefan Csomor
26d6f82a81 Implement EVT_CHAR generation for wxDataViewCtrl under Mac
This requires manually sending the original key event back to the native
control because NSOutlineView doesn't implement the NSTextInputClient
protocol and so doesn't allow handling the keys in the usual way.
2021-04-24 00:30:30 +02:00
Stefan Csomor
18c45321f4 Return bool from wxWidgetCocoaImpl::doCommandBySelector()
This allows to determine whether the event was handled by wx code and
perform further processing by feeding things back to native code if not.
2021-04-24 00:27:26 +02:00
Vadim Zeitlin
87fddbdbdb Merge branch 'spinctrl-gettextvalue'
Add wxSpinCtrl::GetTextValue() and allow clearing the text value in
wxGTK version for compatibility with MSW.

See https://github.com/wxWidgets/wxWidgets/pull/2334
2021-04-22 23:55:30 +02:00
Scott Talbert
858248d055 Fix declaration shadow warning in wxHtmlHelpFrame
Fixes this warning:
In file included from ../../include/wx/html/helpctrl.h:19,
                 from ../../include/wx/help.h:27,
                 from ../../include/wx/cshelp.h:18,
                 from ../../tests/allheaders.h:85,
                 from ../../tests/allheaders.cpp:435:
../../include/wx/html/helpfrm.h:74:50: error: declaration of 'wxWindowID' shadows a global declaration [-Werror=shadow]
   74 |     wxHtmlHelpFrame(wxWindow* parent, wxWindowID wxWindowID,
      |                                       ~~~~~~~~~~~^~~~~~~~~~
In file included from ../../include/wx/wxprec.h:12,
                 from ../../tests/testprec.h:4,
                 from ../../tests/allheaders.cpp:433:
../../include/wx/defs.h:1965:13: note: shadowed declaration is here
 1965 | typedef int wxWindowID;
      |             ^~~~~~~~~~

See https://trac.wxwidgets.org/ticket/19153
2021-04-22 07:33:03 -07:00
Vadim Zeitlin
c356f83da2 Fix resetting text override when manually entering the text
The entered text wasn't taken into account, as the override was still
used when its numeric value was retrieved by GtkSpinButton using our
"input" handler, so reset the override now as soon as we get "changed"
signal.
2021-04-21 09:24:02 +02:00