Commit Graph

6113 Commits

Author SHA1 Message Date
Vadim Zeitlin
1da8377f17 Declare wxBitmap in smaller scope in wxWizard DPI change handler
No real changes, just avoid creating wxBitmap unnecessarily and only do
it if we're really going to use it.
2022-05-30 17:36:23 +02:00
Vadim Zeitlin
c3359c17b7 Fix crash in wxAizrd on DPI change before adding the first page
Fix a problem introduced in 429b5561ff (Use wxBitmapBundle in wxWizard,
2022-02-10), see #22124, by adding a check for the current page being
non-null before using it.

Closes #22471.
2022-05-30 17:34:46 +02:00
DietmarSchwertberger
0dc9b292fe Fix regression in wxGrid row/col dragging to corner label
Recent changes to wxGrid (see #22292) resulted in an assertion being
triggered when dragging row or column to the corner window. Fix this by
adding a check for the new position validity.

Closes #22432.

Closes #22443.
2022-05-23 22:28:10 +01:00
Vadim Zeitlin
9042b529fa Merge branch 'dvc-bitmap-renderer-bundle'
Allow using wxBitmapBundle with wxDataViewBitmapRenderer.

See #22411.
2022-05-23 22:22:53 +01:00
Vadim Zeitlin
754aed4d7b Fix wxBitmapBundle support in wxTreeList
Don't use wxWithImages::GetImage(), which is limited to only a single
bitmap resolution, but use GetBitmapBundle() instead to ensure that we
show the representation of the bitmap appropriate for the current
resolution.
2022-05-18 17:45:44 +02:00
DietmarSchwertberger
2698dde445 Fix regression in wxGrid::DeleteRows()
Compare the row position with the number of rows, not columns, fixing a
regression introduced in 3719ab3725 (Add support for rearranging wxGrid
rows order interactively, 2022-04-02) (see #22260).

Closes #22420.

Closes #22423.
2022-05-11 23:33:44 +02:00
Vadim Zeitlin
bb52a5c5b5 Merge branch 'imaglist-mask'
Make handling of masks in wxImageList simpler and more useful.

See #22400.
2022-05-11 02:35:59 +02:00
Vadim Zeitlin
5a6adf4f58 Merge branch 'nanosvg-lib'
CMake: Support external NanoSVG library.

See #22407.
2022-05-11 02:33:38 +02:00
Maarten Bent
138d1ab021 CMake: Support header-only NanoSVG library
Check if the NanoSVG target defines any library locations.
Add a private compile definition to wxcore, instead of adding another setup.h option.
2022-05-11 01:55:19 +02:00
Maarten Bent
603c13aaba CMake: Add support for external NanoSVG library 2022-05-11 01:54:03 +02:00
Vadim Zeitlin
8d3e7fd346 Accept wxBitmapBundle in wxDataViewBitmapRenderer too
This allows returning the entire bundle from the model GetValue()
function to let the renderer itself to select the best matching bitmap
to use.
2022-05-09 14:36:41 +02:00
Vadim Zeitlin
d8abdfbdee Accept either bitmaps or icons in wxDataViewBitmapRenderer
Allow using either wxBitmap or wxIcon in wxDataViewBitmapRenderer
independently of the type the renderer was created with because this is
convenient and there is no real danger in allowing to mix and match
bitmaps and icons together.

Override the just added IsCompatibleVariantType() to implement this.
2022-05-08 21:26:04 +02:00
Vadim Zeitlin
eb361a182a Use a single wxBitmapBundle in wxDataViewBitmapRenderer
Instead of using either a wxBitmap or a wxIcon, always use the same
wxBitmapBundle object to store whatever we are rendering.

This slightly simplifies the code and prepares for further changes, but
nothing real changes yet.
2022-05-08 15:55:34 +01:00
DietmarSchwertberger
b6fb5109c0 Fix drawing of row/col drag markers in wxGrid
Don't offset the DC in the unwanted direction as this resulted in not
drawing anything at all when the grid was scrolled.

Also fix off by one error in the marker line length.

Closes #22403.
2022-05-07 18:58:07 +02:00
Vadim Zeitlin
6feeed9fe9 Handle transparency to the best of our ability in wxImageList
Don't take the value of "mask" parameter of wxImageList constructor too
prescriptively, it predates support for alpha in wxWidgets by many years
and was never meant to actually suppress using it.

Instead, do the best thing we can in all cases, i.e. use alpha if it's
specified and supported and use mask otherwise. But only create the mask
from light grey colour if we have nothing else if "mask" is true in
wxImageList constructor, as this is a potentially destructive action
that must not be performed if the user has explicitly decided to set
this parameter to false.

Incidentally fix handling of alpha with comctl32.dll v5 (which is used
in the absence of any manifest) by converting it to a mask in this case:
this is not ideal, but better than just using black background as it
happened before, and restores pre-3.1.5 behaviour.

Also simplify the generic version which just has to create the default
mask if necessary and doesn't have to do anything at all in all the
other cases.

Note that these changes required relaxing some of the existing unit
tests as wxMSW implementation now can add alpha channel to the bitmaps
that didn't have it -- but this is a more useful behaviour, and so it
makes more sense to adapt the tests to it rather than doing a less
useful thing just to conform to the tests.

This commit is best viewed with git --color-moved
--color-moved-ws=ignore-all-spac options.

Closes #22349.
2022-05-06 02:12:54 +01:00
Vadim Zeitlin
e75f100841 Make GetImageListBitmap() member of wxGenericImageList too
Just simplify the code a little by avoiding having to pass m_useMask and
m_size to all calls of this function.

No real changes.
2022-05-06 02:12:54 +01:00
DietmarSchwertberger
ec737396d8 Unify wxGrid code for processing row and column mouse events
Reuse the same code for handling mouse events for both rows and columns
instead of duplicating almost (but not quite) the same code for both of
them.

As part of resolving the inconsistencies between the two versions, add
wxEVT_GRID_ROW_AUTO_SIZE corresponding to the existing event with the
same name for the columns.

Closes #22380.
2022-05-05 17:23:45 +02:00
Vadim Zeitlin
10b49c9084 Avoid using invalid column/row indices when repainting empty grid
Even the normally safe internalYToRow() and internalXToCol() functions
can still return an invalid index when the grid is empty, i.e. when
there are no valid indices at all, so check for their return value
before using it as an argument to Get{Row,Col}Pos() that would
(correctly) assert when passed an invalid value.

This fixes a regression inadvertently introduced by 3719ab3725 (Add
support for rearranging wxGrid rows order interactively, 2022-04-02)
which added non-trivial GetRowPos().
2022-05-02 21:56:49 +01:00
Vadim Zeitlin
b585ef67af Consistently write loops over wxRegionIterator in the same way
Standardize on a single loop for all versions of it and prefer to use
"for" loops with the iterator increment directly in the loop statement
instead of using "while" loops with the increment somewhere inside the
loop, where it could be possibly skipped by a "continue" statement.

No real changes.
2022-05-02 21:52:25 +01:00
Vadim Zeitlin
bdfa9359ae Move wxGrid::Get{Row,Col}Pos() out of line
Don't define these functions in the header file, this is unnecessary.

No real changes.
2022-05-02 21:43:42 +01:00
Vadim Zeitlin
d64ba81378 Merge branch 'dc-cleanup'
Some cleanup in wxDC code: remove unnecessary casts, use RAII helpers
instead of manual memory and other resources management.

No real changes.

See #22378.
2022-05-01 03:11:06 +02:00
utelle
1c65e88221 Replace references to wxLocale by wxUILocale
Use newer wxUILocale class directly instead of using wxLocale functions
that forward to it anyhow.

No real changes.

Closes #22375.
2022-05-01 03:02:26 +02:00
Vadim Zeitlin
eb5ad7255c Merge branch 'shared-client-data'
Allow sharing client data in wxGrid-related classes.

See #22369.
2022-05-01 02:55:36 +02:00
Vadim Zeitlin
9a36e26d4a Merge remote-tracking branch 'MaartenBent/wxdc-dpi'
Make wxDC and wxGraphicsContext DPI aware, i.e. add {From,To}DIP() to
them too and make the values returned from Get{DPI,PPI}() consistent
with wxWindow.

Also improve CMake build: add support for finding Cairo when not using
GTK, fix a warning when creating the inplace-config, and mark some
variables as advanced.

See #22346.
2022-05-01 02:53:12 +02:00
Vadim Zeitlin
6383bc39ff Add convenient wxDCImpl::CalcBoundingBox() overloads and use them
No real changes, just make the code updating the bounding box slightly
shorter by providing convenient and slightly higher-level overloads.

For now these functions are only in wxDCImpl, it's not clear if we
really need them in wxDC, so don't add them to the public API.
2022-04-30 20:51:53 +01:00
Maarten Bent
dc5fe63cb2 Don't implement FromDIP and ToDIP in headers 2022-04-29 00:38:46 +02:00
Vadim Zeitlin
e2a5c1ffc8 Don't provide wxSharedClientDataContainer::m_data accessors
This is not really necessary and breaks encapsulation of this private
method. It is enough to provide just a way to copy the data from another
object as this is all that the derived classes really need.
2022-04-28 00:36:40 +02:00
Frode Roxrud Gill
f646e8b11c Allow cloning client data stored in wxGrid attributes etc
Add wxSharedClientDataContainer class storing ref-counted client data
and use it instead of plain wxClientDataContainer in wxGridCellAttr,
wxGridCellEditor and wxGridCellRenderer classes.

This allows to keep the same client data associated with many grid cells
without having to make many copies of it.
2022-04-28 00:28:58 +02:00
DietmarSchwertberger
1b158caa83 Improve usability of wxGrid actions using mouse dragging
Implement auto scrolling and handle ESCAPE to cancel the actions done by
dragging the mouse, such as resizing or selecting an area.

Closes #22292.
2022-04-27 19:09:40 +02:00
Maarten Bent
d2366b2eb0 Fix printing at high DPI on GTK3 and when saving as postscript 2022-04-26 21:25:55 +02:00
Maarten Bent
bb91534cb3 Use different method to get CGContextRef on Cairo renderer 2022-04-26 21:25:50 +02:00
Maarten Bent
77a61569a8 Restructure Cairo font initialization
Add some comments explaining why things are done.
2022-04-26 21:25:50 +02:00
Maarten Bent
a98104c1f0 Fix wxRichToolTipPopup size at non-system DPI displays
Move the popup to the display where it will be shown, so the size
calculations are based on the correct DPI.

Also adjust the tip size to the current DPI.

Closes #22361.
2022-04-25 22:16:21 +02:00
Maarten Bent
bf4e45fc67 Fix Cairo DPI when no wxWindow is associated
Always multiply with the content scale factor, also on macOS.
2022-04-24 18:47:50 +02:00
Maarten Bent
6637811f32 Fix saving bitmap with cairo renderer on macOS 2022-04-21 22:04:10 +02:00
Maarten Bent
acc32082e8 Improve DPI support in wxMSW wxCairoRenderer
Drawing sample looks correct on Windows and Linux GTK3 at 200% scaling,
and correct DPI is returned.
2022-04-20 20:33:29 +02:00
Maarten Bent
5bea1dc18a Fix static build using extended RTTI
Fix declaration of 'o' hides previous local declaration warnings.

Change two wxCONSTRUCTOR_5 definitions using wxBitmapBundle instead of
wxBitmap (this does not give build errors).

wxGenericCalendarCtrl is missing all XTI implementations, so just use
RTTI. And fix building the xti sample.

Note the shared build still fails due to WXDLLIMPEXP related issues.

Closes #22300.

Closes #22301.
2022-04-14 23:17:05 +02:00
DietmarSchwertberger
7f8f2a9aa3 Fix asserts when changing columns of wxGrid using native header
The number of columns has to be changed after updating the m_colAt and
m_colWidths arrays, as the native header uses them.

This extends the changes of a2d65663a0 (Fix assert when adding columns
to wxGrid using native header., 2013-05-31) to inserting and deleting
the columns too.

See #15225.

Closes #22294.
2022-04-10 16:14:58 +02:00
AliKet
68b65c7333 Fix synthetic mouse events produced by wxAutoScrollTimer
Simplify the code translating from screen to client coordinates and make
it correct by using ScreenToClient() directly instead of emulating it
manually, which doesn't work quite right, at least in wxGTK.

Closes #22289.
2022-04-08 00:14:28 +02:00
DietmarSchwertberger
3719ab3725 Add support for rearranging wxGrid rows order interactively
Add EnableDragRowMove() function and wxEVT_GRID_ROW_MOVE, similarly to
the existing column function and event.

Closes #22260.
2022-04-07 17:39:56 +02:00
Tobias Hammer
9991a8b490 Enable wxCheckListBox in wxDebugReportDialog
It was wrongly guarded by wxUSE_OWNER_DRAWN but there are wxCheckListBox
implementations available for most platforms. Use correct
wxUSE_CHECKLISTBOX instead.

Closes #22263.
2022-04-03 20:14:31 +02:00
Paul Cornett
0ac60175b0 Use wxINVERT for drawing generic wxCaret when possible
This now works after recent fixes, although wxINVERT does not
work with wxGraphicsContext-based wxDC. So this is mainly for GTK2,
only about 20 years late.
2022-03-31 08:11:27 -07:00
Paul Cornett
d51f274e1c Avoid drawing generic wxCaret outside of its bounds
Outline caret rectangle needs to be inset so that its outer
edge is the same as the solid caret when window is scaled.
2022-03-31 07:46:28 -07:00
Paul Cornett
228bbbf93a Create generic wxCaret backing bitmap with correct scale
Fixes degraded appearance of scaled window contents under caret
2022-03-30 09:04:19 -07:00
Vadim Zeitlin
74fa410b81 Merge branch 'generic-dialogs-cleanup'
Simplify generic dialogs code and make them more consistent with each
other.
2022-03-28 00:58:44 +02:00
Paul Cornett
9af728caea Minor simplification in generic wxCaret
Only create wxMemoryDC if it's actually needed.
2022-03-27 13:54:46 -07:00
Paul Cornett
03bf61be3c Fix drawing caret on GTK3 with GDK_SCALE=2
Don't use pen when drawing solid rectangle, avoids partial outline left on window.
2022-03-27 13:49:00 -07:00
Vadim Zeitlin
debd3f338b Use high DPI icons in wxInfoBarGeneric if appropriate
Just switch to using wxArtProvider::GetBitmapBundle() instead of
GetBitmap() which returned standard-sized bitmap that was upscaled
later.

See #18822.
2022-03-24 21:40:44 +01:00
Vadim Zeitlin
387981e373 Merge branch 'generic-dvc-fixes'
Fixes to generic wxDataViewCtrl under GTK.

See #22220.
2022-03-24 21:39:09 +01:00
Ilya Sinitsyn
7966eaf268 Fix nodes duplication in the generic DVC implementation
Don't create a subtree in `FindNode()` and just return as the subtree
will be realized when a parent node will be expanded.
2022-03-25 01:05:09 +07:00