Commit Graph

5535 Commits

Author SHA1 Message Date
Jouk
c42715f0c9 define WXBUILDING when compiling the library on OpenVMS 2020-03-05 08:15:04 +01:00
Anton Triest
3a9b5001ce Fix size of wxGenericTreeCtrl buttons when using high DPI
Scale the image size by the DPI factor.

Closes #18674.
2020-02-23 01:45:54 +01:00
Vadim Zeitlin
2e64ba6d6e Also add wxGridCellEditorPtr and wxGridCellRendererPtr
This is similar to the previous commit and replaces manual calls to
DecRef() on the renderers/editors with the use of smart pointers for
them too.
2020-02-08 15:14:24 +01:00
Vadim Zeitlin
5f34b1749e Use wxGridCellAttrPtr instead of manual DecRef() calls
Provide GetAttrPtr() and GetCellAttrPtr() convenience functions that can
be used instead of the original Ptr-less versions to avoid the need to
manually call DecRef() on the returned wxGridCellAttr pointers.

No real changes, just simplify the code and make it safer.
2020-02-08 14:55:36 +01:00
Ilya Sinitsyn
e0c09c8438 Only overflow left-aligned cells in wxGrid
Doing it for cells using a different alignment doesn't work correctly
and it's not clear whether it really makes sense, so just don't do it at
all for now.

Closes https://github.com/wxWidgets/wxWidgets/pull/1726
2020-02-07 19:35:35 +01:00
Ilya Sinitsyn
a40acbb28e Add CanOverflow function to wxGridCellAttr
Add function to determine whether the cell will draw the overflowed text
to neighbour cells. Note that only left aligned cells currently can overflow.
2020-02-07 19:34:50 +01:00
Ilya Sinitsyn
249e5add7e Redraw overflowed wxGrid cells to update the background
Before drawing the overflowing text we need to redraw the cells it
overflows into to avoid visual artefacts, that could appear even just
due to drawing new text over the same existing text due to
anti-aliasing. E.g. the text in the cell B2 in the grid sample visibly
changed appearance when repeatedly switching the current cell from A1 to
A2 and back again, just due to redrawing A2 contents.

Closes https://github.com/wxWidgets/wxWidgets/pull/1729
2020-02-07 00:12:01 +01:00
Ilya Sinitsyn
0c9a9dc126 Fix wrong wxGrid::RefreshBlock calling for an empty grid
There is no cells to select if the grid is empty (no rows or no columns).
So check for the columns count in SelectRow and check for the rows count in
SelectCol and call RefreshBlock only if it necessary.

Fix https://trac.wxwidgets.org/ticket/18659
Fix https://trac.wxwidgets.org/ticket/18660
2020-02-04 22:59:08 +07:00
Vadim Zeitlin
2f2ea1d193 Merge branch 'im/osx_fixes' of https://github.com/imciner2/wxWidgets
wxOSX fixes for wxGrid background, wxDataViewCtrl with wx[HV]SCROLL
styles and changing the window level.

See https://github.com/wxWidgets/wxWidgets/pull/1717
2020-02-04 02:31:38 +01:00
Vadim Zeitlin
8db1e0d0c7 Merge branch 'listctrl-autosize-checkboxes'
Fix autosizing column with checkboxes in generic wxListCtrl.

See https://github.com/wxWidgets/wxWidgets/pull/1721
2020-02-04 02:24:02 +01:00
Vadim Zeitlin
276a815ed5 Merge branch 'grid-ellipsize-offset' of https://github.com/thesiv/wxWidgets
Fix text cropping when using ellipsization in wxGrid.

See https://github.com/wxWidgets/wxWidgets/pull/1720
2020-02-04 02:14:19 +01:00
Vadim Zeitlin
e171757160 Merge branch 'grid-selecting'
Fix several problems related to selecting cells from keyboard in wxGrid.

Closes https://github.com/wxWidgets/wxWidgets/pull/1719
2020-02-04 02:13:20 +01:00
Ilya Sinitsyn
45839843e6 Use a constant for the wxGrid text margin
Use a constant instead of a hardcoded value for the text margin.
2020-02-04 05:36:24 +07:00
Ilya Sinitsyn
72824bc269 Fix text cropping when using ellipsization in wxGrid
A text is cropped for cells with ellipsization enabled when width of the
cell nearly equal to width of the text because wxGrid::DrawTextRectangle
function variant with the parameter of type wxArrayString adds the offset
before actually drawing the text using dc.DrawText or dc.DrawRotatedText.
2020-02-04 05:36:24 +07:00
Paul Cornett
0ca45d1a59 Remove redundant checks for NULL before calling delete 2020-02-02 23:51:39 -08:00
Paul Cornett
948ddc6e0f Eliminate -Wcast-qual warnings with GCC and Clang
Use const_cast, mutable, and various other changes to avoid -Wcast-qual
2020-02-02 22:50:32 -08:00
Vadim Zeitlin
5b797618a1 Merge WXK_HOME and WXK_END handling in a single case
There are more commonalities than differences between the handling of
these 2 keys and it's better to have a single version of this code.

No changes in behaviour.
2020-02-01 02:23:05 +01:00
Vadim Zeitlin
c7707a16c7 Simplify check for current cell in Home/End handling code
Prefer to just test whether we have it instead of breaking out of the
case if we don't, this is slightly more straightforward.

No real changes.
2020-02-01 01:57:56 +01:00
Ilya Sinitsyn
6e6eb799c8 Implement wxGrid cells selection for Home and End keys
Select cells if Shift is pressed when handling Home and End keys
2020-02-01 01:53:59 +01:00
Ilya Sinitsyn
68ccc77e20 Fix wxGrid Home and End keys handling
Take into account that rows and columns may be hidden and columns also can be
reordered.
2020-02-01 01:53:59 +01:00
Ilya Sinitsyn
d455c5b99e Fix making the wrong wxGrid cell visible when selecting
We should make visible the cell of the corner of the current selected block.

Also fix names of the wxGrid::UpdateBlockBeingSelected parameters because
actually passed сщщквы are of any opposite selection block corners.
2020-02-01 01:53:59 +01:00
Vadim Zeitlin
e1fce68be6 Account for checkboxes when autosizing wxListCtrl first column
Without this, the text of the first column was truncated when using
checkboxes.

Closes #18661.
2020-01-31 16:22:49 +01:00
Vadim Zeitlin
1014877302 Slightly reorganize last column width calculation
No real changes, just make it more obvious that we increase the last
column width to the remaining margin if it's smaller than it.
2020-01-31 16:18:41 +01:00
Vadim Zeitlin
01d0deb5bf Get rid of unnecessary variable in wxListCtrl::SetColumnWidth()
No real changes, just remove a variable assigned and used exactly once.
2020-01-31 16:15:13 +01:00
Paul Cornett
26f58bdf78 Fix base class call of virtual SetFont() in wxGenericListCtrl
Hard-coding 'wxWindow' improperly bypasses an override in wxControl on GTK3
2020-01-27 11:27:39 -08:00
Ian McInerney
278d98b2b6 OSX: Draw background in wxGrid cell when editor is open
This was removed when Quick Draw was in use due to an issue,
but Quick Draw has been removed, so re-enable it.
2020-01-23 23:21:08 +00:00
Vadim Zeitlin
fa74c30d09 Remove commented out code using wxINVERT from wxListCtrl
No real changes, just remove the old code using wxINVERT logical
function which doesn't work with wxGTK3/wxMac anyhow and so is really
not worth keeping.

See #16890.
2020-01-23 01:17:36 +01:00
Vadim Zeitlin
c1ef9f1f2d Merge branch 'dvc-col-update'
Avoid recursively updating wxHeaderColumns during resize in the generic
wxDataViewCtrl implementation.

See https://github.com/wxWidgets/wxWidgets/pull/1711
2020-01-19 17:48:19 +01:00
Artur Wieczorek
28098259a8 Suppress MSVC++ performance warning
MSVC++ doesn't seem to honour implicit int -> bool conversion and raises
warning C4800: "'int': forcing value to bool 'true' or 'false' (performance
warning)".
2020-01-19 09:56:24 +01:00
Vadim Zeitlin
b02fbafb96 Don't update wxDataViewColumn after it was resized interactively
Previously, the column was updated, i.e. wxHeaderCtrl::UpdateColumn()
was called, after the column width was changed interactively by the
user. This was unnecessary and actually harmful as it resulted in
recursion and display corruption.

Stop doing this by adding yet another width-related function to the
generic wxDataViewColumn called WXOnResize(), which just updates the
main window display, but doesn't update the header at all, and calling
it instead of SetWidth(), which does both, when the column is resized.

Closes #18245.
2020-01-19 03:28:13 +01:00
Vadim Zeitlin
655e29ff1a Remove a duplicate OnColumnChange() call
If the width really changed, wxDataViewColumn::SetWidth() already calls
wxDataViewCtrl::OnColumnChange() (via UpdateWidth()), so it's
unnecessary to call the latter again immediately after calling the
former. And if the width didn't change, it's not necessary to call it at
all, so in either case the OnColumnChange() call can be just removed.

No real changes.
2020-01-19 03:11:40 +01:00
Vadim Zeitlin
1ace3b336e Update strings of already created wxGridCellChoiceEditor too
Calling wxGridCellChoiceEditor::SetParameters() didn't have any effect
if the editor had been already used because this method only updated the
internally stored m_choices, used for creating the combobox, but not the
strings actually used by the combobox, if it had been already created.

Also mention that this works in the documentation.

Closes #10465.
2020-01-15 20:03:56 +01:00
Vadim Zeitlin
46042843e8 Implement support for ellipsization mode in wxGrid
Add another wxGrid::DrawTextRectangle() overload, taking wxGridCellAttr
and ellipsizing the string if necessary, i.e. if the fitting mode of
this attribute indicates that we should do it.

Switch the code of all renderers for which it makes sense to use
ellipsization to use the new overload.
2020-01-11 19:15:15 +01:00
Vadim Zeitlin
f13085441c Add wxGridFitMode and functions working with it
Replace "bool overflow" flag with a class allowing to specify the same
overflow/clipping behaviour currently, but also allowing to extend it,
notable to add ellipsization support, in the future.

Preserve the existing API by reimplementing it in terms of the new one.

Also update the same to demonstrate a cell which always overflows,
independently of the default cell behaviour.
2020-01-11 18:02:12 +01:00
Vadim Zeitlin
e3eb05df72 Skip not handled mouse events in wxGrid code
Unhandled mouse events should be skipped. Otherwise wxEVT_CONTEXT_MENU
event couldn't be generated by right clicking anywhere inside wxGrid and
could be only generated for the main grid part (but not the labels) by
pressing Shift-F10 under MSW.

Closes https://github.com/wxWidgets/wxWidgets/pull/1697
2020-01-09 23:26:46 +01:00
Vadim Zeitlin
854b61cd05 Merge branch 'generic-dvc'
Add option for using generic wxDataViewCtrl and fixes to make it work
under GTK and Mac.

See https://github.com/wxWidgets/wxWidgets/pull/1680
2019-12-17 02:06:15 +01:00
Vadim Zeitlin
20269a58c0 Avoid spurious assert failures in wxGenericStaticBitmap
Don't trigger a confusing assertion failure about unknown scale mode if
a 0-sized window is being repainted.

It's not clear why should an empty window get repaint events in the
first place, but this does happen, at least under MSW, so guard against
it.
2019-12-16 15:08:35 +01:00
Vadim Zeitlin
4203104d54 Fix using wxTreeListCtrl with generic wxDataViewCtrl in wxGTK
Restrict GTK workaround in wxTreeListModel::IsContainer() to the native
version, it does have a drawback when using the generic one as it
resulted in all items having the expander button.

See #18632.
2019-12-15 16:26:18 +01:00
Vadim Zeitlin
55f148a2ea Avoid asserts when moving mouse in empty wxGridColLabelWindow too
The changes of the previous commit were insufficient, as we could also
use an invalid column index when handling mouse event in an empty grid.

Fix this by checking for the line validity in PosToEdgeOfLine() instead
of adding another ad hoc check to wxGridColLabelWindow itself, as it
seems reasonable for this function to verify that it uses valid indices.

See #18629.
2019-12-14 00:03:01 +01:00
Vadim Zeitlin
9c1e8fde8f Avoid asserts when painting empty wxGridColLabelWindow
When the grid is empty, XToCol() has no choice but to return invalid
index (because there are no valid ones) when it's called from the
drawing code and passing such indices to GetColPos() results in an
assert, which is fatal inside wxEVT_PAINT handler.

Just short-circuit all this code by not doing anything in the case of
empty grid. This is sloppy, but simpler and more robust than any
alternatives.

Closes #18629.
2019-12-13 16:19:47 +01:00
Artur Wieczorek
9fbf97ae97 Check __WXOSX_COCOA__ instead of wxOSX_USE_COCOA
wxOSX_USE_COCOA is available only in wxOSX files.
2019-12-06 21:09:36 +01:00
Artur Wieczorek
1d45886c8f Don't attempt to get RGB components of invalid colour 2019-12-06 20:44:18 +01:00
Artur Wieczorek
67b64ee70f Add support for creating Cairo pen from wxPen with non-solid colour
Cairo colour patterns support only RGBA colours and therefore it is not
possible to create a colour pattern from wxPen with non-RGB colour
(non-solid colour). As a workaround under wxOSX for solid wxPen with
non-solid colour we can convert it to Cairo surface pattern (stiple)
because under wxOSX non-solid colour is actually represented by a pattern
image.
2019-12-06 20:40:57 +01:00
Artur Wieczorek
55478d95a5 Add support for creating Cairo brush from wxBrush with non-solid colour
Cairo colour patterns support only RGBA colours and therefore it is not
possible to create a colour pattern from wxBrush with non-RGB colour
(non-solid colour). However under wxOSX, when we have a solid wxBrush with
non-solid colour, we can convert it to Cairo surface pattern (stiple)
because under wxOSX non-solid colour is actually represented by a pattern
image.
2019-12-06 20:34:57 +01:00
Vadim Zeitlin
90d547feb6 Don't redraw current cell when the grid is frozen
Don't update the grid appearance when inside a sequence of batch
operations, it will be updated at the end of it anyhow and doing it in
the middle only results in extra flicker.
2019-12-03 02:56:46 +01:00
Vadim Zeitlin
e0b8ef85f2 Don't use invalid grid cell coordinates when deleting grid rows
Since the changes of dda6aa6bdc wxGrid
code could ask the grid table for the data of an invalid cell due to
redrawing the old, and now possibly invalid, current cell from inside
SetCurrentCell() called from wxGrid::Redimension().

Fix this by explicitly resetting the old current cell to an invalid
value when changing it in UpdateCurrentCellOnRedim().

Also avoid calling SetCurrentCell() entirely if the current cell doesn't
change, as this is just completely unnecessary and results in a possible
unexpected wxEVT_GRID_SELECT_CELL event.

See https://github.com/wxWidgets/wxWidgets/pull/1546
2019-12-03 02:47:08 +01:00
Vadim Zeitlin
7849d231d9 Merge branch 'build-option-fixes' of https://github.com/MaartenBent/wxWidgets
Miscellaneous build options fixes.

See https://github.com/wxWidgets/wxWidgets/pull/1661
2019-12-03 02:27:52 +01:00
Vadim Zeitlin
811be7ced7 Fix wxGridCellAttr::GetNonDefaultAlignment() for invalid inputs
The recent change of 19844d27ac fixed this
function for valid values of input/output parameters on input, but broke
it if the parameters had invalid value: in this case, we still need to
fill them even if this attribute doesn't have any specific alignment of
its own.

Account for this case too now, explain the logic of this function in the
comments inside it and extend the unit test to check for this case too.

Now the function should really conform to its documented (and expected,
including by the existing code in various grid renderers) behaviour.

Closes https://github.com/wxWidgets/wxWidgets/pull/1665
2019-12-03 02:26:49 +01:00
Vadim Zeitlin
36546b6f3f Merge branch 'grid-editors-placement'
Fix positions of the checkboxes drawn by wxGridCellBoolRenderer and
shown by wxGridCellBoolEditor so that there is no jump when starting or
stopping to edit grid cells with boolean values.

See https://github.com/wxWidgets/wxWidgets/pull/1662
2019-11-29 16:24:07 +01:00
Vadim Zeitlin
56bf5282d7 Merge branch 'gtk-fractional-font-scaling'
Apply system's fractional font scaling parameter when displaying text in
wxGTK.

See https://github.com/wxWidgets/wxWidgets/pull/1650
2019-11-29 05:04:56 +01:00