Commit Graph

34897 Commits

Author SHA1 Message Date
Vadim Zeitlin
c1cd1e01b5 Fix wxSpinCtrl best size calculation for GTK+ 3
Don't hard code the width of spin buttons in wxGTK, this more or less worked
for GTK+ 2 (at least with the default theme, it was perfectly possible that it
also didn't work with some other ones), but not at all with GTK+ 3 where the
buttons are much wider than the hardcoded value.

Instead, do the same thing as wxSpinButton wxGTK implementation already does
and force the GTK+ widget to compute its preferred size as we need it, i.e.
without taking the text width into account, by forcing the width of the text
entry to 0.

Notice that for GTK+ 3.12+ we also need to set the max width to 0 as well to
prevent the entry from making itself big enough for that many characters,
see #17051.
2016-04-03 18:04:26 +02:00
New Pagodi
0a3057b83c Add GetDirect{Function,Pointer}() methods to wxStyledTextCtrl
These methods can be useful when working with dynamic lexers.

Closes #17481.
2016-04-03 15:50:21 +02:00
New Pagodi
a6e249ea1a Add support for loading external lexers to wxStyledTextCtrl
Implement Scintilla DynamicLibraryImpl and generate LoadLexerLibrary() and
GetLexerLanguage().

Closes #17480.
2016-04-03 15:47:48 +02:00
Artur Wieczorek
ae1a332d1f Fix value returned by wxBitmap::GetDepth() in wxMSW
Some operations on wxBitmap involve converting the internal representation
from DIB to DDB, and when this is done it can happen that the resulting DDB
will have different colour depth than source DIB because CreateDIBitmap()
Windows API which is used for conversion purposes can create DDB with
"whatever bit depth your reference DC is".

Therefore after every operation which directly or indirectly employs
CreateDIBitmap() it is necessary to update respective data member with the
actual color depth of the obtained DDB.

Closes #17479.
Closes https://github.com/wxWidgets/wxWidgets/pull/265
2016-04-03 15:31:18 +02:00
Vadim Zeitlin
8baaa652ef Merge branch 'dvc': miscellaneous wxDataViewCtrl-related fixes 2016-04-02 01:09:06 +02:00
Steve Browne
ceaa840d7b Restore cwd even if wxFileDialog is cancelled in wxMSW
Sometimes the file dialog changes the current directory even if it is
cancelled, so restore it in any case, not only after successful return.

Closes https://github.com/wxWidgets/wxWidgets/pull/263
2016-04-01 03:37:13 +02:00
Artur Wieczorek
cb14859d10 Fixed drawing on wxMemoryDC with Cairo (wxMSW).
When Cairo surface is created from 32bpp wxBitmap then there is necessary to provide a location of its bit values to cairo_image_surface_create_for_data function and hence bitmap selected into wxMemoryDC has to be converted to DIB, if it is not a DIB already.
Moreover, if 32bpp bitmap doesn't contain real transparency data (is 0RGB bitmap) then its alpha values have to be corrected and set to wxALPHA_OPAQUE value (255).

Closes #17469.
2016-03-31 19:40:08 +02:00
İsmail Dönmez
467dc72fc2 Check for C/POSIX locale just after we truncate language string
This way we can correctly detect C.UTF-8 as C locale.

Closes https://github.com/wxWidgets/wxWidgets/pull/262
2016-03-30 15:38:13 +02:00
Václav Slavík
7c709be652 Silence VC14 warning in d2d1helper.h system header 2016-03-29 18:54:58 +02:00
Václav Slavík
c57bde7092 Compilation fix for !wxUSE_PRINTING_ARCHITECTURE 2016-03-29 18:54:10 +02:00
Artur Wieczorek
95e63ed062 Pass D2D1_ALPHA_MODE value instead of Boolean flag to wxD2DContext.
Using non-Boolean argument should be more clear.

See #17465.
2016-03-28 21:47:09 +02:00
Iwbnwif Yiw
00526cefb6 Return full virtual screen size from wxScreenDC::GetSize() in wxMSW
Return the size of the entire virtual screen, possibly composed from multiple
monitors, rather than just the size of the primary monitor.

This makes this method consistent with wxScreenDC actually representing the
entire virtual screen and not just the primary monitor and also with wxGTK.

Closes #13279.
2016-03-28 21:37:55 +02:00
ARATA Mizuki
01046f4790 Use wxWidgets conversions to/from UTF-8 in Scintilla code
Scintilla conversions use UTF-16, as indicated by their names, while wxString
uses UTF-32 under Unix, so they don't work correctly for the characters
outside of BMP.

Simply use our own UTF-8 conversions, it doesn't seem possible to get invalid
UTF-8 sequences here anyhow, so the comment saying that Scintilla functions
are used to avoid asserts doesn't seem to be relevant.

Closes #15621.
2016-03-28 21:25:56 +02:00
ARATA Mizuki
cf000e7e02 Fix GetPartialTextExtents() to handle non-BMP chars under OS X
On OS X, wxString operates on UTF-32 code units, but CoreText API use UTF-16
code units. So we need to take care of surrogate pairs.

Closes https://github.com/wxWidgets/wxWidgets/pull/261
2016-03-28 21:25:56 +02:00
Artur Wieczorek
e07aa294a4 Fixed drawing on wxMemoryDC with Direct2DRenderer.
32bpp wxBitmaps selected into wxMemoryDC can represent either 0RGB or ARGB bitmaps and hence there is necessary to instruct renderer how to interpret 32bpp contents while creating a wxGraphicsContext. wxBitmap::HasAlpha() flag is used for these purposes and its value is passed to wxD2DContext ctor (wxD2DContext is used internally as a backend D2D component) and next used to configure physical renderer created with ID2D1Factory::CreateDCRenderTarget.

Closes #17465.
2016-03-28 21:22:06 +02:00
Vadim Zeitlin
7c4145490e Compilation fix for wxCairoRenderer with Cairo < 1.12
cairo_surface_create_similar_image() introduced by the changes of
d6afb66388 is only available in 1.12 and later,
check for it being available and fall back to cairo_surface_create_similar()
with older versions.

This should fix Travis CI builds.
2016-03-28 17:51:16 +02:00
Václav Slavík
d8a90b4606 Don't mirror wxStyleTextCtrl under RTL locales
Not onlu has Scintilla no support for RTL languages, it is rendered into
a mirrored DC on Windows and so guaranteed unreadable and unsable. Fix
it by explicitly setting the window's layout direction to LTR.
2016-03-28 17:39:26 +02:00
Artur Wieczorek
ab891932cd Added additional check if source bitmap is valid in wxCairoRenderer::CreateSubBitmap.
Check if source bitmap contains Cairo surface.
2016-03-24 23:00:08 +01:00
Artur Wieczorek
8e1c85109c Use wxMax instead of std::max.
Use wxMax for the sake of uniformity and maintainability - it is used everywhere else in the code base.
2016-03-24 22:24:56 +01:00
Artur Wieczorek
9c83dd8d3e Added checking parameters of wxGDIPlusRenderer::CreateSubBitmap method.
Check if source bitmap is valid and whether sub-bitmap is entirely within it.
2016-03-24 22:24:55 +01:00
Artur Wieczorek
5ea0a0f5f9 Fixed creating Cairo bitmap from wxBitmap (wxMSW).
Fixed creating wxCairoBitmapData from 32bpp wxBitmap (with and without alpha channel). This also fixes wxCairoRenderer::CreateBitmap method.
1. 32bpp bitmap can represent under MSW either ARGB or RGB bitmap so there is necessary to examine its real contents with wxBitmap::HasAlpha function.
2. ARGB bitmaps are premultiplied and there is not necessary to premultiply them again.
2016-03-24 22:24:54 +01:00
Artur Wieczorek
d6afb66388 Implemented wxCairoRenderer::CreateSubBitmap method. 2016-03-24 22:24:53 +01:00
Vadim Zeitlin
6beaeedf58 Correct tests for wxUSE_GENERICDATAVIEWCTRL in wxOSX code
We must include wx/dataview.h, where this symbol is defined, before testing
for it.
2016-03-24 16:31:15 +01:00
Václav Slavík
e37f1a84ce Disable warnings in the standard shlobj.h header with MSVC14
There is nothing we can do about these (harmless) warnings, so just
disable them. Also make sure that the header is included via
wx/msw/wrapshl.h  everywhere.
2016-03-23 14:46:59 +01:00
Vadim Zeitlin
b7e0625b90 Don't indent the expander column in list wxDataViewCtrl in wxOSX
Indenting the column contents to leave enough space for the expanders is
unnecessary in this case, so just don't do it.

Closes #17409.
2016-03-22 21:44:38 +01:00
Vadim Zeitlin
716dace3d6 Make wxDataViewCtrl::Expand() expand ancestors in native ports too
Expand() called ExpandAncestors() in the generic wxDataViewCtrl implementation
but not in the native ones, resulting in observable difference in the
behaviour: for example, the wxDataViewTreeCtrl in the dataview sample appeared
initially expanded under MSW, using the generic version, but collapsed under
GTK and OSX.

Harmonize this among all ports. This also has a nice side effect of making
Expand() less horribly inefficient as it is not recursively called by
ExpandAncestors() which it itself used to call: now ExpandAncestors() only
calls DoExpand() which is a simple function that only expands the item passed
to it and does nothing else.

Closes #14803.
2016-03-22 21:22:36 +01:00
Vadim Zeitlin
d324bd2469 Don't crash if overridden wxDataViewModel::GetValue() throws
Don't let any exceptions propagate to GTK+ code as this results in an
immediate crash there, at least with GTK+ 3.14.5.
2016-03-22 19:32:06 +01:00
Vadim Zeitlin
1bbc44daff Support background colour in wxDataViewItemAttr in wxGTK
The code handling background colour was commented out for some reason, simply
enable it as it seems to be working just fine -- and update the sample to show
that it does.
2016-03-22 17:49:49 +01:00
Paul Cornett
4793e5b0a4 Avoid unresizable windows on HiDPI displays when using SetSizeHints()
see #17456
2016-03-21 09:46:46 -07:00
Vadim Zeitlin
bc4798c7df Avoid warnings about incompatible pointers with Xcode 7
Use __kindof NSView instead of id when __kindof is supported to avoid warnings
about casting between incompatible point types.
2016-03-20 19:26:14 +01:00
Vadim Zeitlin
5300caf385 No significant changes, just get rid of hard TABs
Replace TABs with spaces, get rid of trailing whitespace.
2016-03-20 19:18:46 +01:00
Vadim Zeitlin
e4c6385824 Get rid of pre-Leopard (10.5) compatibility code in wxOSX
Just use NSComparisonResult directly, we don't care about anything < 10.7.
2016-03-20 19:17:08 +01:00
Vadim Zeitlin
cd57de43dd Add missing wxOVERRIDE to OS X wxNotificationMessage::AddAction()
Thanks clang for a -Winconsistent-missing-override warning.
2016-03-20 19:06:48 +01:00
Vadim Zeitlin
2392423f39 Fix wrong calls to wxWindow::Refresh() in OS X wxRenderer
Refresh(&rect) was used instead of Refresh(true, &rect) mistakenly, thanks to
clang for warning about always-true-conversion-to-bool here.

Fix this by using less error-prone and more clear RefreshRect().
2016-03-20 16:59:09 +01:00
Andreas Falkenhahn
0777bf6b92 Fix wrong TLW size with horizontal decorations in wxGTK
Compare min/max width with m_width, not m_height, in GTKUpdateDecorSize() for
the logic to work as expected.

Closes #17455.
2016-03-20 15:50:13 +01:00
Vadim Zeitlin
a20183440b Set item being edited earlier in wxDataViewRenderer
Partially undo the changes of e417913f46 and set
m_item in StartEditing() as it's supposed to be already set when
CreateEditorCtrl() is called and setting it in NotifyEditingStarted() was too
late for this.
2016-03-19 00:45:15 +01:00
wanup
c4e892629f Implement wxDataViewChoiceByIndexRenderer for wxOSX
Add missing class implementation.

Closes #17452.
2016-03-19 00:17:13 +01:00
Vadim Zeitlin
9829446755 Refactor wxDataViewEvent constructors
Take care of all the common stuff such as setting the event object and the
model, which is used for all events, in the ctor. Also set both the column
pointer and the column index at once instead of having two separate setters
for them which could result in inconsistent event objects (and did, as
sometimes only one or only the other field was set).

This makes the code shorter (we save 160 lines) and more clear and ensures
that everything is always initialized.

Closes #12649.
2016-03-19 00:16:51 +01:00
Vadim Zeitlin
e2e7d3d391 Fix wxELLIPSIZE_END with wxALIGN_RIGHT in wxMSW wxDataViewCtrl
Using wxELLIPSIZE_END together with wxALIGN_RIGHT resulted in unnecessarily
ellipsizing or truncating the column contents in generic wxDataViewCtrl under
MSW due to the combination of b642747fd2 and
the native API behaviour.

Fix this by not using alignment in RenderText(): it is unnecessary anyhow and
not doing it avoids the problem as a side effect.

Closes #17363.
2016-03-18 22:33:31 +01:00
Vadim Zeitlin
db6e1c5b38 Make wxCOL_WIDTH_AUTOSIZE work dynamically in generic wxDataViewCtrl
Caching the best column widths broke autosizing behaviour if the column title
was updated after setting the width to wxCOL_WIDTH_AUTOSIZE.

Fix this by invaliding the column cached width if its text changes.
2016-03-17 22:34:14 +01:00
Vadim Zeitlin
ce1cc2cea5 Remove hard TABs in wxHTML introduced by recent commit
Reformat the code added in d96a25be12.

See https://github.com/wxWidgets/wxWidgets/pull/244
2016-03-17 22:11:30 +01:00
Artur Wieczorek
e7a9916878 Fixed calculating widths in wxCairoContext::GetPartialTextExtents (wxMSW).
Widths from the beginning of text to the corresponding character should be calculated instead of widths of individual characters.
2016-03-17 21:06:26 +01:00
Artur Wieczorek
e26e8f38b9 Fixed wxCairoContext ctor (wxMSW).
Variable referencing Cairo surface has to be initialized to NULL because otherwise crash can happen in dtor while attempting to destroy the surface.
2016-03-17 20:52:12 +01:00
Artur Wieczorek
3bf30d14fd Implemented GetPartialTextExtents for Cairo context (wxMSW).
This implementation should work fine not only for wxMSW port.
2016-03-16 21:42:37 +01:00
Artur Wieczorek
b8e82accbe Allow creating wxCairoContext from native window (wxMSW).
Implemented new wxCairoContext ctor to allow creating Cairo context in wxCairoRenderer::CreateContextFromNativeWindow.
2016-03-16 21:42:06 +01:00
Artur Wieczorek
1fa4efc47e Implemented measuring context for Cairo renderer (wxMSW). 2016-03-16 21:41:20 +01:00
X-L0rd
d96a25be12 Support backslashes in topics of HTML help files
HTML help file is a Microsoft format and it makes sense to support backslashes
in the file names used in it.

Closes https://github.com/wxWidgets/wxWidgets/pull/244
2016-03-16 02:23:29 +01:00
Vadim Zeitlin
db70be1a7c Merge branch 'stackwalk-mingw'
Support wxStackWalker when using MinGW54 or TDM-GCC.
2016-03-16 02:20:15 +01:00
zhivko
6e5a2b630a Fix crash when updating art provider of a ribbon with scroll buttons
Don't leave the scroll buttons with the old, possibly soon to be deleted, art
provider pointer.

Closes #17441.
2016-03-15 20:22:30 +01:00
Vadim Zeitlin
e405bf1607 Initialize CONTEXT ourselves in wxMSW wxStackWalker::Walk()
As we do it for MinGW now, do it also for MSVC in a similar way: this is more
straightforward and less annoying than raising an exception (which can be
caught by a debugger and, at least, is logged by it) and ensures we use
similar code for MinGW and MSVC which should hopefully minimizing the risk of
breaking one or the other without noticing in the future.

Normally there should be no changes in behaviour.
2016-03-15 20:11:12 +01:00