Commit Graph

38589 Commits

Author SHA1 Message Date
Vadim Zeitlin
ed57a9ab7b Fix wxSlider::SetSize(-1, -1, -1, -1) under Mac
Instead of doing basically nothing, this call completely mislaid out the
control as -1 were used used literally instead of meaning "use the
current geometry", as they're supposed to. Fix this by handling
arguments with the value of -1 specially.

Such call was done by wxCompositeWindow::SetLayoutDirection() used by
the widgets sample and explained why the slider couldn't be seen when
switching to its page in this sample.

Closes #18442.
2019-10-22 19:28:02 +02:00
Vadim Zeitlin
5d8fdcb874 Refactor common code into reusable MacGetPrinterName() function
No real changes, just add a simple helper function instead of
duplicating it in 2 different places.

This also provides a unique place to write the comment explaining why
PMPrinterGetID() is being used instead of PMPrinterGetName().

See #16774.
2019-10-22 02:55:49 +02:00
cosminp
7fa0074e1d Use unique printer ID as its name under macOS
Apparently, the user-readable name retrieved by PMPrinterGetName() is
not necessarily unique when multiple printers are available, so use
PMPrinterGetID() which is guaranteed to return a unique string.

Closes #16774.
2019-10-22 02:51:34 +02:00
Stefan Csomor
235e61c311 Implement macOS-specific wxDataViewCheckIconTextRenderer
This implementation suffers at least from 2 problems:

1. It doesn't support icons at all.
2. It toggles the checkbox when clicking on the text and not just on the
   checkbox itself, as would be expected.

but it's still better than the current version which simply doesn't work
at all, i.e. can't be toggled in any way (and also doesn't draw itself
correctly when using dark mode under macOS 10.14+), so use it for now.

A better solution would be to fix the problem with ActivateCell() not
working at all (see #17746) and update the code to respect drawing in
dark mode.

Closes #17473.

Closes https://github.com/wxWidgets/wxWidgets/pull/904
2019-10-21 21:14:54 +02:00
Vadim Zeitlin
8b95467256 Avoid crashing when using wxOverlay under macOS 10.14
Retain the graphics context for the helper overlay window as otherwise
it gets released leaving us with a dangling pointer.

Unfortunately this still doesn't make the existing code actually work.

See #18399.
2019-10-21 21:14:54 +02:00
Vadim Zeitlin
ad6799f249 Merge branch 'grid-uitests-gtk'
Fixes to wxUIActionSimulator allowing the tests using it to work for
wxGrid in wxGTK.

And some improvements and bug fixes to wxGrid itself.

Closes https://github.com/wxWidgets/wxWidgets/pull/1609
2019-10-21 21:12:01 +02:00
Ian McInerney
f867b04571 Recognize macOS 10.15 in wxGetOsDescription()
Closes https://github.com/wxWidgets/wxWidgets/pull/1613
2019-10-21 17:16:17 +02:00
Vadim Zeitlin
248d4a8631 Fix size of the last column after the previous commit
The loop computing "colswidth" (the sum of widths including last column)
actually incorrectly computed "lastColX" (the sum of widths until the
last column), fix this.

See #18295.
2019-10-19 23:00:58 +02:00
Vadim Zeitlin
6af316b537 Auto size last visible column in generic wxDataViewCtrl
Resize the last visible column and not just the last column, which might
be hidden, to fill up all the available space.

See #18295.
2019-10-19 22:02:20 +02:00
Vadim Zeitlin
c6d2f6d9fe Really fix the standard button size in high DPI under MSW
Use "relative pixels" (known as DIPs in wx) instead of dialog units, as
the latter ones don't scale correctly due to rounding errors when using
high DPI.

Also take into account the fact that the 1px invisible border around the
visible part of the buttons is not scaled by the standard control, so
don't apply scaling to this part when determining the best size neither.

Closes #18528.
2019-10-19 21:41:18 +02:00
Vadim Zeitlin
20a8b04655 Don't increase the button height in wxMSWButton::GetFittingSize()
This results in buttons being forced to be too tall when using high DPI
and is useless anyhow, as all callers of this function deal with the
height by increasing it to the minimum acceptable value already (or
discard it entirely in wxMessageDialog::AdjustButtonLabels()).

See #18528.
2019-10-19 21:41:19 +02:00
Vadim Zeitlin
4fac71fc29 Merge branch 'per-monitor-dpi-aware-controls-3' of https://github.com/MaartenBent/wxWidgets
Add, or improve, per-monitor DPI awareness to/for more controls.

See https://github.com/wxWidgets/wxWidgets/pull/1589
2019-10-19 20:10:05 +02:00
Vadim Zeitlin
16619c5e77 Use DIPs for the margins around text in wxGrid columns
Improve the appearance on high DPI displays where the margins were
previously too small under MSW.
2019-10-19 18:31:50 +02:00
Vadim Zeitlin
f29b6564b1 Really fix recent regression in grid content autosizing
Fix autosizing broken in 3c72396a36 and
not fully fixed by f7e335c031.

Simplify the code to make it more obviously correct, by separating the
computation of the extent suitable for the label and determining the
size to use taking into account the extents of both the column data and
the its column.

Also add the unit test checking that auto-sizing works correctly in all
the different cases.

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

Co-Authored-By: Ilya Sinitsyn <the_siv@mail.ru>
2019-10-19 18:28:03 +02:00
Artur Wieczorek
b2ad5aa1d9 Get rid of unnecessary cast
Parameter is already of HDC type so this cast is unnecessary and can be removed.
2019-10-18 19:23:52 +02:00
Artur Wieczorek
2b331a9463 Optimize drawing owner-drawn button
We have an optimized function to draw horizontal/vertical lines on DC with a non-rotated coordinate system so we can use it for drawing button frames.
2019-10-18 18:06:12 +02:00
Artur Wieczorek
147fc16f1e Optimize drawing cross hair
We have an optimized function to draw horizontal/vertical lines on DC with a non-rotated coordinate system so we can use it for drawing cross hair.
2019-10-18 18:06:12 +02:00
Artur Wieczorek
bae8bb4c45 Optimize drawing horizontal/vertical lines
On DC with a non-rotated coordinate system drawing a filled rectangle with ExtTextOut() Win API is faster than drawing a line with MoveTo()/LineTo() so on such DCs we can use ExtTextOut() to draw horizontal/vertical lines with solid colors and square ends instead of calling MoveTo()/LineTo().

See #18517.
2019-10-18 18:06:12 +02:00
Vadim Zeitlin
b4dee76b4c Set focus to the main grid window in wxGrid::SetFocus()
After changing wxGrid to not inherit from wxPanel, this needs to be done
explicitly now.
2019-10-18 04:00:46 +02:00
Vadim Zeitlin
9a424602e4 Stop deriving wxGrid from wxPanel
This is unnecessary as TAB navigation is not supposed to work between
wxGrid children and actually harmful as this resulted in SetFocus()
doing nothing, instead of setting focus to wxGridWindow, if the focus
was on wxGrid itself for some reason (this happened at least in the grid
unit tests and resulted in failures because the in-place editor didn't
appear as expected).
2019-10-18 04:00:46 +02:00
Vadim Zeitlin
8ed116bdc6 Use a hack to work around mouse click emulation bug with GTK 3
Somehow, mouse release events generated immediately after the mouse
press ones are sometimes (not always, but often enough to reliably
prevent the test suite from passing) simply lost, i.e. not received by
the GTK event loop.

The only workaround seems to be to introduce an artificial delay, which
does avoid the problem, at the price of making the tests run longer and,
worse, not really solving the underlying problem, whatever it is. But
it's still better than nothing.
2019-10-17 22:05:17 +02:00
Vadim Zeitlin
7a980c455e Fix crash in wxDataViewTreeCtrl::DeleteAllItems() in wxGTK
Restore the checks for the model stamp, reverting the changes of
18594afe76: we still need to ignore the
calls to at least iter_children() and iter_nth_child() model methods
that can be called from inside gtk_tree_view_set_model() when we reset
the model, as running these methods crashes when trying to use the
pointers to already deleted items.

For consistency and robustness, add checks for the model stamp to all
the methods and not just those two, just in case other ones end up being
called later in some way.

Also add a unit test checking that DeleteAllItems() doesn't crash and
does delete all items.

Closes #18533.
2019-10-17 14:57:04 +02:00
Thomas Klausner
a3212b35f6 Fix udata type in wxFileSystemWatcher code under NetBSD 10
The previous fix in 5442edbbe9 corrected
the type for the older NetBSD versions, but not NetBSD 10, which now
uses "void*", as all the other platforms, so restrict the original fix
to NetBSD versions < 10 only.

See #18199.
2019-10-16 23:23:31 +02:00
Vadim Zeitlin
29be54d76e Define all stock colours using their fixed RGB values
For some reason, names were used for cyan and light grey, even though
all the other ones used RGB values since refactoring the stock objects
to be created on demand in f516d98637.

Use RGB values for these two as well now.

Closes #18530.
2019-10-15 23:13:04 +02:00
Vadim Zeitlin
f65133a41f Call XFlush() after simulating mouse button events too
For some reason, mouse press events were still received without
flushing, but mouse release ones were not received by GTK itself (and a
fortiori by wxGTK) without it.
2019-10-15 00:07:38 +02:00
Vadim Zeitlin
1df0b0ac99 Use "CurrentTime" symbolic constant in XTestFakeXXXEvent()
No real changes, just replace "0" with a more clear constant.
2019-10-14 23:59:34 +02:00
Paul Cornett
cfdcc3c29d Remove unreachable code 2019-10-14 09:32:40 -07:00
Paul Cornett
29e0da97d1 Remove invalid flag from HDITEM mask
HDF_LEFT is zero, so it had no effect, but it doesn't belong there
2019-10-14 09:27:50 -07:00
Paul Cornett
a3598ba33f Remove unnecessary copy ctors/copy assignment operators
C++11 deprecates having one without the other.
Eliminates many, many GCC -Wdeprecated-copy warnings.
2019-10-14 09:07:21 -07:00
Maarten Bent
05e0fad687 Resolve some recently introduced warnings 2019-10-13 08:34:30 -07:00
Paul Cornett
127ec4dd7f Build fixes for various wxUSE_* macros ==0 2019-10-12 09:22:02 -07:00
Paul Cornett
0cced058d8 Fix linking when wxUSE_VALIDATORS==0
The changes from 25e9be6873 don't work, at least with GCC 9, as the compiler
seems to be removing the definition of the wxDefaultValidator variable.
2019-10-12 09:18:19 -07:00
Vadim Zeitlin
6530886d31 Call XFlush() after simulating key press in wxGTK
This makes simulating keys much more reliable, previously they were just
completely lost (i.e. never resulted in key-press-event signal being
generated by GTK) sometimes.
2019-10-12 17:27:05 +02:00
Vadim Zeitlin
5e3ba81bbf Revert accidentally committed wxGrid changes
These changes were included in 18e05aeeee
accidentally, revert them for now (they will be recommitted later with a
proper commit message).

See https://github.com/wxWidgets/wxWidgets/pull/1601
2019-10-12 16:08:24 +02:00
Maarten Bent
591136c7bc Improve button heights at high DPI on wxMSW
Don't use FromDIP together with ConvertDialogToPixels, because the font height
is already adjusted to the DPI.
Also limit the button height at higher DPI. Because the height determined by
ConvertDialogToPixels is higher than standard buttons use on Windows.

Closes #18528
2019-10-11 22:30:34 +02:00
Artur Wieczorek
92cab3d20a Use proper macros to translate logical to device y-coordinates
Fortunately these macros do nothing but invalid names here could be misleading.
2019-10-11 19:02:15 +02:00
Vadim Zeitlin
a668db8b64 Do nothing in wxListCtrl::SetDoubleBuffered() in wxMSW
Setting WS_EX_COMPOSITED, as the base class version does, just results
in visual artefacts and is useless, as we turn on LVS_EX_DOUBLEBUFFER
already, if it's supported, anyhow.

So don't break the display if people call SetDoubleBuffered() in the
mistaken belief that it does something useful in this case.
2019-10-11 15:34:49 +02:00
Olly Betts
18e05aeeee Remove no-op uses of wxNO_FULL_REPAINT_ON_RESIZE
This behaviour has been the default and this constant 0 since
e441e1f4e8 which was over 16 years ago.

Closes https://github.com/wxWidgets/wxWidgets/pull/1601
2019-10-11 14:12:43 +02:00
Artur Wieczorek
bf4640f1d8 Fix drawing cross hair on wxDC
There is no need to draw cross hair lines within the entire viewport because only the part inside the current clipping region will be actually drawn. This way we can also avoid working with huge numeric values of coordinates (VIEWPORT_EXTENT = 2^27-1) which apparently are not handled properly by LineTo() API.

Closes #18526.
2019-10-10 20:34:17 +02:00
Maarten Bent
a0359a23ff Fix wxSTC compilation without precompilead headers
Get and release the HDC, instead of using WindowHDC. Because stc.cpp is used on
all platforms, don't include wxMSW specific wx/msw/private.h.

Also use const int for the variables.
2019-10-10 20:28:44 +02:00
Paul Kulchenko
acd7ea6120 Fix AUI toolbar drop down width size in high DPI
Don't apply FromDIP() twice: GetElementSize() already returns the size
in DIPs.
2019-10-10 13:59:26 +02:00
Vadim Zeitlin
cc7c0bbd9c Merge branch 'msw-richedit-paste'
Fix pasting long strings into wxTextCtrl in wxMSW.
2019-10-10 13:56:00 +02:00
Vadim Zeitlin
fabf8d1e8a Revert "Never show tree lines when there are tree buttons under OS X and GTK+"
This reverts commit ec2f175241 because it
doesn't seem useful to forcefully turn off the connecting lines when
wxTR_HAS_BUTTONS is specified: they will still be off by default in
wxGTK and wxMac because wxTR_NO_LINES is part of wxTR_DEFAULT_STYLE, but
will be shown now (as they used to be back in 2.6 days) if a style
excluding wxTR_NO_LINES is explicitly specified.

Closes #11522.
2019-10-10 13:53:34 +02:00
Maarten Bent
5547473acd Remove wxGDIPlusPrintingContext::SetFont, override DPI instead 2019-10-09 22:40:44 +02:00
Maarten Bent
8ceadd3029 Improve wxD2DContext::GetDPI and wxGDIPlusContext::GetDPI
If there is a valid wxWindow, use its DPI. Otherwise use a dedicated function
of the context to get the DPI. Don't use the common wxGraphicsContext::GetDPI
because this will return hard-coded 72 when there is no valid wxWindow.
2019-10-09 22:25:08 +02:00
Maarten Bent
c538e8f9d6 Add wxGraphicsRenderer::CreateFontAtDPI to support font with fractional pixel-size 2019-10-09 22:24:28 +02:00
Ilya Sinitsyn
dc99faa096 Fix focus issue with composite grid editor windows
The grid editor window can be composite, so check whether it or one of
its children focus has focus when determining whether we should set the
focus to the grid when the grid editor is being hidden, otherwise the
focus was simply lost when such an editor was hidden.

Closes https://github.com/wxWidgets/wxWidgets/pull/1599
2019-10-09 19:53:19 +02:00
Vadim Zeitlin
280f80fdfd Update libtiff submodule to fix warnings in Win64 build 2019-10-09 17:03:39 +02:00
Ilya Sinitsyn
86f14a033c Fix the issue with the grid cell editor special chars handling
Some of the grid cell editors (all of them not based on wxTextCtrl
basically, i.e. wxGridCellBoolEditor, wxGridCellChoiceEditor,
wxGridCellEnumEditor) didn't process Esc, Enter and Tab under MSW,
making them inconvenient to use.

Fix this by adding wxWANTS_CHARS style flag to ensure the editors do get
these keys.

Closes https://github.com/wxWidgets/wxWidgets/pull/1598
2019-10-09 16:57:25 +02:00
Vadim Zeitlin
19c6e004ce Don't use g_thread_supported() with non-ancient glib versions
This is useless, as it always returns true (since 2.31), and just
results in warnings about using deprecated macro (since 2.62).

Also remove the now unnecessary warning suppression macros, as
g_thread_init() wasn't deprecated in 2.30 yet, so it shouldn't give any
warnings in glib versions in which it could be actually used.
2019-10-09 15:02:18 +02:00