Commit Graph

35122 Commits

Author SHA1 Message Date
Paul Cornett
fa54e1af15 Be more conservative in avoiding Cairo's maximum coordinate limit.
Fixes wxGCDC::Clear().
See #17584
2016-07-08 22:57:27 -07:00
Artur Wieczorek
9be1251f02 Modified methods used to set/unset wxPGProperty as read-only and to hide/show it.
If there is requested to set/unset a single property (without recursion) as a read-only (wxPropertyGridInterface::SetPropertyReadOnly) or to hide/show it (wxPropertyGridInterface::HideProperty) then first check if property is already in the requested state and if so do nothing. This prevents from unneeded refreshing of the display.
2016-07-08 19:51:02 +02:00
Artur Wieczorek
4f1e3b7172 Fixed setting colours of wxPGProperty
When wxPGProperty's text or background colours are modified with dedicated wxPropertyGridInterface utility functions (SetPropertyBackgroundColour, SetPropertyTextColour, SetPropertyColoursToDefault) then it is enough to redraw the property with new colours because its internal state remains unmodified and full refreshing is not necessary.

Closes #17588
2016-07-08 19:44:32 +02:00
JulianSmart
c7d91d28a9 When collecting common attributes, reset attributes in target that are absent in source 2016-07-07 15:27:08 +01:00
Vadim Zeitlin
4c0e272589 Don't pass parameters to wxSizerXmlHandler::GetGB{Pos,Span}()
This doesn't make sense, these functions can only be ever used with a single
parameter ("cellpos" for the former and "cellspan" for the latter), so just
hard-code it inside the functions themselves.

No real changes, just make the code less confusing.
2016-07-06 18:51:10 +02:00
Vadim Zeitlin
f68c67aa85 Use "pair of ints" type for wxGridBagSizer size and position in XRC
Introduce a new type for XRC values imaginatively called just "pair of
integers" which can be used for values not expressed in pixels and hence for
which it doesn't make sense to use dialog units nor to scale them by the DPI.

Use this new type for wxGridBagSizer position and span elements to prevent
them from being changed when using higher than normal DPI.

Closes #17592.
2016-07-06 18:44:07 +02:00
phallobst
9ae41a0f00 Update position correctly in wxGTK insert-text signal handler
"position" argument is input/output and must point after the newly inserted
text on return, but we didn't do it when handling the insertion specially.

Closes #17591.
2016-07-05 23:45:57 +02:00
Artur Wieczorek
832db47346 Fixed layer management in Direct2D renderer.
ID2D1RenderTarget::PushAxisAlignedClip/PopAxisAlignedClip used to clip the region (with wxGraphicsRenderer::Clip) and ID2D1RenderTarget::PushLayer/PopLayer used to rendering to the transparent layer (with wxGraphicsRenderer::BeginLayer) are non independent but have to be used in the controlled sequences: "A PushAxisAlignedClip and PopAxisAlignedClip pair can occur around or within a PushLayer and PopLayer, but cannot overlap" (and of course finally each Push* call must have a matching Pop* call).
To control the sequence of access to the AxisAlignedClips and Layers there is implemented a wxStack data member holding Clips/Layers parameters which reflects a physical stack of respective Clips/Layers in ID2D1RenderTarget. This way we know in which order to pop and what to pop from ID2D1RenderTarget stack if there is a need to do so.

Closes #17590
2016-07-05 21:58:34 +02:00
Artur Wieczorek
6b7ae05e3f Fixed updating clipping box parameters prior to retrieving the box (MSW).
Empty clipping region doesn't mean that there is no clipping.
2016-07-03 22:40:12 +02:00
Artur Wieczorek
0b8975ac18 Properly reset internal data when destroying clipping region (wxGCDC).
Call ResetClipping() function in wxGCDCImpl::DestroyClippingRegion() to be sure that all internal clipping data are reset properly.
2016-07-03 22:39:26 +02:00
Artur Wieczorek
d50f331a99 Fixed calculation of clipping box with negative size (wxGCDC).
Graphics renderers accept negative clipping box size but for internal calculations done in wxDCImpl::DoSetClippingRegion() we need to have a box defined by (x,y) at top-left corner and having non-negative size so we need to recalculate parameters if necessary.
2016-07-03 22:39:25 +02:00
Artur Wieczorek
dafd0f217b Fixed setting clipping box.
While setting a clipping box there is necessary to intersect it either with current clipping region location if such region exists or with wxDC surface extents if no clipping region is set. This way effective clipping box will be always inside the wxDC surface.
Note: Effective clipping box can be an empty region.

See #17013
2016-07-03 22:39:23 +02:00
Artur Wieczorek
8b07bd1e27 Fixed setting clipping box for wxDC (MSW).
Because CreateRectRgn() Win API requires that (x1,y1) parameters represent the top-left corner of the clipping box so if a box with negative values of the width or height is passed to wxMSWDCImpl::DoSetClippingRegion() (what means that (x,y) doesn't represent top-left corner) we need to recalculate passed parameters to get the box with (x,y) at top-left corner.
2016-07-03 22:39:21 +02:00
Vadim Zeitlin
2543c336b0 Revert "Fix invisible captions in high contrast mode"
This reverts commit 71dfb3b414 which fixed
appearance of the captions in high contrast mode but broke them for wxGTK.

Ideal would be to make this code work in wxGTK too or, in the worst, case only
use this code for wxMSW, but for now at least avoid breaking wxGTK appearance
by default.

See #16186.
2016-07-03 14:38:36 +02:00
Vadim Zeitlin
ebb3a791b9 Revert using an event object for waking up event loop in wxMSW
This reverts 6c40531fb7 ("Make main thread wake
up code more efficient and less error-prone in wxMSW") as, while being more
efficient, the new code doesn't work at all when we're not running the message
loop ourselves as it happens when the user opens a menu or starts resizing a
window because in both cases Windows runs a local message loop dispatching the
messages itself and this message loop doesn't react to our event object being
signalled.

So this approach can't work and needs to be reverted, even if it reintroduces
the danger of overflowing the message queue (see #9053).

Closes #17579.
2016-07-02 14:49:15 +02:00
Vadim Zeitlin
f9df538788 Make empty list boxes narrower by default in wxMSW
Allocating 100px (+ margins) for empty listboxes in wxMSW resulted in a
surprising behaviour when the best size of a listbox became (significantly)
smaller after adding some items to it.

One possible solution could be to ensure that all listboxes are at least as
wide as empty ones, but it seems wrong to insist on always allocating 100+ px
when a listbox could be much narrower.

So try to mitigate the problem by making the empty listboxes narrower by
default which should reduce the chance of them becoming narrower still after
appending some items to them, even if it doesn't completely eliminate it.

Also, as a side effect, this commit replaces non-font-and-DPI-dependent
hard-coded 100px value with a more reasonable value based on text metrics.
2016-07-01 20:37:19 +02:00
JulianSmart
3d4da0ceeb Fix for clipped 16x16 bitmap buttons 2016-07-01 15:37:32 +01:00
JulianSmart
3d8f9517f3 Compare window size size with scaled buffer size 2016-07-01 11:36:30 +01:00
JulianSmart
511923a974 Scaled bitmap and selection click fixes 2016-06-30 20:16:43 +01:00
Vadim Zeitlin
8bb4495d95 Remove mouse capture assert from wxGTK wxWindow dtor
This assert was redundant as a similar check is done in the base class dtor.
And while usually this assert is just annoying, instead of being helpful, when
running the unit test suite which installs a custom assert handler throwing an
exception, it is actively harmful as generating 2 asserts during the
destruction of a window with mouse capture results in immediate termination
(even in C++98 mode, unfortunately the whole idea of throwing from dtor is
probably unsalvageable anyhow when using C++11).
2016-06-29 17:55:17 +02:00
Vadim Zeitlin
83489d6ca1 Fix PCH-less build after the previous commit
Include wx/textctrl.h to get wxTE_PASSWORD definition.
2016-06-28 15:38:49 +02:00
Vadim Zeitlin
3dc54df247 Ignore hints on wxTE_PASSWORD controls when not supported natively
There is no way to show the hint without native support in a control with
wxTE_PASSWORD style, so simply ignore them completely in this case.

Closes #17078.
2016-06-28 14:40:52 +02:00
Vadim Zeitlin
967bdbf994 Use equally-sized buttons in wxMSW horizontal toolbars
Only use TBSTYLE_AUTOSIZE, adjusting each button to the size it really needs,
for the toolbars with wxTB_HORZ_LAYOUT style as they don't have any uniform
button size anyhow.
2016-06-26 18:51:50 +02:00
David Hart
13068d3603 Strip mnemonics from CJK translations of menu items too
Chinese, Japanese etc translations use a special style for the menu mnemonics
and append them to the translated menu label in brackets, e.g. the menu label
could have the form of "<translation-of-file> (&F)".

Check for this style of mnemonics in wxStripMenuCodes() too and strip them as
well.
2016-06-26 18:36:11 +02:00
Vadim Zeitlin
423ad59b00 Replace AddCatalog() overload with defaulted argument
There is no need to have 2 overloads of this function when we could have just
a single one with a default parameter value.
2016-06-26 18:30:32 +02:00
Artur Wieczorek
47791737db Revert code commented out by mistake in f06bfe37.
We need to restore HDC after Cairo operations.
2016-06-23 22:23:05 +02:00
Vadim Zeitlin
093a955fcc Don't make wxBU_EXACTFIT buttons too tall in wxMSW
Fix regression introduced by bd388e9827: bitmap
buttons could now be made significantly taller than the text control height if
their bitmap was big enough. Only make buttons taller if they wouldn't be tall
enough on their own, instead of always increasing their height, even if it's
already big enough.

Closes #17576.
2016-06-23 22:16:26 +02:00
Vadim Zeitlin
ff5981230a Fix crash when resetting wxGrid table with editor control shown
This resulted in a crash in GetDefaultEditorForCell() later when GetEditor()
was called from HideCellEditControl() which is itself always called from
wxGrid dtor because GetDefaultEditorForCell() dereferenced m_table without
checking if it was not null any more.

Add the missing check to this function and GetDefaultRendererForCell() too,
for consistency.

In addition, dismiss the cell editor immediately when changing table instead
of doing it at some later time, as it just doesn't make sense to continue
showing it any more as the data it was started to edit doesn't belong to us
any longer.
2016-06-22 01:11:20 +02:00
Vadim Zeitlin
4b98cd4012 Fix compilation with libsecret 0.16 from Ubuntu 14.04 LTS
This version of the library requires predefining a special symbol to obtain
API declarations we need.

See https://github.com/wxWidgets/wxWidgets/pull/290
2016-06-18 18:36:13 +02:00
jonkraber
96ef6ea293 Fix preserving selection when changing selection mode in wxGrid
The loop over the existing selection was buggy and took into account only one
corner of the block instead of the entire block and also skipped some blocks
entirely.

Closes #17572.
2016-06-18 18:12:52 +02:00
Artur Wieczorek
9c2076b79f Implemented wxToolBarTool::SetLabel (GTK)
Labels can be changed only for button tools because control tools with labels are not implemented under wxGTK.

Closes #17567
2016-06-17 23:18:10 +02:00
Artur Wieczorek
1373241f21 Fixed implementation of wxToolBarTool::SetLabel (MSW).
Because label is implemented in the control tool as a separate wxStaticText object which exists only if label is non-empty so we need to handle appropriately also the cases when non-empty label is set to empty and vice versa.
Setting a new label for the button tool with TB_SETBUTTONINFO would require to do some additional actions for other items in the toolbar (manual re-positioning items in the control tools, updating stretchable spacers) so it is easier just to re-create the toolbar with Realize().

See #17567
2016-06-17 23:17:40 +02:00
Vadim Zeitlin
f792ba45f6 Merge branch 'dvc-markup'
Add support for using markup in wxDataViewCtrl items.
2016-06-16 17:49:54 +02:00
Vadim Zeitlin
857a8a1ba1 Don't assert in wxRenderer::GetHeaderButtonMargin()
Even if we don't have any way to determine the real margin, don't assert in
this method implementation in wxGTK and wxOSX, but just return 0 instead.

This fixes asserts when trying to fit a column of wxDataViewCtrl, by double
clicking a separator after it, to its contents.

See #13685.
2016-06-16 17:26:38 +02:00
Paul Cornett
e9fdda8638 Avoid clearing selection for mouse button up event which is not over an item, see #17547 2016-06-16 07:23:34 -07:00
Vadim Zeitlin
74c0462c84 Add wxDataViewTextRenderer::EnableMarkup()
Implement the new method to all the implementations (generic, GTK, OS X), show
it in the sample and update the documentation.
2016-06-16 00:06:23 +02:00
Vadim Zeitlin
b6a75ff0b2 Don't pass nor use wxCONTROL_FOCUSED in wxRenderer::DrawItemText()
It doesn't make much sense to always use wxCONTROL_FOCUSED in wxDataViewCtrl
code whenever wxDATAVIEW_CELL_SELECTED state bit is set, wxCONTROL_SELECTED
seems to be enough and is with the native MSW wxRenderer implementation which
doesn't even test for wxCONTROL_FOCUSED anyhow, while the generic one did and
didn't use the correct colour unless it was set.

No real changes, but this will make upcoming commits more straightforward and
already simplifies the code a little bit.
2016-06-16 00:02:09 +02:00
Vadim Zeitlin
acd77439f9 Add wxMarkupText::RenderItemText()
Add new method allowing to use wxRendererNative::DrawItemText() for actually
rendering the text instead of wxDC::DrawLabel().

This will be used for markup support in (generic) wxDataViewCtrl.
2016-06-16 00:02:02 +02:00
Vadim Zeitlin
42fe8f889e Return more attributes from wxGTK wxTextCtrl::GetStyle()
Set "underlined" and "strikethrough" style attributes to correspond to the
ones really used too.

See #17523.
2016-06-14 21:43:38 +02:00
Tobias Taschner
ac5a362d8d Include OSX 10.12 name and branding in wxGetOsDescription()
Starting with 10.12 OSX will be renamed to macOS. The name for version 10.12
is Sierra.

Closes https://github.com/wxWidgets/wxWidgets/pull/297
2016-06-14 16:09:47 +02:00
Jouk
ce4070fc16 Enabling wxUSE_GRAPHICS_CONTEXT on OpenVMS 2016-06-14 14:11:38 +02:00
Jouk
98284d8f35 Update of OpenVMS makefiles 2016-06-13 16:44:49 +02:00
Jouk
7b1fbff128 re-insert != operator that disappeared during last update 2016-06-13 16:39:38 +02:00
Vadim Zeitlin
2297578cb4 Merge branch 'wxsvgfiledc-improvements' of https://github.com/MaartenBent/wxWidgets
Many improvements in wxSVGFileDC to improve its support of wxDC API including:

- Enabled usage of clipping regions.
- Correctly draw polypolygons.
- Draw lines as one long line instead of many short lines.
- Drawing text improvements (position, multi-line, underlined, strike-through).
- Support more brush and pen styles.
- Add Saving as SVG to drawing sample.
- Implemented Clear().
- Set the SVG title.
- Produce valid svg/xml.
- Correctly draw ellipses and arcs.

See https://github.com/wxWidgets/wxWidgets/pull/215
2016-06-13 15:25:30 +02:00
Andreas Falkenhahn
e4473fa193 Apply wxTextCtrl::SetDefaultStyle() to user-entered text in wxGTK
Apply the appropriate style to any text being inserted, not just the text
added by the program. This not only fixes the bug with default style not being
used for the text entered by user, but also makes the code simpler.

Closes #17523.
2016-06-12 19:18:27 +02:00
Maarten Bent
97c7ac4289 Code cleanup in wxSVGFileDC.
Consistent white-space usage.
Use wxS macros for strings.
Check if output stream is OK when writing.
Removed unnecessary Borland pragmas.
2016-06-12 18:40:12 +02:00
Maarten Bent
1e0719ad81 Fixed drawing elliptic arcs in wxSVGFileDC.
For some combinations of start and end angles, the wrong large-arc-flag was calculated. Fixed by correctly converting the wxDC angles to SVG angles (shift -90 degrees, and invert to clockwise direction).
Arcs with the same start and end point (circles) where not drawn because the angle becomes 0 degrees. Fixed by drawing two half circles.
Elliptic arcs with a non-transparent brush had an extra line from the center to the start point of the arc. Fixed by first drawing the arc without border, then only the border.
Arcs with small angles would become invisible because the start and end point map to the same (integer) coordinate. Very large arcs would be distorted because the start and end point coordinates did not line up. Using floating point values resolves this.
See issue #17557.
2016-06-12 18:40:12 +02:00
Maarten Bent
2dcaa43f0b Fixed drawing ellipses and arcs in wxSVGFileDC.
Ellipses with the same start and end point (circles) where not drawn because the angle becomes 0 degrees. Fixed by drawing two half circles.
Do not close ellipses if a transparent brush is used (to match wxDC behavior).
See issue #17557.
2016-06-12 18:40:12 +02:00
Maarten Bent
9e07ba8fae Support SetDeviceOrigin and SetAxisOrientation in wxSVGFileDC.
Override SetDeviceOrigin, SetLogicalOrigin and SetAxisOrientation from wxDC and mark the graphics as changed, so the correct transform translations are applied.
2016-06-12 18:40:11 +02:00
Maarten Bent
1717db0373 Improved memory management in wxSVGFileDC. 2016-06-12 18:40:11 +02:00