Commit Graph

34966 Commits

Author SHA1 Message Date
Dimitri Schoolwerth
374db28747 Fix wxMSW ListCtrl drawing of horizontal rules for new items
When adding a new item to a wxMSW ListCtrl that uses horizontal rules the
painting is horizontally clipped to the left of the control and the
rightmost column and the rule doesn't extend beyond that as it does when
doing a full repaint. Fix by refreshing the part to the right of the
rightmost column.

This also reverts 02c8973a57 which became
unnecessary now.

Also see #17158.
2016-05-04 11:24:51 +04:00
Dimitri Schoolwerth
d382107ea2 Slightly improve wxMSW ListCtrl drawing of vertical rules
Draw the vertical rules with Y coordinates related to the top and bottom
visible item which makes more sense than using the first and last item.
2016-05-04 11:24:51 +04:00
Dimitri Schoolwerth
761f05c649 Improve wxMSW ListCtrl drawing of horizontal rules
Appending an item in the listctrl sample results in two horizontal lines
drawn next to each other while they should be overlapping. Fix by drawing
only the bottom line of each item instead of skipping the first one
(should have been the top visible item since
6443de0263) and drawing the last one in the
list (should have been bottom visible item).
2016-05-04 11:24:51 +04:00
Dimitri Schoolwerth
8d661b6bf8 Clarify and change a drawing fix for wxMSW ListCtrl with wxLC_VRULES
Since 9eaba69276 a fix was added for leaving
behind trailing pixels when resizing a column in a ListCtrl that uses
wxLC_VRULES. This fix is only needed for ComCtl32.dll versions prior to
6.0. Make the fix conditional and explain the (rare) conditions under
which the problem still occurs.

Also see #747.
2016-05-04 11:24:51 +04:00
Vadim Zeitlin
e41a59ee07 Fix Unicode conversions in Scintilla code in ANSI build
Don't just use wxWX2MBbuf which is just a "const char*" in ANSI build and can
become a dangling pointer if the string it was constructed from was temporary,
as it happens with the string returned by wxStyledTextEvent::GetString().

Closes #17517.
2016-05-03 16:09:11 +02:00
Dimitri Schoolwerth
c5a18a3407 Revert "Create native buttons without any label in wxOSX/Cocoa"
This change is not any longer needed since the fix in
98f5315405.

This reverts commit ef1db7acda.
2016-05-01 22:20:16 +04:00
Maarten Bent
7c16c93807 Fix for PCH-less build for wxD2DContext.
It is required for FLT_MAX in Direct2D graphics context.

Closes https://github.com/wxWidgets/wxWidgets/pull/276
2016-05-01 19:03:58 +02:00
Artur Wieczorek
1e6cf64a2a Fixed creating wxGraphicsPath with Direct2D renderer.
When current endpoint is moved to a new position with MoveToPoint() then current sub-path should be ended without closing the figure (no line from the current point to the beginning of the sub-path should be added).

Closes #17516
2016-05-01 19:02:58 +02:00
Václav Slavík
98f5315405 Don't set initial label in wxNativeWindow on OS X
Differentiate between setting the label from SetLabel() and from
SetPeer() (i.e. initially), because some native controls shouldn't have
an empty string set as their intitial value.

Override SetInitialSize() to be empty for wxNativeWindow in order to
prevent label-setting issues when an unknown, caller-controlled native
widget is attached. Reverts db9baf9aa5,
which was the previous attempt to fix this, but was causing too many
problems elsewhere.
2016-04-29 17:26:02 +02:00
Maarten Bent
5266f4785c Fix PCH-less build after CustomDraw addition
Include "wx/msw/private.h" for wxColourToRGB().

See https://github.com/wxWidgets/wxWidgets/pull/276
2016-04-24 18:03:49 +02:00
Marek Temnyak
1bcc5aa7e4 Add missing implementation of wxScrollBar::SetThumbSize() in wxGTK
This method was declared but never defined somehow, do define it now.

Closes https://github.com/wxWidgets/wxWidgets/pull/272
2016-04-23 18:55:29 +02:00
Vadim Zeitlin
70b64b8c53 Merge branch 'rename-listctrl-checkbox-methods' of https://github.com/discnl/wxWidgets
Use consistent case for wxListCtrl::{Has,Enable}CheckBoxes() methods.

Closes https://github.com/wxWidgets/wxWidgets/pull/275
2016-04-23 18:53:41 +02:00
Vadim Zeitlin
b1fcf100ff Fix user-visible with AUI tab selection after dragging
Selection at wxAuiNotebook level was not updated, resulting in all attempts to
select the tab at the same index as the tab that was dragged elsewhere being
ignored, e.g. after dragging the first tab to the second position in the AUI
sample, the first tab couldn't be selected again.

Fix this by always changing the selection in OnTabEndDrag(). This might not be
the best thing to do as the selection is also changed later in the code and
the fact that the code returns without sending the event is probably a bug
too, but for now at least fix the user-visible problem.

Closes #15071.
2016-04-23 18:51:49 +02:00
Kolya Kosenko
bb2b48f2ba Handle negative width size in GDI+ DrawRectangle() and document it
Apparently it's a common convention to allow width and/or height of a
rectangle to be negative as both GDI and Cairo handle this natively, so also
allow this for GDI+ and document this as the expected behaviour.

Closes #17495.
2016-04-23 18:31:01 +02:00
Vadim Zeitlin
2c9a435f46 Use correct variant type in generic wxDataViewChoiceByIndexRenderer
This solves the same problem as daa8fd03f3 did
for the GTK+ native version and ensures that the variant type at the renderer
level is consistent with the type of the values actually used with this
renderer (which are integers as they are indices).

Closes #17474.
2016-04-23 17:55:39 +02:00
Vadim Zeitlin
983f5f29a2 Merge branch 'owner-draw-headers'
Implement support for changing fonts and colours in wxMSW header control.
2016-04-23 17:52:49 +02:00
Václav Slavík
e5e92c92ce wxMSW: Fix display of file history items in menus
Unlike other platforms, wxMSW assumes natural text directionality (i.e.
right to left under RTL locales), but absolutely filenames are always
LTR because they begin with a Latin character. It is therefore necessary
to add  an explicit directional mark in front of them on Windows.
2016-04-23 14:49:42 +02:00
Václav Slavík
a0805d32eb MSW: Fix dialog default positions under RTL locales
Toplevel windows use their parent's coordinate system as the reference
frame, not desktop's, so need to be adjusted accordingly if its
mirrored. Without these changes, default-positioned wxDialogs would end
to the right side of the parent window's right border (instead of being
slightly inside the window) and changing their size would move them as
well.
2016-04-23 14:49:01 +02:00
Artur Wieczorek
6243e0e507 Use wxList instead of std::list in Direct2D renderer.
This would remove explicit dependency on STL.
2016-04-22 21:17:01 +02:00
Artur Wieczorek
e962172cd9 Don't call std::sin, std::cos functions.
This is for the sake of consistency because everywhere else there are used trigonometric functions from standard C library (only <math.h> is included).
2016-04-22 21:15:41 +02:00
Vadim Zeitlin
bed710d9a7 Add wxDataViewCtrl::GenericGetHeader() accessor
And show how to use it to increase the header size in the sample.
2016-04-22 01:12:21 +02:00
Vadim Zeitlin
bed7d9fe74 Add wxDataViewCtrl::SetHeaderAttr() too
This is currently only implemented in the generic version but could be
implemented at least for GTK+ native one as well in the future.
2016-04-22 00:58:38 +02:00
Artur Wieczorek
8a7374e5ca Fixed drawing with wxGraphicsContext and Direct2D renderer.
When render target to draw to a DC (created with ID2D1Factory::CreateDCRenderTarget method) is bound to the device context with ID2D1DCRenderTarget::BindDC method then the size of the area of drawing has to be a logical size of a DC (with its scaling factor taken int account). This can be determined directly using GetClipBox API and there is no need to pass it as a parameter of wxD2DDCRenderTargetResourceHolder ctor.

Closes #17504.
2016-04-21 20:24:43 +02:00
Dimitri Schoolwerth
c78470b647 Rename wxListMainWindow::IsInsideCheckBox to IsInsideCheckbox 2016-04-21 17:47:10 +00:00
Dimitri Schoolwerth
602111f2b3 Rename wxListCtrl::HasCheckboxes() and EnableCheckboxes()
Rename them to HasCheckBoxes and EnableCheckBoxes for consistency with
wxCheckBox naming.

See also PR https://github.com/wxWidgets/wxWidgets/pull/153
2016-04-21 15:25:10 +00:00
Artur Wieczorek
deb162fc5a Fixes for PCH-less build for Direct2D graphics context.
Include the required headers inside "#ifndef WX_PRECOMP" block.

See #17502.
2016-04-20 22:03:38 +02:00
Artur Wieczorek
4b0732269d Fixed determining Direct2D graphics context size (wxMSW).
Determine actual size of wxD2DContext instance and initialize respective data members to report proper size of wxGraphicsContext created by wxGraphicsRenderer::CreateContextFromNativeContext / CreateContextFromNativeWindow.

Closes #17502.
2016-04-20 20:54:48 +02:00
Artur Wieczorek
32d76cefe2 Refactored code to get access to wxBitmap's bit values in wxCairoContext ctor (MSW).
Use simpler version of wxAlphaPixelData and wxNativePixelData ctors and invoke respective accessors to obtain bitmap size.
2016-04-17 19:15:49 +02:00
Artur Wieczorek
be6f93d725 Fixed initialization sequence in wxCairoContext ctor.
Shared method Init should be invoked to initialize the context to assure consistency with other ctors.
2016-04-17 19:15:32 +02:00
Artur Wieczorek
fdc2189808 Move duplicated code to the shared function.
Code to store initial Cairo transformation settings can be moved from wxCairoContext ctor bodies to the shared method wxCairoContext::Init.
2016-04-17 19:15:12 +02:00
Vadim Zeitlin
5388c7a72e Add wxListCtrl::SetHeaderAttr()
This method can be used to change the list view header appearance.

Add the method declaration, documentation, show it in the sample and implement
it for wxMSW (only, for now).
2016-04-17 18:26:13 +02:00
Vadim Zeitlin
c15f75b81d Use custom draw in wxMSW wxHeaderCtrl to support colours
Add a helper wxMSWImpl::CustomDraw class which will be reused in the other
places too and, for now, use it just to implement support for custom colours
in wxHeaderCtrl.

Notice that the control took care of the custom font on its anyhow and that
background colour is ignored when themes are enabled, so the net effect of
this change is that now changing the header foreground colour works, while
it was ignored before.
2016-04-17 17:01:08 +02:00
Artur Wieczorek
ca7670d2fc Fixed creating wxGraphicsContext from Cairo context.
Reference count of the source Cairo context should be increased to prevent source context from being destroyed in wxGraphicsContex dtor (where cairo_destroy is invoked).
2016-04-16 21:34:08 +02:00
Artur Wieczorek
495a88ba73 Fixed creating wxPrinterDC from wxGraphicsContext with Cairo renderer (GTK).
When wxGraphicsContext is created from wxPrinterDC then also logical scaling factor applied to the source wxPrinterDC has to be explicitly applied to the Cairo context.
All inherited transformation settings should be used only internally by wxGraphicsContext object and shouldn't be exposed through e.g. GetTransform() function and hence they are stored separately (in a dedicated variable) and "subtracted" from actual transformation settings for reporting purposes.

Closes #17496.
2016-04-16 21:23:21 +02:00
Artur Wieczorek
9a215bb393 Fixed creating wxGraphicsContext from wxPrinterDC with Cairo (MSW).
Modification of the mapping mode of underlying DC encapsulated in wxPrinterDC (from MM_ANISOTROPIC to MM_TEXT) which is done prior to creating Cairo context affects the value of device origin which needs to be applied to the Cairo context. Due to the change of the mapping mode it has to be rescaled based on the current scaling factor value.

See #17496.
2016-04-16 21:06:03 +02:00
Vadim Zeitlin
246ae58c19 Replace wxTreeItemAttr and wxListItemAttr with wxItemAttr
The two existing structs were completely identical, just replace them with a
single wxItemAttr.

Notice that wxDataViewItemAttr is not quite the same, although pretty similar,
so it remains separate for now. It would be nice to combine it with this one
too in the future, e.g. to make it simpler to make items bold in a wxListCtrl.
2016-04-16 19:04:52 +02:00
Vadim Zeitlin
c592363e95 Remove obsolete test for HDN_BEGINTRACKA being defined
It's used without this test in src/msw/headerctrl.cpp, so we can be sure using
this symbol doesn't create any problems any more.
2016-04-16 17:03:54 +02:00
Dimitri Schoolwerth
8267df75fb Disable 2 warnings occurring in release builds
Because of using a jump in an asm block there is a warning regarding
disabling global optimisations (for that function only) and as a result of
that another warning about being unable to check for buffer overruns. To
work around the warnings temporarily disable both (C4740 and C4748).

Regression since e405bf1607.
2016-04-15 02:35:39 +00:00
Dimitri Schoolwerth
7977839a56 Fix unreachable code warning
The return NULL statement at the bottom of
wxAuiXmlHandler::DoCreateResource() is never reached because the catch-all
else branch above it always returns. Fix by removing the bottom return
statement (same as how other *XmlHandler::DoCreateResource() methods
handle this, and not by changing the else into an else if).
2016-04-15 02:35:39 +00:00
Artur Wieczorek
a662e306be Fixed reporting transformation settings for wxGraphicsContext with Cairo renderer.
When wxGraphicsContext is created from "native" Cairo context (cairo_t*) then transformation settings applied initially to the underlying source Cairo context need to be stored (in a dedicated variable) to make possible determining what transformations were applied to wxGC instance since its creation. Only these explicitly applied transformations are reported by GetTransform().
2016-04-14 20:49:07 +02:00
Artur Wieczorek
a1a3f7309b Fixes and optimizations for determining wxCairoContext size (wxMSW).
1. Because Cairo uses internally GetClipBox Win API to determine surface size so we can employ the same approach in wxGraphicsRenderer::CreateContextFromNativeContext and just call this API instead of executing complicated code to determine size of underlying objects selected into DC.
2. Determine context size (and initialize respective data members with proper values) for wxCairoContext created from wxWindow.
3. Initialize respective data members with 0 values for generic wxCairoContext (with no source object provided).
2016-04-14 20:47:41 +02:00
Artur Wieczorek
0ae78d608a Restore source DC state when wxCairoContext is destroyed (wxMSW).
Since raw DC (encapsulated in source wxDC) can be modified in wxCairoContext explicitly (e.g. when context is instantiated from wxPrinterDC or wxEnhMetaFileDC) or implicitly (by some Cairo functions) we have to store its state in ctor and restore it in dtor to assure consistent state of the source wxDC.
2016-04-14 20:45:42 +02:00
Artur Wieczorek
c911f737e3 Implemented wxGraphicsContext created from wxEnhMetaFileDC for Cairo renderer (wxMSW). 2016-04-14 20:44:35 +02:00
Marek Temnyak
d4460435d9 Make source string const in wxPropertyGrid escape sequence methods
Source string is not changed in {Expand,Create}EscapeSequences() methods, so
make it const.

Closes https://github.com/wxWidgets/wxWidgets/pull/271
2016-04-14 16:05:10 +02:00
Dimitri Schoolwerth
c6570770bc Fix signed/unsigned mismatch warning
When not using MinGW the value NO_ITEM (-1) is passed as an item count to
the macro ListView_ApproximateViewRect. While Windows/Platform SDKs since
at least 6.0a cast the argument to (only!) a WPARAM, older ones such as
5.0 don't which results in a signed/unsigned mismatch (converting -1 to
WPARAM, which is an UINT_PTR).

Fix by always casting to WPARAM when using ListView_ApproximateViewRect.
Also use a value of -1 again instead of NO_ITEM because the latter is a
bit of a misnomer in this case (as it refers to the total number of items
in the control) and to reduce the risk of the cast being removed in the
future as well as differentiate it from the MinGW headers issue.

Note that this is a different casting problem than with other ListView_XXX
macros such as ListView_GetNextItem (which cast to int first and then to
WPARAM) where casting to WPARAM results in a warning with WIN64 builds.
That situation does not apply to ListView_ApproximateViewRect.

Regression since 00c63cfd3a.
2016-04-13 23:58:04 +00:00
Dimitri Schoolwerth
faf26f3939 Fix crash when using default wxDataViewEvent ctor
Check the value of the wxDataViewCtrl pointer parameter in Init() instead
of unconditionally calling GetModel() on it. The default ctor of
wxDataViewEvent calls Init() with a null pointer.

This fixes the failing GUI tests with the XP buildbot slave.

Regression since 9829446755.

Also see #12649.
2016-04-13 18:33:04 +00:00
Vadim Zeitlin
c30fe114ee Fix handling of "%z" in format strings for MinGW in all cases
MinGW only supports "%z" directly when using ANSI stdio, but this is not
always the case (even if it often is, as just including any standard C++
header enables ANSI stdio as a side effect). Translate "%z" to "%I" for it as
well as for MSVC to ensure that it always works.

Closes #17492.
2016-04-12 17:11:49 +02:00
Vadim Zeitlin
2f35bda171 Fix handling of "%z" in format strings in 64 bit MSVC builds
ChangeFmtChar(), used only to replace "%z" with "%I" when using MSVC, was
buggy and forgot to increment the pointer to the next format character,
meaning that the "I" we wanted to insert into the format string was simply
lost, overwritten by the next character ("d", "u" or "x").

This actually didn't change anything in 32 bit builds, but it did result in
not using the correct size in 64 bit ones, e.g. using "%zx" with (size_t)-1
output only "ffffffff" instead of the correct "ffffffffffffffff".

See #17492.
2016-04-12 17:09:12 +02:00
Vadim Zeitlin
d62c535d4c Remove misleading test for __USE_MINGW_ANSI_STDIO
This test, added in 06458cb89f, is useless as it
doesn't matter what the value of __USE_MINGW_ANSI_STDIO when compiling the
library is, as the real wprintf() implemented used by wxPrintf() is chosen
depending on __USE_MINGW_ANSI_STDIO value when compiling the application as
wxPrintf() is defined inline.

Just remove it because "%ls" works in both cases anyhow, so always use it with
MinGW.
2016-04-12 16:44:16 +02:00
Artur Wieczorek
0ee25aaa76 Fixed creating Cairo bitmap from wxBitmap (wxMSW).
Iterating over bit values with wxAlphaPixelData sets the internal wxBitmap's "has alpha" flag but we want to left it unchanged so we have to save its original value and restore it afterward.
2016-04-11 18:06:42 +02:00