Commit Graph

5901 Commits

Author SHA1 Message Date
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
6c9c0ba02b Determine number of digits correctly when increment > 1
Using increment greater than 1 but with a fractional part should still
work, i.e. should use enough digits to fully show the fractional part of
the numbers that can be obtained by using this increment.
2021-04-25 20:00:31 +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
35fa1f93bc Reset wxSpinCtrl value to GetMin() if text string is invalid
Previously, wxSpinCtrl (using native control) and wxSpinCtrlDouble
(using the generic implementation) behaved differently in this case,
with the former changing its value but the latter keeping the last valid
value instead.

Make them behave the same by resetting the value in both cases and
document this behaviour.
2021-04-23 22:27:28 +01: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
Vadim Zeitlin
317ad65079 Move SetTextColoursAndFont() to wxGridCellRenderer
Move this function from wxGridCellStringRenderer to its base class to
allow using it even in the classes not drawing any strings.

Also document it.
2021-04-06 22:51:08 +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
Václav Slavík
a2e4cb6cec Fix wxSplitterWindow painting on macOS 11
Fix regression in wxSplitterWindow rendering introduced in
287ee5e4c7 - the splitter wouldn't
correctly render its background under some (but not all) circumstances
on macOS 11.

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

Fixes #19106
2021-04-05 18:41:00 +02:00
Artur Wieczorek
94ed0463d0 Check if index is in the range prior to erasing the image from wxImageList
This is to avoid memory errors in wxVector.
2021-04-04 21:09:40 +02:00
Artur Wieczorek
b6f4e5cf59 Don't use image index to get the size of the image in generic wxImageList
The index parameter should be ignored as all images in the list have
the same size (see docs). Native wxMSW implementation also works this
 way.
2021-04-04 21:08:32 +02:00
Artur Wieczorek
f1c3ff4037 Don't allow adding image to invalid wxImageList (generic)
Native wxMSW implementation doesn't allow to do this.
2021-04-04 21:07:15 +02:00
Artur Wieczorek
4b7ca0b33d Add assertions to check if generic wxImageList is valid
This is for compatibility with native wxMSW implementation.
2021-04-04 21:06:18 +02:00
Artur Wieczorek
032c443c42 Report failure while creating generic wxImageList with invalid image size
Native wxMSW implementation reports failure if dimensions <= 0.
2021-04-04 21:05:06 +02:00
Artur Wieczorek
ba588fd072 Take into account scale actor while resizing the image in generic wxImageList
Too small image needs to be resized to the required physical size first
and next converted to wxBitmap with actual scale factor.
2021-04-03 18:56:29 +02:00
Artur Wieczorek
b6d305e4f2 Assure that all images in the generic wxImageList have the same scale factor
Mixing images with various scale factors could be misleading and error
prone.
2021-04-03 18:54:32 +02:00
Daniel Kulp
eb52e86553 Take into account scale factor of images added to wxImageList
Closes #19114.
2021-04-03 18:54:32 +02: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
Paul Cornett
4388b9bd6b Make some member functions const 2021-03-04 11:49:33 -08:00
Paul Cornett
f25d48fbd5 Use a more accurate size for wxTimePickerCtrlGeneric
See #19078
2021-02-23 23:12:43 -08:00
Paul Cornett
1508fa1e4c Use a more accurate width for wxDatePickerCtrlGeneric
See #19078
2021-02-23 10:01:01 -08: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
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
Artur Wieczorek
279ee715fd Fix creating wxCairoBitmapData from wxImage with mask
If source wxImage has a mask we need to create ARGB32 Cairo surface (even
for RGB image) and based on the mask values set the alpha values to fully
transparent or retain original values.
2021-02-09 00:14:12 +01:00
Dimitri Schoolwerth
3123c76394 Fix grid multicell integrity after inserting/deleting rows/columns
Deal with possible size changes of a multicell (both main and inside
cells) when inserting or deleting rows or columns and, in the case of
deletion only, the disappearing of a multicell's main cell.

Closes #4238.
2021-02-07 22:59:02 +01:00
Dimitri Schoolwerth
04a3dda5c5 Refactor common wxGridCellAttrData::UpdateAttrRows/Cols code
Move two symmetrical functions into one and clean up, preparing it for
multicell support.
2021-02-07 22:59:02 +01:00
Vadim Zeitlin
bbd0c52440 Fix Left/Right arrows in multi-selection generic wxDataViewCtrl
They didn't reset the existing selection when used without Shift and
didn't extend the selection when used with Shift.

Fix both of these problems by reusing the existing logic from
GoToRelativeRow() and, added in this commit, GoToRow() which was
extracted from GoToRelativeRow().

Closes #19068.
2021-02-01 17:28:34 +01:00
Vadim Zeitlin
dbfa1c206e Rename and better document OnVerticalNavigation() helper function
This is not an event handler itself, so it shouldn't use "On" prefix
which is reserved, by convention, for the event handlers.

It also doesn't need wxKeyEvent, but just wxKeyboardState, so change its
signature accordingly. This will notably allow to use it from mouse
event handlers too if necessary.

No real changes.
2021-02-01 17:28:34 +01:00
Paul Cornett
8d1ad482b6 Fix wxStatusBar size grip layout with GTK3 2021-01-31 21:11:42 -08:00
Paul Cornett
01223d6af2 Scrolling fixes for RTL layout with GTK3
Avoid some positioning hacks, they are not needed with GTK3
2021-01-31 21:06:18 -08:00
Jouk
c65d5110aa update OpenVMS makefiles for credential dialog 2021-01-29 08:51:11 +01:00
Vadim Zeitlin
56a5512b37 Merge branch 'selstore-insert-fix'
Fix state of multiple items inserted into wxSelectionStore and improve
its tests.

See https://github.com/wxWidgets/wxWidgets/pull/2182
2021-01-25 13:02:34 +01:00
Stefan Csomor
3ccfa976aa guard against nullptr exception in wxLogGui::Flush
happened eg during wxUnitialize in dnd sample on macOS (open new frame, add shape, quit app)
2021-01-24 19:40:01 +01:00
rk
fd839c4bd6 Fix selection when inserting multiple items into wxSelectionStore
When inserting more than one item into wxSelectionStore in the
default-selected state, the state of all the items bug the first one was
wrongly set to "selected" initially.

Just fix the typo in the AddAt() call, which was passed a wrong
variable, to fix this.

Closes #19040.
2021-01-23 16:40:30 +01:00
Paul Cornett
c5aee91847 Fix highlighting wxTimePickerCtrl fields on GTK
GtkEntry automatically selects all the text in many situations,
so do the field highlighting later to override GTK's behavior.
2021-01-21 11:38:22 -08:00
Vadim Zeitlin
3c7326205f Merge branch 'grid-fix-drawing-invalid-cells' of https://github.com/discnl/wxWidgets
Fix drawing of grid cells appearing inside a multicell.

See https://github.com/wxWidgets/wxWidgets/pull/2176
2021-01-21 00:50:09 +01:00
Paul Cornett
c530b89ffa Apply anti-alias mode to fonts with Cairo, see #19049 2021-01-19 20:16:16 -08:00
Dimitri Schoolwerth
1f5b77bad3 Make use of grid helper function GetCellSpan()
Also gets rid of an additional attribute lookup that was recently
added in 00c497125e containing a minimal fix.
2021-01-19 22:30:33 +01:00
Dimitri Schoolwerth
860d9d09bc Refactor code deciding the kind of span of a grid cell
Move wxGrid's GetCellSize() cell span logic into GetCellSpan() for
future usage.
2021-01-19 22:26:03 +01:00
Dimitri Schoolwerth
00c497125e Fix drawing of grid cells appearing inside a multicell
Grid cells are considered for redrawing solely based on having
a (text) value. This can lead to infinite recursion with overflowing
inside cells if wxGridCellStringRenderer::Draw() wants to draw cells
appearing after this one but instead visits the same cell again (because
of a negative cell size as opposed to expected default cell size of 1x1
or a larger spanning size) and calls DrawCell() again for this cell
which will call the renderer's Draw() again etc...

Fix by not taking inside cells into consideration for redrawing. This
is the right thing to do as earlier on in the same function a cell is
not drawn for the same reason. Also the aforementioned Draw() mentions
it shouldn't be called for cell sizes <= 0.

Also fixes the crashing grid test just introduced in 6d3dbc3fe5.
2021-01-19 22:17:41 +01:00
Paul Cornett
cea8e60dea Don't set focus from wxTimePickerCtrl::SetValue() on GTK
Match the wxMSW behavior. See #19047
2021-01-18 22:24:39 -08:00
Daniel Kulp
3c28244806 Improve wxGrid appearance in dark mode under macOS
Use more appropriate colours for the row/column cell headers and don't
hardcode black (i.e. at least use white instead in dark mode) for the
frozen border.

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

See #18941.
2021-01-18 00:03:10 +01:00
Vadim Zeitlin
febd185fc6 Merge branch 'web-request'
Add wxWebViewRequest and related classes allowing to use HTTPS and
HTTP/2.

See https://github.com/wxWidgets/wxWidgets/pull/977
2021-01-17 18:19:47 +01:00
Artur Wieczorek
ef9cd70b21 Avoid converting wxBitmap to wxImage
We can set wxBitmap colour mask directly so there is no need
to do it with converting wxBitmap to wxImage.
2021-01-16 23:01:49 +01:00
Artur Wieczorek
321f38831e Fix sizes of images stored in generic wxImageList
Sizing the images stored in the list should stick to the convention
adopted in the native wxImageList implemented in wxMSW.
Images stored in the list should have the sizes as it is declared for
the list even if provided bitmaps have different sizes.
In case of discrepancies their dimensions should be adjusted accordingly
(cropped or extended).
2021-01-16 23:01:49 +01:00
Vadim Zeitlin
4a5de04ece Fix background colour drawing in wxGenericTreeCtrl under Mac
Revert 8535cde836 (Remove apparently unnecessary m_hasExplicitFont,
2020-07-14) and make 9cd3ab5ebd (Improve wxGenericTreeCtrl colours/fonts
updating on theme change, 2020-07-14) really work as expected by using
not only m_hasExplicitFont, but also m_hasExplicit{Fg,Bg}Col in order to
ensure that we only update the attributes if they hadn't been explicitly
set.

This is necessary because the hack with reusing m_has{Fg,Bg}Col didn't
work under Mac where the colour wasn't used at all when they were false.
This still seems to be a problem as the behaviour is different from that
of the other ports, but fixing this in wxOSX doesn't seem to be simple,
so don't rely on this working and use separate variables instead.

Closes #18940.
2021-01-16 19:17:57 +01:00