Commit Graph

39030 Commits

Author SHA1 Message Date
Vadim Zeitlin
ebb6f89e13 Fix wxMSW build error with wxUSE_UXTHEME==0
Explicitly include <commctrl.h> instead of relying on it being done
implicitly by wx/msw/uxtheme.h, as this doesn't happen when
wxUSE_UXTHEME is 0.

Closes #18702.
2020-03-24 03:22:13 +01:00
Vadim Zeitlin
9b36924258 Merge branch 'generic-treectrl-fixes'
Several improvements to generic wxTreeCtrl.

See https://github.com/wxWidgets/wxWidgets/pull/1765
2020-03-19 01:13:49 +01:00
Vadim Zeitlin
10c51dbf28 Avoid spurious asserts when holding arrows in GTK wxSpinButton
The change in the value can be greater than 1 when the arrows are held
pressed, contrary to what the logic of determining the wraparound added
in 086793ceef supposed.

Replace this with a check of whether we switch from the min value
directly to the max one or vice versa, which mostly works and avoids
asserts, even if it can still fail and produces wrong events when the
arrows are held pressed for long enough to increase the delta to the
range of the control, in which case we just can't distinguish between
wraparound and passing from min to max (or vice versa) in a single step,
which means that we have no way to determine the right event to send.
But producing a wrong event is better than asserting, so this still
counts as an improvement.

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

See #17957.

Closes #18695.
2020-03-19 01:11:06 +01:00
Vadim Zeitlin
34ade14c0f Avoid data races on wxMutexInternal::m_owningThread under Unix
This variable was written to and read from different threads without any
synchronization, which resulted in tons of TSAN warnings -- in addition
to being incorrect, of course.

Fix this by using C++11 atomic type for it if available and just not
doing anything otherwise, as there doesn't seem to be any simple
workaround for this problem without an atomic 64 bit type that our own
wx/atomic.h doesn't currently provide.
2020-03-18 19:34:16 +01:00
Anton Triest
6b04c9938d Improve behaviour of Left/Right arrow keys in wxGenericTreeCtrl
Make the left arrow collapse the item if it's currently expanded before
falling back to its previous behaviour of going to the item parent and
the right arrow to go to the first child if the item is already
expanded.

This is compatible with the native MSW control behaviour, but mostly
just more useful and convenient.

Closes #18684.
2020-03-16 00:55:04 +01:00
Anton Triest
730b3d1a44 Allow accepting edit with Numpad Enter key in wxTreeCtrl too
This key should work in the same way as normal Enter key and accept the
changes.

Closes #18682.
2020-03-16 00:34:31 +01:00
Anton Triest
0c6d6e6472 Fix deselecting items on branch toggle in wxTR_MULTIPLE control
Don't deselect all the other items when an item is collapsed or expanded
in wxGenericTreeCtrl with wxTR_MULTIPLE style, this was completely
unexpected and seems to have been accidentally introduced back in
35cf1ec63c

Closes #18680.
2020-03-16 00:30:41 +01:00
Vadim Zeitlin
8bc830337c Slightly optimize Shift/Control-clicking in wxTR_MULTIPLE case
Don't call GetSelections() unnecessarily if we're not going to use its
result in any case because either Shift or Command/Control key was
pressed when the mouse button was released.

See #18680.
2020-03-16 00:27:12 +01:00
Vadim Zeitlin
2f05f5e2eb Remove unnecessary commented out test
This test remained since 902725eefe but
should have been simply removed back then, as we return if the item is
null due to a test above.

No real changes.
2020-03-16 00:24:03 +01:00
Vadim Zeitlin
eaaad6471d Merge branch 'aui-delete-tool'
Provide work around for surprising behaviour of
wxAuiToolBar::DeleteTool().

Closes https://github.com/wxWidgets/wxWidgets/pull/1758
2020-03-15 17:10:41 +01:00
Vadim Zeitlin
700eaff131 Add wxAuiToolBar::DestroyTool() and DestroyToolByIndex()
These new functions destroy the associated window too, unlike the
existing DeleteTool() and DeleteByIndex().

Closes #16552.
2020-03-15 17:09:51 +01:00
ali kettab
40cbea298d Make wxGrid::SetLabelXXX() work when using native header as well
Allow changing label colours and font of the native column header too.

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

Closes #18605.
2020-03-13 00:43:34 +01:00
followait
95eea38eb0 Fix bug when resetting wxListCtrl column header image in wxMSW
Set LVCFMT_IMAGE, meaning that the column just uses an image from the
image list, instead of LVCFMT_COL_HAS_IMAGES, meaning that the column
contains the image from the image list and do not set LVCF_IMAGE when
resetting the image, as this still reserved space for the (invalid)
image, resulting in an extra blank area in the column header.

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

Closes #18617.
2020-03-12 23:54:29 +01:00
Vadim Zeitlin
c4a95ab32c Merge branch 'grid-live-resize'
Implement live-resizing of rows/columns in wxGrid.

See https://github.com/wxWidgets/wxWidgets/pull/1754
2020-03-12 23:09:48 +01:00
Paul Cornett
81309f083d Ensure that scrollbar GtkRange page increment is set to a positive value
It should not be less than the step increment, which is always one.
See #18688
2020-03-11 22:10:22 -07:00
Vadim Zeitlin
13b6b9ef18 Merge branch 'd2d-drawbitmap' of https://github.com/MaartenBent/wxWidgets
Fix DrawBitmap() in Direct2D renderer to resize the bitmap if necessary.

See https://github.com/wxWidgets/wxWidgets/pull/1752
2020-03-11 23:20:56 +01:00
Yuri D'Elia
f9b793f8d1 Check for valid entry in wxTextEntry::EnableTextChangedEvents()
GetTextObject() might return null, e.g. it does it for read-only
wxBitmapComboBox, so EnableTextChangedEvents() must account for this
possibility, as it's not really possible to avoid calling it in this
case, as it's called indirectly from e.g. SetSelection().

Check that the entry is valid before enabling or disabling events for it
to avoid several GLib assertion failures every time when e.g.
wxBitmapComboBox::SetValue() is called.

Closes https://github.com/wxWidgets/wxWidgets/pull/1756
2020-03-11 22:30:55 +01:00
Vadim Zeitlin
8b2237cd2d Make row/column drag-resizing in wxGrid "live"
Update the column width immediately, as it's being dragged, instead of
drawing a temporary line showing the new column boundary using wxINVERT.

This results in better user experience, as it the effect of changing the
column width can be immediately seen (especially important for non-left
aligned columns or columns using ellipsizition) and, equally if not more
importantly, fixes wxGrid drag-resize not showing any visible UI at all
with wxGTK3 and wxOSX where wxINVERT is not implemented.
2020-03-11 22:00:01 +01:00
Vadim Zeitlin
3d1de5c31b Make interface between wxGridHeaderCtrl and wxGrid more explicit
Rename the functions used from wxGridHeaderCtrl event handlers to start
with DoHeader prefix to make it clear that they're (only) used by it in
an attempt to make things more clear and more uniform.

No real changes.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
52b7267aac Add wxGrid::m_dragMoveCol field separate from m_dragRowOrCol
Don't reuse the same m_dragRowOrCol variable for both the index of the
row or column being drag-resized and for the index of the column being
drag-moved. Reusing it was confusing and made it more difficult what the
code was doing and what invariants were preserved in it, and just wasn't
worth saving a few bytes per wxGrid object.

No real changes.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
05c5891bf6 Slightly simplify wxGrid refresh logic
Use new ShouldRefresh() helper instead of testing for !GetBatchCount()
before calling Refresh().

Also check for GetBatchCount() inside CalcDimensions() itself, which
means that it can now be called unconditionally.

No real changes.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
15de1a4cf4 Optimize refresh when resizing grid rows or columns
This avoids visible flickering of column/row labels when row/column is
interactively resized.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
a004b8ba24 Remove unnecessary Refresh() from wxGrid::DoEndDragResizeLine()
The grid is completely refreshed by the call to SetLineSize(), so doing
it again here is completely unnecessary.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
ebbadae09a Double buffer wxGridWindow drawing
This eliminates noticeable flicker under MSW when changing selection,
for example.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
c2b0edefbd Also remove unused wxGrid wxEVT_ERASE_BACKGROUND handler
It is never used anyhow, as wxGrid is entirely covered by its children
windows.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
e671386d1a Use wxBG_STYLE_PAINT for wxGridWindow
This is more explicit, efficient and simpler than defining an empty
wxEVT_ERASE_BACKGROUND handler, which is not needed any longer.
2020-03-11 21:59:15 +01:00
Vadim Zeitlin
a5807b8fcf Remove unnecessary wxGrid::OnPaint()
This method was explicitly defined to do nothing, so just remove it.

No real changes.
2020-03-11 21:59:15 +01:00
Anton Triest
e1dcfc73d1 Don't show selected tree item when using multiple selection
This is appropriate for single selection, where the selected item is
also always the focused one, but not in the multiple selection case.

And wxMSW native version already behaves like this, so this makes the
generic one consistent with it.

Closes #18691.
2020-03-11 00:01:47 +01:00
Vadim Zeitlin
931f4b8d20 Rename local variable in wxAUI to not have "m_" prefix
This was just confusing, as only member variables are supposed to use
this prefix.

No real changes.
2020-03-10 23:18:48 +01:00
Vadim Zeitlin
ec36eb990b Avoid code duplication in wxAuiToolBar::DeleteTool()
Delegate to the existing DeleteByIndex() instead of repeating its code
in DeleteTool().

No real changes, this is just a refactoring.
2020-03-10 22:32:05 +01:00
Maarten Bent
c85da7e06f Fix DrawBitmap in Direct2D renderer
When the bitmap is larger than the draw area, it should be resized. Do this by
providing the correct size parameters for ID2D1RenderTarget::DrawBitmap.

Also update DrawBitmap code guarded with wxD2D_DEVICE_CONTEXT_SUPPORTED so it
will compile successfully when enabled. However, the drawing behaviour is,
and was, different from the normal behaviour. It does not resize the bitmap.

Closes #18686
2020-03-10 21:04:15 +01:00
Artur Wieczorek
7c6d816d4a Add support for private fonts in Direct2D renderer
Since it appears it's not possible to create DirectWrite fonts with
IDWriteGdiInterop::CreateFontFromLOGFONT() for fonts registered with
AddFontResourceEx() as private ones (with FR_PRIVATE flag), we need to
maintain a custom DirectWrite font collection and use it as source of
font data if call to CreateFontFromLOGFONT() fails. This collection
consists of IDWriteFontFileEnumerator and IDWriteFontCollectionLoader
objects which are seeded with font data based on the private fonts list
taken from wxGetPrivateFontFileNames().

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

Closes #18687.
2020-03-10 02:43:32 +01:00
Artur Wieczorek
c124a43fc1 Fix disposing private fonts in GDI+ renderer
PrivateFontCollection with installed private fonts has to be deleted when
GDI+ is still active, otherwise access violation exception is thrown.
2020-03-07 11:29:14 +01:00
Vadim Zeitlin
61277424d7 Merge branch 'brush-transparency-wxsvgfiledc' of https://github.com/MaartenBent/wxWidgets
Improve brush transparency in wxSVGFileDC.

See #1275, #1748.
2020-03-06 01:03:40 +01:00
Vadim Zeitlin
c09fd8b59d Update copyright years to 2020
Just run misc/scripts/inc_year and commit the results.

Closes #18690.
2020-03-06 00:51:39 +01:00
Jouk
c42715f0c9 define WXBUILDING when compiling the library on OpenVMS 2020-03-05 08:15:04 +01:00
Maarten Bent
759723795e Support transparency for brush patterns in wxSVGFileDC
Include the alpha value in the pattern name.
2020-03-01 22:29:18 +01:00
Maarten Bent
7d2f6b4608 Fix brush pattern when transparent pen is set in wxSVGFileDC
Use the default stroke settings when defining the brush pattern.
2020-03-01 22:12:03 +01:00
oneeyeman1
bdceda3c6d Adjust columns widths when adding rows to wxOSX wxDataViewCtrl
Call AdjustAutosizedColumns(), just as it was already done when updating
or deleting the rows.

Closes https://github.com/wxWidgets/wxWidgets/pull/1746
2020-02-29 15:47:30 +01:00
Lauri Nurmi
109fd955a9 Fix wrong indentation in OSX wxPowerResource code
No real changes, just reindent power.mm correctly.

Closes https://github.com/wxWidgets/wxWidgets/pull/1744
2020-02-29 15:41:29 +01:00
Tobias Taschner
613687ecb5 Updated wxWebViewEdge for SDK 0.9.430
This first beta release of the WebView2 SDK has many identifiers
renamed and webview interfaces split to Host and WebView.

Closes https://github.com/wxWidgets/wxWidgets/pull/1743
2020-02-29 15:40:45 +01:00
Kvaz1r
acff8466a7 Hide page removed from wxAuiNotebook
It doesn't make sense to leave the page shown, and overlapping the
remaining pages, after removing it.

Closes https://github.com/wxWidgets/wxWidgets/pull/1742
2020-02-29 15:38:50 +01:00
Vadim Zeitlin
fce84f7bd0 Merge branch 'temp-ffile'
Add wxTempFFile class.

Closes #18673.

See https://github.com/wxWidgets/wxWidgets/pull/1739
2020-02-23 01:46:51 +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
Dummy
3e0780e811 Add wxTempFFile, similar to wxTempFile but using buffered I/O
Also add wxTempFFileOutputStream.

Closes #18673.
2020-02-21 14:52:40 +01:00
Paul Cornett
05d19797a5 Revert to using our own drag-move code for wxGTK wxMiniFrame with non-Wayland backends
At least one WM (KDE's KWin) does not generate X11 configure events when dragging
a window using gtk_window_begin_move_drag(). We need the configure events so we
can generate wxMoveEvent, which AUI needs in order to re-attach a floating pane.
This is functionally a revert of b8789b9d6f for backends other than Wayland.
See #18372 #18669
2020-02-19 20:26:08 -08:00
Steve Browne
e4dcc4850c Fix wxStaticBox appearance in high DPI in wxMSW
wxStaticBox using custom foreground color was drawing text in wrong
place when using DPI scaling due to scaling the various offsets in our
code, even though Windows itself doesn't do it.

Fix this by following what Windows does and not scaling anything.

Closes https://github.com/wxWidgets/wxWidgets/pull/1738
2020-02-19 22:15:45 +01:00
Vadim Zeitlin
80141760e8 Avoid harmless unused parameter warning in wxUniv build
Just add wxUnusedVar() to suppress it.
2020-02-17 19:49:35 +01:00
Vadim Zeitlin
3a15e9f943 Fix cast in wxWindowMSW code in wxUniv build
Cast "this" to wxWindowMSW, which is always its correct type, even in
wxUniv builds.

Closes #18670.
2020-02-17 19:49:24 +01:00
Vadim Zeitlin
a4906f1222 Change wxGetTopLevelParent() to take wxWindowBase
This makes it more convenient to use when building wxUniv, when
wxWindow$TOOLKIT objects are wxWindowBase but not actually wxWindow.

No real changes.
2020-02-17 19:49:23 +01:00