Commit Graph

9372 Commits

Author SHA1 Message Date
Vadim Zeitlin
ac0505e7d8 Merge branch 'colour_dialogs_alpha_generic' of https://github.com/a-wi/wxWidgets into wip
Add support for alpha channel to wxGenericColourDialog.

See #14127.
2015-11-15 00:56:13 +01:00
ARATA Mizuki
e570e8b6ac Fix conversion from wchar_t string with surrogates to UTF-8
Correctly account for the second half of the surrogate in
wxMBConvUTF8::FromWChar() implementation, this makes it actually work for the
strings containing surrogates on the platforms using UTF-16 encoding for
wchar_t (such as MSW).

See #17070.
2015-11-13 19:36:34 +01:00
Vadim Zeitlin
823a2337f6 Make wxTextStream classes work with surrogates under MSW
On the platforms using UTF-16 for wchar_t we can't read nor write Unicode data
one wchar_t at a time as a single half of a surrogate character can't be
converted to or from the encoding of the stream.

To fix this, we may need to store the last wchar_t already read from the
stream but not returned yet in wxTextInputStream::NextChar() and store,
without writing it, the wchar_t passed to wxTextOutputStream::PutChar() until
the second half of the surrogate is written.

See #17070.
2015-11-13 19:36:33 +01:00
Vadim Zeitlin
5cff8c1232 Fix return value of wxMBConvUTF32::cWC2MB() in presence of surrogates
UTF-32 conversions only estimate, from above, the size of the output buffer
needed, so the value returned from the first call to FromWChar(NULL) in
cWC2MB() can be inexact for them and we need to return the value returned by
the second call to FromWChar() doing the real conversion from cWC2MB() itself
to ensure that we return the correct output length.

See #17070.
2015-11-13 19:36:33 +01:00
Vadim Zeitlin
048ba4b509 Fail to convert wide string with incomplete surrogates to UTF-8
Correctly fail if the wide string being converted is UTF-16 encoded (which can
only happen on platforms using 16 bit wchar_t, i.e. MSW) and ends in the
middle of a surrogate pair.

Notice that other conversions still wrongly encode invalid wchar_t sequences
such as 0xd800 not followed by anything, this will need to be fixed in the
future, but for now at least make it work for the most commonly used
conversion.

See #17070.
2015-11-13 19:36:32 +01:00
Artur Wieczorek
809a07a65d Add opacity control feature to wxColourData.
Added internal flag (with corresponding accessors) which purpose is to enable/disable modifying the opacity of the colours in colour dialogs.
2015-11-02 23:19:16 +01:00
Vadim Zeitlin
5683904c2a Fix wxLocale::IsOk() in case of initialization failure
Ever since 700256bbdb IsOk() returned true even
if setting the locale actually failed because the old locale was still set to
the null value.

Apply the minimal possible fix for this and just reset the old locale pointer
to null if initializing the locale fails to make sure IsOk() doesn't return
true in this case.
2015-10-18 22:04:58 +02:00
Vadim Zeitlin
e7194a082f Use correct DLL export declaration for wxLanguageInfoArray
This class is forward declared with WXDLLIMPEXP_FWD_BASE, so it should be
really declated with the matching WXDLLIMPEXP_BASE and not with
WXDLLIMPEXP_CORE used by WX_DECLARE_EXPORTED_OBJARRAY() by default too.

Somehow the mismatch between forward and real declaration doesn't seem to
create any problems, but still fix this for consistency and because it might
explain http://thread.gmane.org/gmane.comp.lib.wxwidgets.general/83980
2015-10-16 16:51:08 +02:00
Vadim Zeitlin
f68c88b8d2 Fix showing cells without values in wxDataViewCtrl
Fix regression introduced in a49567109a: cells
without value, i.e. for which the wxVariant returned from GetValue() is not
set at all, should appear as empty, not reuse the last value used by this
renderer.
2015-10-12 01:13:56 +02:00
Andreas Falkenhahn
9dd48eab61 Fix wxDataViewCtrl compilation when wxUSE_SPINCTRL==0
Just don't define wxDataViewSpinRenderer in this case.
2015-10-11 17:07:15 +02:00
Vadim Zeitlin
154ebfd1d9 Rename wxBoxSizer::m_minSize to avoid clash with the base class
wxSizer already has m_minSize field, use m_calculatedMinSize for the field of
the derived wxBoxSizer class to avoid confusion, just as wxFlexGridSizer
already did.

Also add a new unit test checking that GetMinSize() still works after this
change.
2015-10-11 01:00:38 +02:00
Vadim Zeitlin
cfb1e8adbf Don't update min size in wxBoxSizer::RecalcSizes()
This seems to be just unnecessary as RecalcSizes() is only supposed to
reposition the child elements and CalcMin() will be called later again if the
min size needs to be recomputed.
2015-10-11 00:22:04 +02:00
Vadim Zeitlin
a2e359613e Revert "Remove dynamic loading of SetThreadUILanguage."
This reverts commit c5ce5bf168.

Using SetThreadUILanguage() directly results in compilation errors with MSVC 8,
see e.g.

http://buildbot.tt-solutions.com/wx/builders/wxMSW-VC8-full/builds/129/steps/libraries/logs/stdio

so keep loading it dynamically for now.

See https://github.com/wxWidgets/wxWidgets/pull/112
2015-10-10 22:19:59 +02:00
Vadim Zeitlin
18472ea8b1 Fix wxDCOverlay ctor associated with the entire wxDC
Use logical coordinates when initializing wxOverlay because this is what it
needs, not physical ones.

See #14415.
2015-10-10 22:17:12 +02:00
Tobias Taschner
55c76ed087 Remove dynamic loading of GetLongPathName.
GetLongPathName is available since WinXP.
2015-10-08 10:59:56 +02:00
Tobias Taschner
c5ce5bf168 Remove dynamic loading of SetThreadUILanguage.
SetThreadUILanguage is available since WinXP.
2015-10-08 10:48:37 +02:00
Tobias Taschner
a0fb808087 Add wxStandardPaths::GetUserDir() to get Desktop, Download etc
All major supported platforms have well defined per-user directories to store
Downloads, Music, Pictures, Videos and the Desktop files. The new method
wxStandardPaths::GetUserDir() allows for a unified way to access these on MSW,
OS X and Unix (if XDG user dirs specification is implemented for the latter).

See https://github.com/wxWidgets/wxWidgets/pull/89
2015-10-04 01:05:23 +02:00
IlyaBizyaev
cfe4b4fd07 Remove obsolete empty files
None of these files is used and they don't contain anything useful.

See https://github.com/wxWidgets/wxWidgets/pull/46
2015-10-04 00:57:48 +02:00
Vadim Zeitlin
f89f7c32f2 No changes, just remove an outdated comment
The comment in wxDataViewCustomRendererBase::RenderText() referred to the code
which doesn't exist any more and so was useless and confusing, just remove it.
2015-10-04 00:01:02 +02:00
Vadim Zeitlin
0f4e5e9e28 Suppress harmless MSVC C4324 warning in 64 bit builds
We don't care about the change of size to wx_error_mgr struct due to the use
of __declspec(align()) in libjpeg headers, so just suppress the warning.
2015-09-28 15:34:13 +02:00
Tobias Taschner
44bcc3a723 Add ellipsizeMode parameter to wxRenderNative::DrawItemText()
Instead of the default end ellipsize mode used in the native and generic
implementation, allow specifying the mode with an additional parameter.

Closes https://github.com/wxWidgets/wxWidgets/pull/97
2015-09-28 15:34:08 +02:00
Tobias Taschner
2eccc1a57d Remove remaining MSDOS support code
The remaining DOS source files where already removed in
26a0a24f38. This removes the remaining __DOS__
and __DJGPP__ (the DOS gcc) code paths.

Closes https://github.com/wxWidgets/wxWidgets/pull/100
2015-09-24 14:38:22 +02:00
Tobias Taschner
8282c1be0f Remove Windows CE support
Windows CE doesn't seem to be supported by Microsoft any longer. Last CE
release was in early 2013 and the PocketPC and Smartphone targets supported by
wxWidgets are long gone.

The build files where already removed in an earlier cleanup this commit
removes all files, every #ifdef and all documentation regarding the Windows CE
support.

Closes https://github.com/wxWidgets/wxWidgets/pull/81
2015-09-23 00:52:30 +02:00
Tobias Taschner
2fff3cd29f Add wxSystemThemedControl and use it in wxMSW
wxSystemThemedControl allows to use the "system theme" (i.e. the theme used by
the system applications such as file manager and which can, surprisingly, be
different from the default one). Currently it is only implemented for wxMSW
and does nothing under the other platforms.

Use wxSystemThemedControl for wxDataViewCtrl, wxListCtrl and, optionally, if
wxTR_TWIST_BUTTONS style is specified, wxTreeCtrl to give them more native
appearance under MSW.

Closes #16414.
2015-09-17 14:49:13 +02:00
Vadim Zeitlin
7f08dbbf78 Another work around for VC8 compiler bug after ZIP64 changes
Apply the same fix as in ba851346b5 in another
place where the same bug occurs.
2015-09-11 14:59:32 +02:00
Vadim Zeitlin
ba851346b5 Try to work around VC8 compiler bug after ZIP64 changes
Add an explicit cast to ensure that both branches of the ternary operator have
the same type.
2015-09-09 03:39:17 +02:00
Vadim Zeitlin
361c6357b4 Use wxDataViewRenderer::PrepareForItem() in all ports
wxOSX and wxGTK previously used their own methods for handling the enabled
state and the attributes of the items being rendered, change them to reuse the
same methods as the generic implementation, i.e. SetEnabled() and SetAttr()
and remove the port-specific GtkSetAttr(), OSXApplyAttr() and so on.

This has the advantage of ensuring that the logic is the same for all
platforms (e.g. item enabled status wasn't handled in the same way in wxGTK as
in the other ports previously) and hopefully makes the code simpler by cutting
down on the number of virtual methods.

Notice that GtkSupportsAttrs() optimization was removed as it didn't seem to
be worth the bother (we basically saved a call to a virtual model method at a
price of a virtual renderer method call) and preserving it would have
complicated things needlessly.
2015-08-31 22:20:33 +02:00
Vadim Zeitlin
a49567109a Consistently check for type mismatch in all ports in wxDataViewCtrl.
Move the checks for the type mismatch between the type of the value returned
by wxDataViewModel and the type expected by wxDataViewRenderer into common
code. This avoids duplicating the same code in wxGTK and wxOSX and, more
importantly, means that this check is also performed in wxMSW when using the
generic version, so that the problems such as the one fixed in 3ff8c3c ("add
missing wxDataViewDateRenderer::GetDefaultType()") would be visible there too.
2015-08-29 00:03:15 +02:00
Tobias Taschner
f1abb351af Remove MicroWindows support.
MicroWindows (aka Nano-X) support hasn’t been updated since 2010 and last work for it in wxWidgets happened more than 10 years ago.
2015-08-27 11:00:16 +02:00
Tobias Taschner
26a0a24f38 Remove MS-DOS source files.
Last work on the MS-DOS files was 10 years ago and it's not a viable platform in 2015 any more.
2015-08-26 21:09:41 +02:00
Paul Cornett
63615e323a avoid GCC warning "enumeral and non-enumeral type in conditional expression" 2015-08-24 08:18:30 -07:00
Artur Wieczorek
b18f6ed10a Fix reading ZIP extra field content from local file header.
Extract extra data from buffer allocated for the local extra field.

This fixes regression after ZIP-64 additions which resulted in crashes while
running the test suite.

Closes https://github.com/wxWidgets/wxWidgets/pull/78
2015-08-24 14:41:50 +02:00
Vadim Zeitlin
e691cfe83d Fix ZIP64 code compilation under 64 bit Unix platforms.
Calling wxDataOutputStream::Write64() with a wxFileOffset argument is
ambiguous as wxFileOffset is neither wxInt64 nor wxUint64, so cast it to one
of them (it doesn't matter which) explicitly.
2015-08-14 17:15:40 +02:00
Tobias Taschner
b9d46f0719 Add ZIP64 support to wxZipInputStream and wxZipOutputStream.
Zip archives with sizes larger 4GB or containing files larger than 4GB or more
than 65k files are saved in ZIP64 format which adds a few additional footers
and extra fields to allow to exceed these limits.

This implements the PKWARE specification available at:
https://www.pkware.com/support/zip-app-note

It has been tested for compatibility with Windows internal ZIP folders, OSX
Archive Utility and 7-zip.

Closes https://github.com/wxWidgets/wxWidgets/pull/72
2015-08-14 15:39:45 +02:00
Tobias Taschner
0f39ea0963 Add support for UTF8 filenames in wxZipInputstream.
Zip files may mark filenames and comments via bit 11 in the general purpose
flags. If this flag is set use wxConvUTF8 instead of the default wxConv.
2015-08-14 15:38:50 +02:00
Artur Wieczorek
c746fee94a Compilation fixes for wxUSE_INTL==0 build.
Closes https://github.com/wxWidgets/wxWidgets/pull/70
2015-08-10 18:42:46 +02:00
Paul Cornett
4623c5ad9c Make rectangle size the same as is drawn by raster-based wxDCs
Outlined rectangles are one pixel larger with vector-based drawing,
adjust them to get consistent behavior.
Ellipses do not appear to need adjustment.
See #17091
2015-08-09 22:06:59 -07:00
Artur Wieczorek
75467841ee Moved "edit" icon from wxEditableListBox to wxArtProvider.
"Edit" icon definition used internally in wxEditableListBox is moved to
wxDefaultArtProvider and exposed as wxART_EDIT.

While there is no native version of this icon yet, it could be added in the
future and in the meanwhile this commit will be useful to use only standard
bitmaps in wxEditableListBox.
2015-08-09 01:39:41 +02:00
Catalin
8e9c327221 Always strip trailing separators from wxFileName::GetTempDir() under MSW.
In the unlikely but still possible case when neither TMP nor TEMP environment
variables are defined under Windows, we use the standard ::GetTempPath()
function which can return a path with trailing backslashes, e.g. if it takes
it from USERPROFILE environment variable. Ensure that these backslashes are
stripped in this case as well.

Closes https://github.com/wxWidgets/wxWidgets/pull/67
2015-08-09 01:39:40 +02:00
Artur Wieczorek
244ec264af Factor out duplicated code for bitmap scaling in wxArtProvider.
Move duplicated code responsible for rescaling bitmaps in wxArtProvider to the
shared wxArtPrvider::RescaleBitmap() method.

Additionally, make this new method work even in wxUSE_IMAGE==0 case.

See #17071.

See https://github.com/wxWidgets/wxWidgets/pull/64.
2015-08-08 01:04:46 +02:00
Tobias Taschner
2b3633b3c0 Add wxCheckOsVersion() to implement platform based OS version checks.
Windows implements VerifyVersionInfo api since Win2k. Starting with Windows 8.1 GetVersionEx is deprecated and may not return the expected version number if the application does not contain the correct compatibility information in its manifest. VerifyVersionInfo works independent of manifest in the executable (and is the recommend way to check).

Existing code may already use wxPlatformInfo::CheckOSVersion() so the method forwards the call to wxCheckOsVersion if initialized for the current system.
2015-08-06 11:32:38 +02:00
Tobias Taschner
388e82e70c Remove MSW code targeted at versions prior to WinXP.
In 3.1 WinXP is required so remove checks and code for prior versions.
2015-08-06 09:44:20 +02:00
Vadim Zeitlin
b7f1ac40f4 Don't hard code the number of stack frames after wxOnAssert().
The number of frames between the code containing the assert and the code
generating the stack trace is not the same under different platforms and so
hardcoding 8 for it in wxAppTraitsBase::GetAssertStackTrace() worked for wxMSW
but not e.g. wxGTK.

Instead, just ignore all frames up to and including the one for wxOnAssert()
itself. This makes the code work correctly on all platforms and it also won't
need to be modified whenever any extra functions are added/removed
(wxGTK-specific code in utilsgtk.cpp used wrong number of frames too, even
though it was presumably correct once before).
2015-07-05 18:39:37 +02:00
Vadim Zeitlin
6c43aa90b6 Fix for PCH-less build of wxProtocol after recent changes.
Include wx/app.h in protocol.cpp, don't include it in http.cpp which doesn't
need it any more.

See #17031.
2015-07-05 17:50:02 +02:00
Vadim Zeitlin
d421373c2e Use blocking sockets from non-main threads in wxProtocol.
Non-blocking sockets can't work in worker threads without additional locking
as they generate events that can be dispatched from the main thread after the
socket object, created in the worker thread, is already destroyed, so don't
even attempt to use them if wxProtocol object is created from non-main thread.

Also simplify the code by removing the calls to SetFlags(), Notify() and
{Save,Restore}State() and simply put the socket from the beginning in
blocking, wait all mode that it needs to be in.

This, with the fixes in the previous commit, allows wxHTTP and wxFTP to work
from worker threads too.

Test using wxHTTP from a worker thread in the socket client sample.

Closes #17031.
2015-07-05 16:45:07 +02:00
Vadim Zeitlin
c6c19dc580 Remove extraneous semicolons after wxDECL_FOR_STRICT_MINGW32().
This macro shouldn't be followed by a semicolon because it can be empty, so
remove the extra semicolons to avoid -Wpedantic g++ warnings about it.
2015-07-01 00:39:05 +02:00
Catalin
54f640815e Use existing helper methods in wxTextInputStream instead of casts.
No real changes, just simplify and prettify the code a bit.
2015-06-23 18:22:01 +02:00
Catalin
a2ebc9daf6 Add wxTextOutputStream::Write<>().
The new method allows to write into wxTextOutputStream anything that can be
streamed into wxString and allows to simplify the existing code.
2015-06-23 18:20:19 +02:00
Vadim Zeitlin
f72aa7b1c9 Fix reading beyond end of buffer in UTF-16 decoding code.
Verify that incrementing the input pointer doesn't take us outside the buffer.
Still accept a single trailing NUL as the string terminator.
2015-06-21 02:24:49 +02:00
Vaclav Slavik
1f5a876d32 Really fix MinGW compilation of SetThreadUILanguage-using code
09e1fbe fixed compilation, but not linking. Just use the same code as on
the 3.0 branch, with dynamic loading of SetThreadUILanguage.
2015-06-15 13:56:35 +02:00