Avoid a heap allocation on every wxDisplay creation by caching the
wxDisplayImpl objects once they're created.
Currently we never invalidate the cache, but we should add a way to do
it in the future.
This speeds up wxDisplay::GetGeometry() benchmark by a factor of 4.
Don't check for the index validity if it's 0, which is the most common
case, as index 0 is always valid and so we can avoid calling GetCount(),
which might have a non-trivial cost, completely.
Most of the methods of wxDisplay are always available, they just only
support primary display when wxUSE_DISPLAY==0, so there is no need to
check for wxUSE_DISPLAY before using them as they already contain the
only possible fallback anyhow and such checks are useless.
This incidentally closes#18115, due to removing "#if wxUSE_DISPLAY"
around wx/display.h inclusion.
Obey the LANGUAGE environment variable (if set), which is GNU
gettext's primary way of determining language preference. Apparently
ignored by wx until now, even though wx attempts to be a
reimplementation of GNU gettext.
The LANGUAGE variable may contain a list of preferred languages,
so use that list to find the best translation.
GNU gettext has supported multiple preferred languages since forever
(at least 15 years), and therefore it is odd that this wasn't already
implemented in 01f953efb2. Instead,
it was implied that Unix does not support such. (Even if GNU is not
Unix, nothing stops a wxWidgets app supporting such nevertheless.)
Closes https://github.com/wxWidgets/wxWidgets/pull/948
To reset the clipping there is necessary
to restore all CGContext settings so we need
to set them back to the previous values based
on the stored wxGraphicsContext attributes.
For compatibility with wxMSW and wxGTK rectangle
defining wxRegion needs to be in the canonical
form with (x,y) pointing to the top-left corner
and width and height >= 0.
This is more consistent with the other headers, which are safe to
include even when the corresponding feature is turned off.
Also remove the now redundant wxUSE_ENH_METAFILE checks in the source
code including this header.
See https://github.com/wxWidgets/wxWidgets/pull/951
Reset m_smallest_unminimised_size variable in Realize() before calling
GetPanelSizerMinSize() to prevent the latter from using the old value of
that variable, which could result in panel elements being cut off.
Closes#18226.
Mark the function as deprecated. It should not be part of the public API. It
cannot be overridden and manually calling it has no lasting effect because
DrawCaption calls it as well.
Closes https://github.com/wxWidgets/wxWidgets/pull/943
Preserve compatiblity font descriptions serialized using
wxNativeFontInfo::ToString() in older versions of wxWidgets and load
them correctly, instead of asserting.
aedf89b098 originally did this, then
d355af3420 reversed it as "not needed".
Turns out it is, for old serializations.
Reverse d355af3420 and implement the same
backward compatible logic in wxOSX. wxMSW uses win32-native description
and doesn't need this.
Avoid casting addresses to "long", as it can be smaller than pointer
size on some platforms and notably is under Win64.
Use wxUIntPtr instead, which is guaranteed to be large enough.
See https://github.com/wxWidgets/wxWidgets/pull/940
Always add offset and address of a stack element, even if there is no
symbolic function name, as this can still be helpful. If possible add
module as well.
Closes https://github.com/wxWidgets/wxWidgets/pull/940
The code handling the mouse events assumed the drop down button with was
10px, but wxAuiMSWToolBarArt uses a different width (14px). So clicking
on the left-most 4 pixels was not registered as a drop down click.
Allow the get (and set) the width of the drop down button of the
ToolBarArt.
Increase the detection area for drop down events, because the drop down
button is drawn 1 pixel larger than the actual size.
Rename some variables where dropdown was used instead of overflow.
Closes https://github.com/wxWidgets/wxWidgets/pull/939
In 10.14's dark mode, all views are layer-backed and the assumption that child
windows are redrawn with their parent may not be correct. Change Refresh() to
explicitly refresh child windows too.
Also explicitly refresh the page before showing it in wxPreferences, because
otherwise generic windows wouldn't be drawn correctly.
Set toplevel window's background colour to the correct value of
NSColor.windowBackgroundColor (i.e. wxSYS_COLOUR_APPWORKSPACE). Without this,
the window's frame would be rendered slightly incorrectly, because of the way
the dark mode blends colors - even when no part of the window's interior, where
the background color would be used, is visible.