This was broken by bfdf70d14a, so keep one of
the changes done there conditional on the platform to avoid changing behaviour
for the non-Mac ones.
Closes#17251.
This was broken since 39ad820bee which added
wxSEH_TRY to wxWndProc() which uses a local object with dtor when
wxDEBUG_LEVEL>=2 and so broke its compilation with MSVC which doesn't allow
the use of dtors in functions also using SEH.
Closes#17095.
Don't erase alpha channel of the entire destination image after drawing on it
using AlphaBlend(), we only need to do it for the area corresponding to the
bitmap drawn on it. This speeds things up when drawing small bitmaps with
alpha on a big bitmap without alpha selected into wxMemoryDC which is a common
case.
See #16766.
Fix several problems with surrogates in UTF-16-encoded wchar_t strings:
correct bugs in UTF-8 and UTF-32 conversion code and add surrogates support to
wxText{Input,Output}Stream classes.
Closes#17070.
::SetWindowLong() can return 0 even if no error occurred but the previous
value of the ID just was 0, so we need to examine the last error to know
whether there really was an error -- and also to reset it to 0 before calling
the function as it wouldn't reset it if it succeeds, it only sets it if it
fails.
For the programs that use wxWidgets but can also run using just CLI, exiting
the program would show a bogus GTK error
GLib-GObject-CRITICAL **: g_type_class_unref: assertion 'g_class != NULL' failed
Fix this by only releasing the references to GTK_TYPE_WIDGET if we had
acquired it in the first place.
Closes https://github.com/wxWidgets/wxWidgets/pull/129
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.
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.
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.
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.
During the transition of wxSystemSettings from a Carbon to Cocoa
implementation some previously available values weren't implemented any
more. Fix by restoring the missing values for GetMetric() :
wxSYS_SCREEN_X, wxSYS_SCREEN_Y, and (stub) wxSYS_DCLICK_MSEC.
Used values for Cocoa's wxSystemSetting::GetColour() and GetFont() have
also been compared to the Carbon implementation and found to be intact.
Regression since 515fcc66e6 .
Closes#17141
This style was unconditionally used for all multiline controls for some
reason, meaning that wxEVT_TEXT_ENTER could be received even for the controls
not using wxTE_PROCESS_ENTER explicitly, which was unexpected.
Don't do this any more to conform to the expected behaviour.
Also do use wxTE_PROCESS_ENTER for the text control supposed to allow handling
"Enter" in the text sample: surprisingly, it didn't have this style before,
although it was clearly supposed to.
Closes#1913.
The real Ctrl key is represented by "meta" modifier bit under OS X as the
"ctrl" bit is used for the Cmd key, but the previously used KeyDown() method
didn't support the meta bit at all, so key combinations using Ctrl didn't
work.
Also remove obsolete code which mapped "meta" to "ctrl", probably predating
the mapping of Cmd to "ctrl" at wx API level.
See #16243.
Currently, when a tab is closed in wxAuiNotebook, the tabs are not moved right
to use free space (on the right side of he rightmost tab), which requires
clicking "left" button to make tabs visible.
This commit changes the behaviour to keep as many tabs shown as possible.
Closes#17233.
Added opacity slider and custom colours (with alpha) previews (implemented with wxStaticBitmap controls). This feature is controlled by wxColourData::GetChooseAlpha().
Variable to hold the size of the custom colour box doesn't need to be a member variable since it's used only locally in wxGenericColourDialog::CalculateMeasurements.
We need to handle WAIT_OBJECT_0+2 value which can be returned by
WaitForThread() since 6c40531fb7 as it now waits
for two objects and not just one, failure to do this resulted in an endless
stream of asserts if any Windows messages were pending when we started waiting
for the thread.
Unlike GetVersionEx(), this function still returns the real version and not
the fiction concocted by the OS for each program depending on its manifest.
Also use OSVERSIONINFOEXW instead of OSVERSIONINFOEX as RtlGetVersion() only
exists in the Unicode version.
Closes#15321.
Don't use the content scale factor when creating bitmaps in InitPixMap(), this
is wrong and results in badly sized bitmaps at least under MSW (and possibly
GTK too).
Closes#17069.