Commit Graph

9668 Commits

Author SHA1 Message Date
Vadim Zeitlin
7092b1112e Fix caching of wxFONTSTYLE_SLANT fonts in wxTheFontList in wxMSW
Creating a font with wxFONTSTYLE_SLANT results in a font whose
GetStyle() returned wxFONTSTYLE_ITALIC, so it was never found in the
cache, resulting in, effectively, leaking memory and GDI handles because
each new call to wxFontList::FindOrCreateFont(...wxFONTSTYLE_SLANT)
created a new font.

Fix this by just hardcoding that wxFONTSTYLE_SLANT is wxFONTSTYLE_ITALIC
under MSW, this is ugly but avoids backwards incompatible (and not
obviously correct) change of making wxFont::GetStyle() return
wxFONTSTYLE_SLANT if the font was created using this style.

Notice that wxFont::GetStyle() does behave like this in wxOSX currently,
so there is an inconsistency between ports here. It would arguably be
better to make wxOSX behave like wxMSW because the actual font is really
italic and not slant/oblique and if we do this, the preprocessor
condition in this commit should be extended to cover wxOSX too.

Closes #17903.
2017-07-06 15:01:00 +02:00
Bryan Petty
ed173ed91e Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
Artur Wieczorek
a29815e19a Allow turning on/off opacity selector in wxColourDialog (wxOSX)
This feature to show/hide alpha values and opacity selector (slider) is
already implemented under wxGTK and for generic wxColourDialog.
For the sake of backward compatibility, this feature is enabled here by
default (through the corresponding property of wxColourData).
2017-07-03 22:48:04 +02:00
Artur Wieczorek
c55bbdf700 Fix setting wxGCDC clipping region with device coordinates (wxOSX)
Currently region given in device coordinates is decomposed into the stripes which are next transformed to the logical coordinates required by underlying wxGraphicsContext::Clip() function. Some of these stripes given in device coordinates can have 1-pixel height what after transformation to logical coordinates can give zero-height stripes (after rounding). This can lead to the situation that in the region transformed to logical coordinates some stripes can disappear and final transformed region shape is different from the source shape (it has gaps).
To fix this issue device coordinates of the region are not manually transformed to the logical coordinates but instead wxGraphicsContext's is temporarily set to the state where its logical coordinates are equivalent to device coordinates and thus clipping region can be applied directly.
Solution for wxMSW, wxGTK is implemented in ea8cb7a24a.

Closes #17609.
2017-07-02 14:43:50 +02:00
Artur Wieczorek
6b4be47a7a Fix retrieving clipping box after changing wxGCDC coordinates (wxOSX)
Member data containing clipping box have to be updated not only when the clipping region is explicitly changed by SetClippingRegion()/DestroyClippingRegion() but also when existing wxGraphicsContext is associated with wxGCDC using SetGraphicsContext() or when wxGCDC coordinates are transformed with SetDeviceOrigin(), SetLogicalOrigin(), SetUserScale() or SetLogicalScale().
When any of these functions is called then clipping box data are marked as invalid and retrieved from underlying graphics context using wxGraphicsContext::GetClipBox() at nearest call to GetClippingBox().
Solution for wxMSW, wxGTK was implemented in 98714ea452.

See #17646.
2017-07-02 13:55:53 +02:00
Artur Wieczorek
214ed20697 Fix wxGCDC::Clear (wxOSX)
If underlying graphics context is rotated then drawing a rectangle with origin at (0,0) doesn't cover all the drawing area. To draw over entire area we need to get extents of the actual clipping region (with applied all transformations) and use it as coordinates of the drawn rectangle.
Solution for wxMSW and wxGTK was implemented in 12eaa61212eaa61930.

See #17636.
2017-07-02 13:46:18 +02:00
Jouk
94ebaca432 Adding src/common/stringops.cpp for compilation on OpenVMS 2017-06-29 16:29:39 +02:00
Stefan Csomor
6dfa897b4a Adding a native implementation for clearing bitmap/window contexts
Filling a bitmap surface is filled with ARGB 0,0,0,0. This way eg buffered transparent layers can be properly cleared.
2017-06-25 22:48:58 +02:00
Stefan Csomor
ccf5f80f7f Using proper dylib name for cairo under osx 2017-06-25 14:42:07 +02:00
Dimitri Schoolwerth
9b9f8ac468 Extend limits of allowed time zone offsets 2017-06-23 02:02:19 +04:00
Dimitri Schoolwerth
af309e6d96 Add minus sign (U+2212) as a time zone offset indicator 2017-06-23 02:02:19 +04:00
Dimitri Schoolwerth
1a5163a882 Add time zone parsing support for only specifying HH 2017-06-23 02:02:19 +04:00
Dimitri Schoolwerth
101433190f Add time zone parsing support for HH:MM 2017-06-23 02:02:19 +04:00
Dimitri Schoolwerth
a3a4e7c638 Add time zone parsing support for 'Z' (UTC indicator) 2017-06-23 02:02:19 +04:00
Vadim Zeitlin
bfb893170e Fix initialization of SingleCharBuffer and Utf16CharBuffer data
Don't do it at all in the ctor, initializing just the first element of
the array is useless as it's overwritten by EncodeChar() anyhow, so just
leave the task of NUL-terminating the data to this function as well.

It might be even better to just have a ctor taking wxUniChar in these
classes instead and make EncodeChar() a trivial wrapper around it, but
for now just apply the minimal fix to repair the test breakage after the
last commit.

See https://github.com/wxWidgets/wxWidgets/pull/467#issuecomment-310384946
2017-06-22 15:55:24 +02:00
Vadim Zeitlin
16252f1299 Merge branch with several fixes for Coverity 8.5 warnings
See https://github.com/wxWidgets/wxWidgets/pull/505
2017-06-22 01:35:37 +02:00
Vadim Zeitlin
bb306b7ed0 Merge fixes for handling Unicode characters outside of BMP
Closes https://github.com/wxWidgets/wxWidgets/pull/467
2017-06-21 19:10:12 +02:00
Marc-Philip
d449b429e8 fix unitialized variable 2017-06-21 17:19:58 +02:00
Marc-Philip
060c7e7157 fix illegal memory access 2017-06-21 17:19:58 +02:00
Vadim Zeitlin
e121e8addb Check for view presence in wxDocument::RemoveView()
Return false and avoid calling OnChangedViewList() if the view wasn't present
in the first place.

This is not, strictly speaking, backwards compatible, but most of the existing
code doesn't seem to check the return value of RemoveView() at all and it's
hard to imagine that someone would rely on it returning true when removing a
non-existent view, so in practice this changes seems to be safe.

Closes #17888.
2017-06-20 15:32:00 +02:00
JulianSmart
f14d702e4a Limit LOCALE_SNAME avoidance to VS2010 2017-05-30 19:23:32 +01:00
Vadim Zeitlin
f8b3ecbb0e Fix bug due to undefined g_wxAnyValueTypeGlobals initialization order
This fixes the changes of commit 3543ae0177
which didn't work if any of the globals using wxPreRegisterAnyToVariant() were
instantiated before g_wxAnyValueTypeGlobals itself.

Wrap the global inside a function to ensure that we initialized it before it
is used by wxPreRegisterAnyToVariant() and not after.
2017-05-30 19:18:53 +02:00
JulianSmart
91cb0b4875 Restore previous GetLocaleName behaviour except for Norwegian Bokmål since wxLocale::Init fails otherwise for VS2010 2017-05-29 13:18:13 +01:00
Paul Cornett
3fe9d59651 Fix build with wxNO_RTTI, see #17781 2017-05-28 23:14:26 -07:00
Vadim Zeitlin
2f8a343b22 Add an option for reproducible library builds
This can be useful to the library packagers, notably under Debian.

Closes #17000.
2017-05-27 19:03:32 +02:00
Vadim Zeitlin
3543ae0177 Avoid memory leaks when wxWidgets is not used by the application
It can happen that an application using wxWidgets doesn't actually use it,
e.g. because it runs in the console mode and doesn't need the GUI stuff. In
this case, g_wxAnyValueTypeGlobals was leaked because the cleanup function of
the module, which is supposed to clean it up, was never executed.

Fix this by making this pointer a smart pointer, thus making sure that the CRT
cleans it up even if we don't. We still do it from the module OnExit() to
account for the possibility of initializing and shutting down the library more
than once.
2017-05-26 00:19:53 +02:00
Václav Slavík
2f7adacb9d Make wxTextFile::Write() much faster
Write output text in reasonably-sized chunks instead of line by line.
This is significantly faster because of lack of any caching in wxTempFile.
2017-05-23 15:59:27 +02:00
Vadim Zeitlin
5353bfc963 Minor whitespace/style fixes
Remove extra spaces, harmonize the style of "#endif" comments.
2017-05-20 17:01:58 +02:00
PB
86a2b6eb28 Just added a missing start comment token after an #endif 2017-05-20 09:25:20 +02:00
pbfordev
944f3dffd2 Refactored the previous commit regarding wxIconBundle support for icons stored MS Windows resources. 2017-05-20 08:43:50 +02:00
pbfordev
062f7c4137 Add support for loading wxIconBundle from MS Windows resource 2017-05-18 22:51:01 +02:00
ARATA Mizuki
58d940690a Better handling of supplementary wxUniChar values in some of wxString methods
On MSW, the Unicode code point is now properly encoded as UTF-16 when
assigned or appended to a wxString.

Closes #11827
2017-05-01 18:37:59 +09:00
ARATA Mizuki
8a29c5c09f Use the added wxUniChar functions in the existing code 2017-05-01 18:18:45 +09:00
Artur Wieczorek
6f59c756f6 Fix inserting items to wxRearrangeList (wxGTK)
Order array cannot be extended both in DoInsertItems() and DoInsertOneItem()
functions because DoInsertOneItem() is invoked indirectly from DoInsertItems()
(through the call to wxCheckListBox::DoInsertItems() and DoInsertItemsInLoop())
and therefore order array would be eventually extended by two items for one
inserted list item. To avoid this duplicated actions, we should resign from
overriding DoInsertOneItem().
2017-04-30 21:42:41 +02:00
Artur Wieczorek
d5c46e87a6 Fix inserting multiple items to wxRearrangeList
In wxRearrangeList implementations (like wxMSW) where DoInsertItemsInLoop()
and DoInsertOneItem() are not used to insert multiple items, DoInsertItems()
has to be overriden to do this insertion.

See #17836.
2017-04-28 23:57:36 +02:00
Artur Wieczorek
7e1b64a2eb Order array has to have the same size as item list in wxRearrangeList
Number of indices stored in the internal order array has to be the same as
number of the items, so whenever item is added or removed, order array
has to be adjusted accordingly.

Closes #17836.
2017-04-28 21:03:23 +02:00
Jouk
0c748453e7 make compile work again when wxUSE_UNICODE is not defined 2017-04-26 11:24:33 +02:00
Vadim Zeitlin
9c35db85d1 Use symbolic constant for DST shift
No real changes, just use DST_OFFSET constant instead of 3600 and remove the
"FIXME" comments as we're not actually going to fix anything here but will
just continue to assume 1 hour shift for DST.
2017-04-19 17:07:44 +02:00
Vadim Zeitlin
f6d9d7962e Revert wrong fix for wxDateTime timezone conversion to/from local
This reverts commit aaddf6be7f as it broke
handling of dates when local time zone is BST, whose offset not counting DST
is 0, as for UTC, but which still should be handled as local timezone,
see #17220.

With the current wxDateTime handling of time zones, FromTimezone(Local)
doesn't make much sense anyhow, so abandon attempts to try making it work as
to really do it we need to specify the time zone being converted from too, as
explained in the second point of #10445.

See #16585.
2017-04-19 17:07:44 +02:00
Artur Wieczorek
06963940fb Change current font only if new graphics font is successfully created
If new graphics font couldn't be created successfully there is no need
to reset current font by updating it to wxNullGraphicsFont.

Closes #17790.
2017-04-17 18:57:31 +02:00
Vadim Zeitlin
5bf8fb1879 Fix fatal bug in the last commit: restore setting argc
Initialization of wxApp::argc was mistakenly removed, breaking the code
iterating over wxApp::argv from 0 to it.

See https://github.com/wxWidgets/wxWidgets/pull/462
2017-04-16 18:06:03 +02:00
Vadim Zeitlin
70a499f635 Don't rely on argv being NULL-terminated under MSW
Since the changes of c9a458bfe8 ("Use Win32
::CommandLineToArgvW() to tokenize command line"), this is not guaranteed any
more as this Win32 function doesn't necessarily ensure it under older MSW
versions such as XP.

Just use "argc" explicitly instead of relying on this in wxCmdLineArgsArray to
fix crashing under XP.
2017-04-16 17:50:22 +02:00
Václav Slavík
2132ff0291 Fix wxTextWrapper::Wrap with widthMax=-1
Fix regression introduced in cb2474f where Wrap() stopped treating
negative widthMax as documented, i.e. not doing any wrapping at all and
only respecting newlines.
2017-04-09 14:14:49 +02:00
Václav Slavík
60bd6842e4 Fix handling of ampersands in wxDataViewCtrl markup
Handle "&" in exactly the same way as "&" in wxMarkupParser, i.e. do not
map the former to "&&" to prevent it from being interpreted as a mnemonic as
this is incompatible with using markup for anything but the control labels,
e.g. for wxDataViewCtrl items text, in which mnemonics are not recognized.
And even when using markup for control labels, it was a questionable decision
as it's really not clear at all why should the XML entity and the raw
character itself be handled differently.

Also split wxMarkupText into two classes, wxMarkupText that handles
mnemonics in the markup (which is typically a label) and a very
similar, but not derived, wxItemMarkupText that handles mnemonics-less
markup for list etc. items, uses DrawItemText() and supports
ellipsizing.

Illustrate the use of ampersands in the dataview sample.
2017-04-07 18:45:39 +02:00
Václav Slavík
166f5c0abb Fix "unknown keyboard accel" with 1-char translations
wxAcceleratorEntry::ParseAccel() incorrectly assumes that every
single-character accelerator must be a direct character code. But
that's not true, a human-friendly name for a key (e.g. "Down") may be
translated with a single character in some languages (or because a
translator decides to use a Unicode arrow…).

Amend the test to check if the character is a 7bit ASCII one. That
would be extremely unlikely to be a translation.
2017-04-05 13:52:36 +02:00
Vadim Zeitlin
e9ce55e000 Fix wxRmdir() with non-ASCII paths
Don't apply at best unnecessary, and actually harmful, as it uses a wrong
conversion, fn_str() when calling wxRmDir() which takes wxString.

Update unit tests to check that wxRmdir() now works with non-ASCII filenames
too.

Closes #17644.
2017-04-01 19:12:27 +02:00
jprotopopov
9b1afaa7a6 Don't crash in wxFFile::Eof() and Error() if file is closed
Assert and return false instead, this is more developer-friendly.

Add unit tests to check that these functions really work as expected when
called on a closed file.

Closes #17828.
2017-04-01 18:43:13 +02:00
orbitcowboy
15ae00d7a2 Declare a local variable in filefn.cpp as const
No real changes, just make a variable which is set only once const.
2017-03-31 14:09:58 +02:00
Prince David
f375293704 Fix wxSVGFileDC build with wxUSE_MARKUP==0
Just add the missing wxUSE_MARKUP checks.
2017-03-27 00:27:09 +02:00
Vadim Zeitlin
5cf9fcbb1a Add wxStandardPaths::ConfigFileConv enum for clarity and safety
Use an enum instead of type-unsafe "int" for the second parameter of the
recently added wxStandardPaths::MakeConfigFileName().

This also avoids unnatural dependency of wxStandardPaths on
wxCONFIG_USE_SUBDIR constant defined in a higher level wxFileConfig class.

No real changes, but just make things a bit more robust and hopefully more
clear.
2017-03-09 17:53:14 +01:00