Commit Graph

20012 Commits

Author SHA1 Message Date
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
Vadim Zeitlin
32258bd10a Move wxEVT_TEXT generation to wxSpinCtrlGTKBase::GTKTextChanged()
This is more consistent with GTKValueChanged() and allows making the
change in the upcoming commit.

No real changes yet, this is just a refactoring.
2021-04-21 09:02:51 +02:00
Vadim Zeitlin
ca0cf3ea59 Allow using a different text value in wxGTK wxSpinCtrl
Make it possible to use a string value different from the numeric value,
as wxMSW version allows this and some existing code depends on it.

Closes #19140.
2021-04-20 22:23:14 +02:00
Vadim Zeitlin
bf5235e01c Merge branch 'explicit-image-from-xpm'
Make wxImage ctor from XPM data explicit to avoid surprising behaviour.

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

Closes #19149.
2021-04-20 00:21:16 +01:00
Vadim Zeitlin
e73a0c23ef Replace dynamic cast with a virtual GTKValueChanged() function
No real changes, but using a virtual function is simpler and safer than
using wxIsKindOf().
2021-04-20 01:13:15 +02:00
Vadim Zeitlin
3ac3763705 Always handle "input" and "output" signals in wxGTK wxSpinCtrl
No real changes yet, just refactor the code to always connect these
signals handlers and not just when using non-decimal base.

Add wxSpinCtrl::GTKInput() and GTKOutput() virtual methods to handle
these signals appropriately depending on the type of the control.

This will allow further customizing conversion to/from string in the
upcoming commit and will also make it possible to handle UI locale
different from the C locale in the future.
2021-04-20 01:13:15 +02:00
Václav Slavík
9a3bbde2d1 Generalize wxBookCtrlBase::m_bookctrl to wxWindow
The field is used for common placement and sizing logic in
notebook-like controls that have a "controller buddy" control. Its use
isn't wxControl-specific and only relies on wxWindow API, so the
restriction to wxControl-inherited types is arbitrary.

Change the type to the more general wxWindow* pointer.

In practical terms, this allows derived classes to use e.g.
wxNativeWindow as the controller buddy.
2021-04-19 13:54:17 +02:00
Vadim Zeitlin
1dfc18a004 Link with ws2_32.lib rather than obsolete wsock32.lib
Winsock 2 provided by ws2_32.lib is available since 1994, it should be
fine to use it even for wx in 2021.

See #15562.
2021-04-18 22:13:45 +02:00
Vadim Zeitlin
11967af49f Make wxSpinCtrl::GetTextValue() pure virtual
It is now implemented in all ports.
2021-04-18 13:09:51 +02:00
Vadim Zeitlin
e5042a6a53 Implement wxSpinCtrl::GetTextValue() for wxQt too 2021-04-18 13:09:43 +02:00
Vadim Zeitlin
f2d3589d88 Also implement wxSpinCtrl::GetTextValue() for wxGTK1 2021-04-18 13:09:43 +02:00
Dummy
b6f8a8cf5b Add wxSpinCtrl::GetTextValue()
This allows to retrieve the current contents of the text entry part of
wxSpinCtrl.

For now provide a stub in the base class, will be made pure virtual
later.

Co-Authored-By: Vadim Zeitlin <vadim@wxwidgets.org>
2021-04-18 13:09:17 +02:00
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
5e53f74af1 Make wxImage ctor from XPM data explicit
This avoids accidental conversions from XPM to wxImage which can result
in the use of an expected wxBitmap ctor later.

See #19149.
2021-04-18 01:14:36 +01:00
Vadim Zeitlin
72500faf7c Add wxCursor ctor from XPM data to all ports
This just uses the existing wxImage ctor from XPM data and wxCursor ctor
from wxImage, but will allow the code creating cursors from XPM to still
work even when wxImage ctor from XPM is made explicit.

Add a trivial test just to check that the new ctor can be used.
2021-04-18 01:14:36 +01: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
Vadim Zeitlin
9c6e67cac0 Rename Mac wxCursor::CreateFromImage() to InitFromImage()
Use the same name as in the other ports for the function doing the same
thing, there doesn't seem to be any good reason to name it differently.

Also avoid declaring it when wxUSE_IMAGE==0 as it's not defined in this
case (again, consistently with the other ports).
2021-04-18 00:59:52 +01:00
Vadim Zeitlin
b26fd44c77 Consistently declare wxCursor(wxImage) ctor when wxUSE_IMAGE==1
wxGTK already did it like this, but also only declared ctor not taking
wxImage in this case, while wxMSW and wxMac declared this ctor in any
case, even when wxUSE_IMAGE==0, but didn't define it then.

This doesn't matter much anyhow, as the build with wxUSE_IMAGE==0 is
clearly broken and these changes are not enough to fix it, but be at
least somewhat consistent and:

1. Don't declare methods using a class which is not available at all.
2. Do define methods using wxImage only internally, even if they do
   nothing when it's not available.

No real changes.
2021-04-18 00:59:52 +01:00
Václav Slavík
b466e3c769 Restore Win32 locale in wxLocale destructor 2021-04-17 15:12:45 +02:00
Vadim Zeitlin
c16082edfe Add wxXmlResource::LoadDocument()
This allows loading XRC from anywhere, not just files and URLs.
2021-04-15 18:50:47 +01:00
Václav Slavík
db3e54b3dc macOS: Don't interfere with native views' drag and drop
wxWidgetCocoaImpl injects implementation of several
NSDraggingDestination protocol methods, but never called their base
implementations, presumably on the assumption that drag and drop is
explicitly supported and not builtin into native NSView-derived
controls.

This prevented native builtin d'n'd in e.g. NSTextView (text can be
copied and inserted by dragging it to the insertion point) from
working. Fixed by always calling base implementation.

Closes https://github.com/wxWidgets/wxWidgets/pull/2320
2021-04-14 17:59:28 +02:00
Vadim Zeitlin
dc5f1711f2 Upgrade version to 3.1.6
Run misc/scripts/inc_release, bakefile_gen and autoconf.
2021-04-14 17:57:27 +02:00
Vadim Zeitlin
b5a78fbac6 Also make SetMinSize() after wxSizer::Fit() work correctly
This fixes a problem similar to that fixed in the previous commit but
for SetMinSize(), which was also ignored if done after calling
wxSizer::Fit() and before showing the window, as the explicitly set min
size was also overwritten by the pending min size computed from the
client size corresponding to the sizer fitting size.

The fix is similar too: just invalidate the pending minimum size if
SetMinSize() is called.
2021-04-12 21:19:25 +02: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
329f60d7f3 Factor out wxTopLevelWindowGTK::GTKDoAfterShow()
Just extract the code generating wxEVT_SHOW for TLWs in wxGTK in its own
function before modifying it to avoid having to do it in two places.

No real changes, this is a pure refactoring.
2021-04-12 17:27:34 +02:00
Vadim Zeitlin
b671d230f2 Merge remote-tracking branch 'MaartenBent/bitmap_cursor_osx'
Add wxBitmap(const wxCursor &cursor) constructor to wxOSX.

See https://github.com/wxWidgets/wxWidgets/pull/2314
2021-04-11 16:46:58 +02:00
Igor Korot
9394d26c40 Implement wxBitmap(const wxCursor&) constructor for OSX 2021-04-10 14:17:27 +02:00
Vadim Zeitlin
cace392627 Merge branch 'msw-text-ctrl-backspace'
Implement support for Ctrl+Backspace for all MSW text controls.

See https://github.com/wxWidgets/wxWidgets/pull/2317
2021-04-09 17:29:14 +01:00
Artur Wieczorek
de10f054c4 Improve calculating wxButton best size under wxMSW
We can use BCM_GETIDEALSIZE message to get the size of the button that
best fits its text and image (if present).
It gives better results for text wxButton with wxBU_EXACTFIT style.
2021-04-08 19:26:12 +02:00
Vadim Zeitlin
a02690f957 Merge branch 'mac-dvc-autosize'
Fixes for wxDVC columns autosizing under Mac.

See https://github.com/wxWidgets/wxWidgets/pull/2305
2021-04-08 01:39:21 +02:00
Vadim Zeitlin
1248829802 Implement support for Ctrl+Backspace in plain EDIT controls
This shortcut is undocumented, but works in rich edit controls and even
in plain ones if they use SHAutoComplete(), so support it in all
controls because this is what people expect.
2021-04-08 00:26:41 +01:00
Vadim Zeitlin
1007259504 Add wxTextEntry::MSWUsesStandardAutoComplete()
Implementation is a hack, using a magic pointer value because just
storing this in wxTextAutoCompleteData is not simple, as any flag added
to it would need to be reset in several different places.

This is not used yet, but will be in the upcoming commits.
2021-04-07 22:27:24 +01:00
Vadim Zeitlin
a6e4cc7eb0 Refactor wxTextEntry to use MSWEnsureHasAutoCompleteData()
The new function has more clear semantics than GetOrCreateCompleter()
which both returned the completer value and set m_autoCompleteData to it
as a side effect. MSWEnsureHasAutoCompleteData() still does the latter,
but returns just a boolean indicating whether it succeeded or failed,
making using it more straightforward.

No real changes.
2021-04-07 22:20:05 +01:00