Vadim Zeitlin pushed to branch master at wxWidgets / wxWidgets
Commits:
8f4b2152 by Lauri Nurmi at 2026-06-01T18:16:41+03:00
Output Windows type (Home/Pro/Enterprise) in wxGetOsDescription()
- - - - -
90880faa by Lauri Nurmi at 2026-06-01T18:16:50+03:00
Output Windows 'feature update' version in wxGetOsDescription()
This means version labels such as 25H2, 24H2.
- - - - -
ec45b6d9 by Vadim Zeitlin at 2026-06-01T19:20:30+02:00
Use wxWindowsArtProvider::CreateBitmapBundle() for stock icons
Previously CreateBitmap() was used which retrieved stock icon of fixed
(and always same) size which was subsequently rescaled, resulting in
non-optimal appearance.
Let the system return the icon of the needed size now by implementing
CreateBitmapBundle() in this provider, as this looks much better in high
DPI.
- - - - -
21e71a06 by Steve Cornett at 2026-06-01T22:44:09+02:00
Use dark mode theme for tree item buttons
Fix appearance of the buttons in wxDataViewCtrl when switching between
light and dark modes.
Closes #26547.
- - - - -
c52190e3 by Hugo Armando Castellanos Morales at 2026-06-01T23:39:03+02:00
Fix building wxBase under Android
Link with "log" library and account for Android having gethostbyname_r()
but not getservbyname_r().
Also remove unnecessary include/wx/android/setup.h and config_android.h
files which seem to have been never used since they were added back in
1b4bff8262 (Add minimal support for building non-GUI parts of wxWidgets
for Android., 2012-02-26).
Closes #26539.
Co-authored-by: Vadim Zeitlin <
va...@wxwidgets.org>
- - - - -
76991d2d by dxbjavid at 2026-06-01T23:44:40+02:00
Fix out-of-bounds read on truncated UTF-8 in wxUString
The length-counting pass in assignFromUTF8() advances p by the lead
byte's UTF-8 sequence length without checking those bytes are really
there. A string ending in a truncated multibyte sequence (e.g. a lone
0xC3 before the NUL) skips p past the terminating NUL, so the while(*p)
test then reads past the end of the buffer.
The assignFromUTF8(str, n) overload below already guards this via
utf8_pos + len > n; this just adds the equivalent check for the
terminated form.
Closes #26548.
- - - - -
daf6282a by Vadim Zeitlin at 2026-06-01T23:47:10+02:00
Merge branch 'osdesc-win' of github.com:lanurmi/wxWidgets
Output more Windows version details in wxGetOsDescription().
See #26544.
- - - - -
13 changed files:
- build/cmake/lib/base/CMakeLists.txt
- build/update-setup-h
- configure
-
configure.ac
- − include/wx/android/config_android.h
- − include/wx/android/setup.h
- include/wx/platform.h
- interface/wx/utils.h
- src/common/sckaddr.cpp
- src/common/ustring.cpp
- src/msw/artmsw.cpp
- src/msw/renderer.cpp
- src/msw/utils.cpp
Changes:
=====================================
build/cmake/lib/base/CMakeLists.txt
=====================================
@@ -81,6 +81,9 @@ if(APPLE)
endif()
elseif(UNIX)
wx_lib_link_libraries(wxbase PRIVATE ${CMAKE_DL_LIBS})
+ if(ANDROID)
+ wx_lib_link_libraries(wxbase PUBLIC log)
+ endif()
endif()
=====================================
build/update-setup-h
=====================================
@@ -107,7 +107,6 @@ if [ ! -f wxwin.m4 ]; then
exit 1
fi
-update_common_setup_h include/wx/android/setup.h
update_common_setup_h include/wx/msw/setup.h
update_common_setup_h include/wx/gtk/setup.h
update_common_setup_h include/wx/osx/setup.h
=====================================
configure
=====================================
@@ -3910,6 +3910,12 @@ case "${host}" in
CPPFLAGS="-D_HPUX_SOURCE $CPPFLAGS"
;;
+ *-*-android* )
+ USE_LINUX=1
+ $as_echo "#define __LINUX__ 1" >>confdefs.h
+
+ LIBS="-llog $LIBS"
+ ;;
*-*-linux* )
USE_LINUX=1
$as_echo "#define __LINUX__ 1" >>confdefs.h
=====================================
configure.ac
=====================================
@@ -154,6 +154,11 @@ case "${host}" in
dnl _HPUX_SOURCE is defined, see stdsyms(5)
CPPFLAGS="-D_HPUX_SOURCE $CPPFLAGS"
;;
+ *-*-android* )
+ USE_LINUX=1
+ AC_DEFINE(__LINUX__)
+ LIBS="-llog $LIBS"
+ ;;
*-*-linux* )
USE_LINUX=1
AC_DEFINE(__LINUX__)
=====================================
include/wx/android/config_android.h deleted
=====================================
@@ -1,57 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/android/config_android.h
-// Purpose: configurations for Android builds
-// Author: Zsolt Bakcsi
-// Created: 2011-12-02
-// RCS-ID:
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-// Please note that most of these settings are based on config_xcode.h and
-// 'fine-tuned' on a trial-and-error basis. This means, no in-depth analysis
-// of Android docs / source was done.
-
-// For Qt under Android, use the default configuration procedure as most
-// features should be supported and the following fixed definitions will
-// cause compiler warnings or other issues.
-
-#if !defined(__WXQT__)
-
-#define wxUSE_UNIX 1
-#define __UNIX__ 1
-
-#define HAVE_NANOSLEEP
-#define HAVE_FCNTL 1
-#define HAVE_GCC_ATOMIC_BUILTINS
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GMTIME_R 1
-#define HAVE_INET_ADDR 1
-#define HAVE_INET_ATON 1
-#define HAVE_LOCALTIME_R 1
-#define HAVE_PTHREAD_MUTEXATTR_T 1
-#define HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL 1
-#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
-#define HAVE_THREAD_PRIORITY_FUNCTIONS 1
-#define HAVE_SSIZE_T 1
-#define HAVE_WPRINTF 1
-
-#define SIZEOF_INT 4
-#define SIZEOF_LONG 4
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF_SIZE_T 4
-#define SIZEOF_VOID_P 4
-#define SIZEOF_WCHAR_T 4
-
-#define wxHAVE_PTHREAD_CLEANUP 1
-#define wxNO_WOSTREAM
-#define wxSIZE_T_IS_UINT 1
-
-#define wxUSE_SELECT_DISPATCHER 1
-
-#ifdef HAVE_PTHREAD_CANCEL
-// Android doesn't support pthread_cancel().
-#undef HAVE_PTHREAD_CANCEL
-#endif
-
-#endif
=====================================
include/wx/android/setup.h deleted
=====================================
@@ -1,1662 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/android/setup.h
-// Purpose: Configuration for the android build of the library
-// Author: Julian Smart
-// Created: 01/02/97
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_SETUP_H_
-#define _WX_SETUP_H_
-
-/* --- start common options --- */
-// ----------------------------------------------------------------------------
-// global settings
-// ----------------------------------------------------------------------------
-
-// define this to 0 when building wxBase library - this can also be done from
-// makefile/project file overriding the value here
-#ifndef wxUSE_GUI
- #define wxUSE_GUI 1
-#endif // wxUSE_GUI
-
-// ----------------------------------------------------------------------------
-// compatibility settings
-// ----------------------------------------------------------------------------
-
-// This setting determines the compatibility with 3.0 API: set it to 0 to
-// flag all cases of using deprecated functions.
-//
-// Default is 0, but you may still set it to 1 if you can't update the existing
-// code relying on the deprecated functions. Please do consider updating it if
-// at all possible instead of changing this to 1, however, as these functions
-// will completely disappear in the next wxWidgets release.
-//
-// Recommended setting: 0 (please update your code)
-#define WXWIN_COMPATIBILITY_3_0 0
-
-// This setting determines the compatibility with 3.2 API: set it to 0 to
-// flag all cases of using deprecated functions.
-//
-// Default is 1 but please try building your code with 0 as the default will
-// change to 0 in the next version and the deprecated functions will disappear
-// in the version after it completely.
-//
-// Recommended setting: 0 (please update your code)
-#define WXWIN_COMPATIBILITY_3_2 1
-
-// MSW-only: Set to 0 for accurate dialog units, else 1 for old behaviour when
-// default system font is used for wxWindow::GetCharWidth/Height() instead of
-// the current font.
-//
-// Default is 0
-//
-// Recommended setting: 0
-#define wxDIALOG_UNIT_COMPATIBILITY 0
-
-// If set to 1, enables "reproducible builds", i.e. build output should be
-// exactly the same if the same build is redone again. As using __DATE__ and
-// __TIME__ macros clearly makes the build irreproducible, setting this option
-// to 1 disables their use in the library code.
-//
-// Default is 0
-//
-// Recommended setting: 0
-#define wxUSE_REPRODUCIBLE_BUILD 0
-
-// ----------------------------------------------------------------------------
-// wxString encoding settings
-// ----------------------------------------------------------------------------
-
-// If set to 1, wxString uses UTF-8 internally instead of UTF-32 (Unix) or
-// UTF-16 (MSW).
-//
-// This option can be set to 1 if you want to avoid the overhead of converting
-// between wchar_t encoding (UTF-32 or UTF-16) used by wxString by default and
-// UTF-8, i.e. it makes functions such as wxString::FromUTF8() and utf8_str()
-// much more efficient and constant time, as they don't perform any conversion
-// any longer, which is especially interesting in wxGTK where these functions
-// are used every time a GTK function is called. But this is compensated by
-// making all the non-UTF-8 functions less efficient, notably requiring a
-// conversion when passing any string to Win32 API.
-//
-// Moreover, accessing strings by character index becomes, in general, a O(N)
-// iteration, where N is the index, so only enable this option if you don't use
-// index access for arbitrary characters (unless it is done inside a loop
-// consecutively for all characters as this special access pattern is optimized
-// by caching the last accessed index -- but using iterate, or range for loop,
-// is still better even in this case), as otherwise you may observe significant
-// slowdown in your program performance.
-//
-// Default is 0
-//
-// Recommended setting: 0 but can be set to 1 for optimization purposes and if
-// you're sure that you're not using loops using indices to iterate over
-// strings in your code.
-#define wxUSE_UNICODE_UTF8 0
-
-// If set to 1, assume that all narrow strings use UTF-8.
-//
-// By default, wxWidgets assumes that all "char*" strings use the encoding of
-// the current locale, which is commonly, but not always, UTF-8 under Unix but
-// rarely UTF-8 under MSW. This option tells the library that all strings
-// always use UTF-8, avoiding the need to perform any conversions between them
-// and wxString internal representation when wxUSE_UNICODE_UTF8 is set to 1.
-//
-// In fact, using this option only makes sense when wxUSE_UNICODE_UTF8==1 and
-// it must not be enabled without the other option.
-//
-// Default is 0
-//
-// Recommended setting: 0 but can be set to 1 if your program is always run in
-// an UTF-8 locale.
-#define wxUSE_UTF8_LOCALE_ONLY 0
-
-// ----------------------------------------------------------------------------
-// debugging settings
-// ----------------------------------------------------------------------------
-
-// wxDEBUG_LEVEL will be defined as 1 in wx/debug.h so normally there is no
-// need to define it here. You may do it for two reasons: either completely
-// disable/compile out the asserts in release version (then do it inside #ifdef
-// NDEBUG) or, on the contrary, enable more asserts, including the usually
-// disabled ones, in the debug build (then do it inside #ifndef NDEBUG)
-//
-// #ifdef NDEBUG
-// #define wxDEBUG_LEVEL 0
-// #else
-// #define wxDEBUG_LEVEL 2
-// #endif
-
-// wxHandleFatalExceptions() may be used to catch the program faults at run
-// time and, instead of terminating the program with a usual GPF message box,
-// call the user-defined wxApp::OnFatalException() function. If you set
-// wxUSE_ON_FATAL_EXCEPTION to 0, wxHandleFatalExceptions() will not work.
-//
-// This setting is for Win32 only and can only be enabled if your compiler
-// supports Win32 structured exception handling (currently only VC++ does)
-//
-// Default is 1
-//
-// Recommended setting: 1 if your compiler supports it.
-#define wxUSE_ON_FATAL_EXCEPTION 1
-
-// Set this to 1 to be able to generate a human-readable (unlike
-// machine-readable minidump created by wxCrashReport::Generate()) stack back
-// trace when your program crashes using wxStackWalker
-//
-// Default is 1 if supported by the compiler.
-//
-// Recommended setting: 1, set to 0 if your programs never crash
-#define wxUSE_STACKWALKER 1
-
-// Set this to 1 to compile in wxDebugReport class which allows you to create
-// and optionally upload to your web site a debug report consisting of back
-// trace of the crash (if wxUSE_STACKWALKER == 1) and other information.
-//
-// Default is 1 if supported by the compiler.
-//
-// Recommended setting: 1, it is compiled into a separate library so there
-// is no overhead if you don't use it
-#define wxUSE_DEBUGREPORT 1
-
-
-// ----------------------------------------------------------------------------
-// global features
-// ----------------------------------------------------------------------------
-
-// Compile library in exception-safe mode? If set to 1, the library will try to
-// behave correctly in presence of exceptions (even though it still will not
-// use the exceptions itself) and notify the user code about any unhandled
-// exceptions. If set to 0, propagation of the exceptions through the library
-// code will lead to undefined behaviour -- but the code itself will be
-// slightly smaller and faster.
-//
-// Note that like wxUSE_THREADS this option is automatically set to 0 if
-// wxNO_EXCEPTIONS is defined.
-//
-// Default is 1
-//
-// Recommended setting: depends on whether you intend to use C++ exceptions
-// in your own code (1 if you do, 0 if you don't)
-#define wxUSE_EXCEPTIONS 1
-
-// Set wxUSE_EXTENDED_RTTI to 1 to use extended RTTI
-//
-// This feature is incomplete and experimental, please only enable it if
-// you want to participate in its development.
-//
-// Recommended setting: 0 (unless you wish to try working on it).
-#define wxUSE_EXTENDED_RTTI 0
-
-// Support for message/error logging. This includes wxLogXXX() functions and
-// wxLog and derived classes. Don't set this to 0 unless you really know what
-// you are doing.
-//
-// Default is 1
-//
-// Recommended setting: 1 (always)
-#define wxUSE_LOG 1
-
-// Recommended setting: 1
-#define wxUSE_LOGWINDOW 1
-
-// Recommended setting: 1
-#define wxUSE_LOGGUI 1
-
-// Recommended setting: 1
-#define wxUSE_LOG_DIALOG 1
-
-// Support for command line parsing using wxCmdLineParser class.
-//
-// Default is 1
-//
-// Recommended setting: 1 (can be set to 0 if you don't use the cmd line)
-#define wxUSE_CMDLINE_PARSER 1
-
-// Support for multithreaded applications: if 1, compile in thread classes
-// (thread.h) and make the library a bit more thread safe. Although thread
-// support is quite stable by now, you may still consider recompiling the
-// library without it if you have no use for it - this will result in a
-// somewhat smaller and faster operation.
-//
-// Notice that if wxNO_THREADS is defined, wxUSE_THREADS is automatically reset
-// to 0 in wx/chkconf.h, so, for example, if you set USE_THREADS to 0 in
-// build/msw/config.* file this value will have no effect.
-//
-// Default is 1
-//
-// Recommended setting: 0 unless you do plan to develop MT applications
-#define wxUSE_THREADS 1
-
-// If enabled, compiles wxWidgets streams classes
-//
-// wx stream classes are used for image IO, process IO redirection, network
-// protocols implementation and much more and so disabling this results in a
-// lot of other functionality being lost.
-//
-// Default is 1
-//
-// Recommended setting: 1 as setting it to 0 disables many other things
-#define wxUSE_STREAMS 1
-
-// Support for positional parameters (e.g. %1$d, %2$s ...) in wxVsnprintf.
-// Note that if the system's implementation does not support positional
-// parameters, setting this to 1 forces the use of the wxWidgets implementation
-// of wxVsnprintf. The standard vsnprintf() supports positional parameters on
-// many Unix systems but usually doesn't under Windows.
-//
-// Positional parameters are very useful when translating a program since using
-// them in formatting strings allow translators to correctly reorder the
-// translated sentences.
-//
-// Default is 1
-//
-// Recommended setting: 1 if you want to support multiple languages
-#define wxUSE_PRINTF_POS_PARAMS 1
-
-// ----------------------------------------------------------------------------
-// Interoperability with the standard library.
-// ----------------------------------------------------------------------------
-
-// Use standard C++ containers to implement all wx container classes.
-//
-// Default is 1.
-//
-// Recommended setting: 1 unless you really need to set it to 0 to preserve
-// compatibility with the existing code.
-#define wxUSE_STD_CONTAINERS 1
-
-// Use standard C++ streams if 1 instead of wx streams in some places. If
-// disabled, wx streams are used instead.
-//
-// Notice that enabling this does not replace wx streams with std streams
-// everywhere, in a lot of places wx streams are used no matter what and in
-// other places this option enables the use of standard streams in _addition_
-// to the wx ones. The only exception is wxDocument which defines functions
-// working with standard streams only when this option is on, and only
-// functions working with wx streams when it's off.
-//
-// Default is 1.
-//
-// Recommended setting: 1, there should be no reason to disable it.
-#define wxUSE_STD_IOSTREAM 1
-
-// ----------------------------------------------------------------------------
-// wxString-related options
-// ----------------------------------------------------------------------------
-
-// Provide unsafe implicit conversions in wxString to "const char*" or
-// "std::string" (only if implicit conversions are not disabled entirely).
-//
-// Default is 1 for compatibility reasons, it is recommended to set
-// this to 0 because converting wxString to a narrow (non-Unicode) string may
-// fail unless a locale using UTF-8 encoding is used, which is never the case
-// under MSW, for example, hence such conversions can result in silent data
-// loss.
-//
-// Recommended setting: 1 to remain compatible with the official builds of
-// wxWidgets, but define wxNO_UNSAFE_WXSTRING_CONV when compiling the
-// application code to effectively disallow using these conversions.
-#define wxUSE_UNSAFE_WXSTRING_CONV 1
-
-// Define implicit conversions of wxString to std::wstring and std::string if
-// wxUSE_UNSAFE_WXSTRING_CONV is also enabled.
-//
-// Note that wxString can always be constructed from std::[w]string, whether
-// this option is turned on or off, it only enables implicit conversion in the
-// other direction.
-//
-// If this setting is changed to 1, implicit conversions to pointer types are
-// disabled as defining both kinds of implicit conversions would result in
-// ambiguities.
-//
-// Default is 0.
-//
-// Recommended setting: 0, use wxString::ToStdWstring() and ToStdString() or,
-// preferably, utf8_string() explicitly instead.
-#define wxUSE_STD_STRING_CONV_IN_WXSTRING 0
-
-// ----------------------------------------------------------------------------
-// non GUI features selection
-// ----------------------------------------------------------------------------
-
-// Set wxUSE_BASE64 to 1, to compile in Base64 support. This is required for
-// storing binary data in wxConfig on most platforms.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (but can be safely disabled if you don't use it)
-#define wxUSE_BASE64 1
-
-// Set this to 1 to be able to use wxEventLoop even in console applications
-// (i.e. using base library only, without GUI). This is mostly useful for
-// processing socket events but is also necessary to use timers in console
-// applications
-//
-// Default is 1.
-//
-// Recommended setting: 1 (but can be safely disabled if you don't use it)
-#define wxUSE_CONSOLE_EVENTLOOP 1
-
-// Set wxUSE_(F)FILE to 1 to compile wx(F)File classes. wxFile uses low level
-// POSIX functions for file access, wxFFile uses ANSI C stdio.h functions.
-//
-// Default is 1
-//
-// Recommended setting: 1 (wxFile is highly recommended as it is required by
-// i18n code, wxFileConfig and others)
-#define wxUSE_FILE 1
-#define wxUSE_FFILE 1
-
-// Use wxFSVolume class providing access to the configured/active mount points
-//
-// Default is 1
-//
-// Recommended setting: 1 (but may be safely disabled if you don't use it)
-#define wxUSE_FSVOLUME 1
-
-// Use wxSecretStore class for storing passwords using OS-specific facilities.
-//
-// Default is 1
-//
-// Recommended setting: 1 (but may be safely disabled if you don't use it)
-#define wxUSE_SECRETSTORE 1
-
-// Allow the use of the OS built-in spell checker in wxTextCtrl.
-//
-// Default is 1, the corresponding wxTextCtrl functions simply won't do
-// anything if the functionality is not supported by the current platform.
-//
-// Recommended setting: 1 unless you want to save a tiny bit of code.
-#define wxUSE_SPELLCHECK 1
-
-// Use wxStandardPaths class which allows to retrieve some standard locations
-// in the file system
-//
-// Default is 1
-//
-// Recommended setting: 1 (may be disabled to save space, but not much)
-#define wxUSE_STDPATHS 1
-
-// use wxTextBuffer class: required by wxTextFile
-#define wxUSE_TEXTBUFFER 1
-
-// use wxTextFile class: requires wxFile and wxTextBuffer, required by
-// wxFileConfig
-#define wxUSE_TEXTFILE 1
-
-// i18n support: _() macro, wxLocale class.
-#define wxUSE_INTL 1
-
-// Provide wxFoo_l() functions similar to standard foo() functions but taking
-// an extra locale parameter.
-//
-// Notice that this is fully implemented only for the systems providing POSIX
-// xlocale support or Microsoft Visual C++ >= 8 (which provides proprietary
-// almost-equivalent of xlocale functions), otherwise wxFoo_l() functions will
-// only work for the current user locale and "C" locale. You can use
-// wxHAS_XLOCALE_SUPPORT to test whether the full support is available.
-//
-// Default is 1
-//
-// Recommended setting: 1 but may be disabled if you are writing programs
-// running only in C locale anyhow
-#define wxUSE_XLOCALE 1
-
-// Set wxUSE_DATETIME to 1 to compile the wxDateTime and related classes which
-// allow to manipulate dates, times and time intervals.
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_DATETIME 1
-
-// Set wxUSE_TIMER to 1 to compile wxTimer class
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_TIMER 1
-
-// Use wxStopWatch class.
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_STOPWATCH 1
-
-// Set wxUSE_FSWATCHER to 1 if you want to enable wxFileSystemWatcher
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_FSWATCHER 1
-
-// Setting wxUSE_CONFIG to 1 enables the use of wxConfig and related classes
-// which allow the application to store its settings in the persistent
-// storage. Setting this to 1 will also enable on-demand creation of the
-// global config object in wxApp.
-//
-// See also wxUSE_CONFIG_NATIVE below.
-//
-// Recommended setting: 1
-#define wxUSE_CONFIG 1
-
-// If wxUSE_CONFIG is 1, you may choose to use either the native config
-// classes under Windows (using the registry) or the portable text file
-// format used by the config classes under Unix.
-//
-// Default is 1 to use native classes. Note that you may still use
-// wxFileConfig even if you set this to 1 - just the config object created by
-// default for the applications needs will be a wxRegConfig or wxIniConfig and
-// not wxFileConfig.
-//
-// Recommended setting: 1
-#define wxUSE_CONFIG_NATIVE 1
-
-// If wxUSE_DIALUP_MANAGER is 1, compile in wxDialUpManager class which allows
-// to connect/disconnect from the network and be notified whenever the dial-up
-// network connection is established/terminated. Requires wxUSE_DYNAMIC_LOADER.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_DIALUP_MANAGER 1
-
-// Compile in classes for run-time DLL loading and function calling.
-//
-// This is required by wxMSW implementation and so is always enabled there,
-// regardless of the value here. For the other ports this option can be
-// disabled to save a tiny amount of code, but there is typically no reason to
-// do it.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_DYNLIB_CLASS 1
-
-// experimental, don't use for now
-#define wxUSE_DYNAMIC_LOADER 1
-
-// Set to 1 to use socket classes
-#define wxUSE_SOCKETS 1
-
-// Set to 1 to use ipv6 socket classes (requires wxUSE_SOCKETS)
-//
-// Default is 1.
-//
-// Recommended setting: 1.
-#define wxUSE_IPV6 1
-
-// Set to 1 to enable virtual file systems (required by wxHTML)
-#define wxUSE_FILESYSTEM 1
-
-// Set to 1 to enable virtual ZIP filesystem (requires wxUSE_FILESYSTEM)
-#define wxUSE_FS_ZIP 1
-
-// Set to 1 to enable virtual archive filesystem (requires wxUSE_FILESYSTEM)
-#define wxUSE_FS_ARCHIVE 1
-
-// Set to 1 to enable virtual Internet filesystem (requires wxUSE_FILESYSTEM)
-#define wxUSE_FS_INET 1
-
-// wxArchive classes for accessing archives such as zip and tar
-#define wxUSE_ARCHIVE_STREAMS 1
-
-// Set to 1 to compile wxZipInput/OutputStream classes.
-#define wxUSE_ZIPSTREAM 1
-
-// Set to 1 to compile wxTarInput/OutputStream classes.
-#define wxUSE_TARSTREAM 1
-
-// Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
-// wxUSE_LIBPNG
-#define wxUSE_ZLIB 1
-
-// Set to 1 if liblzma is available to enable wxLZMA{Input,Output}Stream
-// classes.
-//
-// Notice that if you enable this build option when not using configure or
-// CMake, you need to ensure that liblzma headers and libraries are available
-// (i.e. by building the library yourself or downloading its binaries) and can
-// be found, either by copying them to one of the locations searched by the
-// compiler/linker by default (e.g. any of the directories in the INCLUDE or
-// LIB environment variables, respectively, when using MSVC) or modify the
-// make- or project files to add references to these directories.
-//
-// Default is 0 under MSW, auto-detected by configure.
-//
-// Recommended setting: 1 if you need LZMA compression.
-#define wxUSE_LIBLZMA 0
-
-// If enabled, the code written by Apple will be used to write, in a portable
-// way, float on the disk. See extended.c for the license which is different
-// from wxWidgets one.
-//
-// Default is 1.
-//
-// Recommended setting: 1 unless you don't like the license terms (unlikely)
-#define wxUSE_APPLE_IEEE 1
-
-// Joystick support class
-#define wxUSE_JOYSTICK 1
-
-// wxFontEnumerator class
-#define wxUSE_FONTENUM 1
-
-// wxFontMapper class
-#define wxUSE_FONTMAP 1
-
-// wxMimeTypesManager class
-#define wxUSE_MIMETYPE 1
-
-// wxWebRequest allows usage of system libraries for HTTP(S) requests.
-//
-// Note that for wxWebRequest to be built, at least one of its backends must be
-// available. Under MSW and macOS this will always be the case unless
-// explicitly disabled.
-//
-// Default is 1
-//
-// Recommended setting: 1, setting it to 0 may be useful to avoid dependencies
-// on libcurl on Unix systems.
-#define wxUSE_WEBREQUEST 1
-
-// wxWebRequest backend based on NSURLSession
-//
-// Default is 1 under macOS.
-//
-// Recommended setting: 1, can be set to 0 if wxUSE_WEBREQUEST_CURL==1,
-// otherwise wxWebRequest won't be available at all under Mac.
-#ifdef __APPLE__
-#define wxUSE_WEBREQUEST_URLSESSION wxUSE_WEBREQUEST
-#else
-#define wxUSE_WEBREQUEST_URLSESSION 0
-#endif
-
-// wxWebRequest backend based on libcurl, can be used under all platforms.
-//
-// Default is 0 for MSW and macOS, detected automatically when using configure.
-//
-// Recommended setting: 0 on Windows and macOS, otherwise 1 as it is required
-// for wxWebRequest to be available at all.
-#define wxUSE_WEBREQUEST_CURL 0
-
-// wxProtocol and related classes: if you want to use either of wxFTP, wxHTTP
-// or wxURL you need to set this to 1.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_PROTOCOL 1
-
-// The settings for the individual URL schemes
-#define wxUSE_PROTOCOL_FILE 1
-#define wxUSE_PROTOCOL_FTP 1
-#define wxUSE_PROTOCOL_HTTP 1
-
-// Define this to use wxURL class.
-#define wxUSE_URL 1
-
-// Define this to use native platform url and protocol support.
-// Currently valid only for MS-Windows.
-// Note: if you set this to 1, you can open ftp/http/gopher sites
-// and obtain a valid input stream for these sites
-// even when you set wxUSE_PROTOCOL_FTP/HTTP to 0.
-// Doing so reduces the code size.
-//
-// This code is experimental and subject to change.
-#define wxUSE_URL_NATIVE 0
-
-// Support for wxVariant class used in several places throughout the library,
-// notably in wxDataViewCtrl API.
-//
-// Default is 1.
-//
-// Recommended setting: 1 unless you want to reduce the library size as much as
-// possible in which case setting this to 0 can gain up to 100KB.
-#define wxUSE_VARIANT 1
-
-// Support for wxAny class, the successor for wxVariant.
-//
-// Default is 1.
-//
-// Recommended setting: 1 unless you want to reduce the library size by a small amount,
-// or your compiler cannot for some reason cope with complexity of templates used.
-#define wxUSE_ANY 1
-
-// Support for regular expression matching via wxRegEx class.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_REGEX 1
-
-// wxSystemOptions class
-#define wxUSE_SYSTEM_OPTIONS 1
-
-// wxSound class
-#define wxUSE_SOUND 1
-
-// Use wxMediaCtrl
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_MEDIACTRL 1
-
-// Use wxWidget's XRC XML-based resource system. Recommended.
-//
-// Default is 1
-//
-// Recommended setting: 1 (requires wxUSE_XML)
-#define wxUSE_XRC 1
-
-// XML parsing classes.
-//
-// Default is 1
-//
-// Recommended setting: 1 (required by XRC)
-#define wxUSE_XML 1
-
-// Use wxWidget's AUI docking system
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_AUI 1
-
-// Use wxWidget's Ribbon classes for interfaces
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_RIBBON 1
-
-// Use wxPropertyGrid.
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_PROPGRID 1
-
-// Use wxStyledTextCtrl, a wxWidgets Scintilla wrapper.
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_STC 1
-
-// Use wxWidget's web viewing classes
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_WEBVIEW 1
-
-// Use the Chromium Embedded Framework wxWebview backend
-//
-// Default is 0
-//
-// Recommended setting: 0
-#define wxUSE_WEBVIEW_CHROMIUM 0
-
-// Use the IE wxWebView backend
-//
-// Default is 1 on MSW
-//
-// Recommended setting: 1
-#ifdef __WXMSW__
-#define wxUSE_WEBVIEW_IE 1
-#else
-#define wxUSE_WEBVIEW_IE 0
-#endif
-
-// Use the Edge (Chromium) wxWebView backend (Requires WebView2 SDK)
-//
-// Default is 0 because WebView2 is not always available, set it to 1 if you do have it.
-//
-// Recommended setting: 1 when building for Windows with WebView2 SDK
-#define wxUSE_WEBVIEW_EDGE 0
-
-// Use the Edge (Chromium) wxWebView backend without loader DLL
-//
-// Default is 0, set it to 1 if you don't want to depend on WebView2Loader.dll.
-//
-// Recommended setting: 0
-#define wxUSE_WEBVIEW_EDGE_STATIC 0
-
-// Use the WebKit wxWebView backend
-//
-// Default is 1 on GTK and OSX
-//
-// Recommended setting: 1
-#if (defined(__WXGTK__) && !defined(__WXGTK3__)) || defined(__WXOSX__)
-#define wxUSE_WEBVIEW_WEBKIT 1
-#else
-#define wxUSE_WEBVIEW_WEBKIT 0
-#endif
-
-// Use the WebKit2 wxWebView backend
-//
-// Default is 1 on GTK3
-//
-// Recommended setting: 1
-#if defined(__WXGTK3__)
-#define wxUSE_WEBVIEW_WEBKIT2 1
-#else
-#define wxUSE_WEBVIEW_WEBKIT2 0
-#endif
-
-// Enable wxGraphicsContext and related classes for a modern 2D drawing API.
-//
-// Default is 1.
-//
-// Recommended setting: 1, setting it to 0 disables a lot of functionality.
-#define wxUSE_GRAPHICS_CONTEXT 1
-
-// Enable wxGraphicsContext implementation using Cairo library.
-//
-// This is not needed under Windows and detected automatically by configure
-// under other systems, however you may set this to 1 manually if you installed
-// Cairo under Windows yourself and prefer to use it instead the native GDI+
-// implementation.
-//
-// Default is 0
-//
-// Recommended setting: 0
-#define wxUSE_CAIRO 0
-
-
-// ----------------------------------------------------------------------------
-// Individual GUI controls
-// ----------------------------------------------------------------------------
-
-// You must set wxUSE_CONTROLS to 1 if you are using any controls at all
-// (without it, wxControl class is not compiled)
-//
-// Default is 1
-//
-// Recommended setting: 1 (don't change except for very special programs)
-#define wxUSE_CONTROLS 1
-
-// Support markup in control labels, i.e. provide wxControl::SetLabelMarkup().
-// Currently markup is supported only by a few controls and only some ports but
-// their number will increase with time.
-//
-// Default is 1
-//
-// Recommended setting: 1 (may be set to 0 if you want to save on code size)
-#define wxUSE_MARKUP 1
-
-// wxPopupWindow class is a top level transient window. It is currently used
-// to implement wxTipWindow
-//
-// Default is 1
-//
-// Recommended setting: 1 (may be set to 0 if you don't wxUSE_TIPWINDOW)
-#define wxUSE_POPUPWIN 1
-
-// wxTipWindow allows to implement the custom tooltips, it is used by the
-// context help classes. Requires wxUSE_POPUPWIN.
-//
-// Default is 1
-//
-// Recommended setting: 1 (may be set to 0)
-#define wxUSE_TIPWINDOW 1
-
-// Each of the settings below corresponds to one wxWidgets control. They are
-// all switched on by default but may be disabled if you are sure that your
-// program (including any standard dialogs it can show!) doesn't need them and
-// if you desperately want to save some space. If you use any of these you must
-// set wxUSE_CONTROLS as well.
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_ACTIVITYINDICATOR 1 // wxActivityIndicator
-#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
-#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
-#define wxUSE_BUTTON 1 // wxButton
-#define wxUSE_BMPBUTTON 1 // wxBitmapButton
-#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
-#define wxUSE_CHECKBOX 1 // wxCheckBox
-#define wxUSE_CHECKLISTBOX 1 // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
-#define wxUSE_CHOICE 1 // wxChoice
-#define wxUSE_COLLPANE 1 // wxCollapsiblePane
-#define wxUSE_COLOURPICKERCTRL 1 // wxColourPickerCtrl
-#define wxUSE_COMBOBOX 1 // wxComboBox
-#define wxUSE_COMMANDLINKBUTTON 1 // wxCommandLinkButton
-#define wxUSE_DATAVIEWCTRL 1 // wxDataViewCtrl
-#define wxUSE_DATEPICKCTRL 1 // wxDatePickerCtrl
-#define wxUSE_DIRPICKERCTRL 1 // wxDirPickerCtrl
-#define wxUSE_EDITABLELISTBOX 1 // wxEditableListBox
-#define wxUSE_FILECTRL 1 // wxFileCtrl
-#define wxUSE_FILEPICKERCTRL 1 // wxFilePickerCtrl
-#define wxUSE_FONTPICKERCTRL 1 // wxFontPickerCtrl
-#define wxUSE_GAUGE 1 // wxGauge
-#define wxUSE_HEADERCTRL 1 // wxHeaderCtrl
-#define wxUSE_HYPERLINKCTRL 1 // wxHyperlinkCtrl
-#define wxUSE_LISTBOX 1 // wxListBox
-#define wxUSE_LISTCTRL 1 // wxListCtrl
-#define wxUSE_RADIOBOX 1 // wxRadioBox
-#define wxUSE_RADIOBTN 1 // wxRadioButton
-#define wxUSE_RICHMSGDLG 1 // wxRichMessageDialog
-#define wxUSE_SCROLLBAR 1 // wxScrollBar
-#define wxUSE_SEARCHCTRL 1 // wxSearchCtrl
-#define wxUSE_SLIDER 1 // wxSlider
-#define wxUSE_SPINBTN 1 // wxSpinButton
-#define wxUSE_SPINCTRL 1 // wxSpinCtrl
-#define wxUSE_STATBOX 1 // wxStaticBox
-#define wxUSE_STATLINE 1 // wxStaticLine
-#define wxUSE_STATTEXT 1 // wxStaticText
-#define wxUSE_STATBMP 1 // wxStaticBitmap
-#define wxUSE_TEXTCTRL 1 // wxTextCtrl
-#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
-#define wxUSE_TOGGLEBTN 1 // requires wxButton
-#define wxUSE_TREECTRL 1 // wxTreeCtrl
-#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
-
-// Use generic version of wxDataViewCtrl even if a native one is available?
-//
-// Default is 1.
-//
-// Recommended setting: 1, but can be set to 0 if your program is affected by
-// the native control limitations.
-#define wxUSE_NATIVE_DATAVIEWCTRL 1
-
-// Use a status bar class? Depending on the value of wxUSE_NATIVE_STATUSBAR
-// below either wxStatusBar95 or a generic wxStatusBar will be used.
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_STATUSBAR 1
-
-// Two status bar implementations are available under Win32: the generic one
-// or the wrapper around native control. For native look and feel the native
-// version should be used.
-//
-// Default is 1 for the platforms where native status bar is supported.
-//
-// Recommended setting: 1 (there is no advantage in using the generic one)
-#define wxUSE_NATIVE_STATUSBAR 1
-
-// wxToolBar related settings: if wxUSE_TOOLBAR is 0, don't compile any toolbar
-// classes at all. Otherwise, use the native toolbar class unless
-// wxUSE_TOOLBAR_NATIVE is 0.
-//
-// Default is 1 for all settings.
-//
-// Recommended setting: 1 for wxUSE_TOOLBAR and wxUSE_TOOLBAR_NATIVE.
-#define wxUSE_TOOLBAR 1
-#define wxUSE_TOOLBAR_NATIVE 1
-
-// wxNotebook is a control with several "tabs" located on one of its sides. It
-// may be used to logically organise the data presented to the user instead of
-// putting everything in one huge dialog. It replaces wxTabControl and related
-// classes of wxWin 1.6x.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_NOTEBOOK 1
-
-// wxListbook control is similar to wxNotebook but uses wxListCtrl instead of
-// the tabs
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_LISTBOOK 1
-
-// wxChoicebook control is similar to wxNotebook but uses wxChoice instead of
-// the tabs
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_CHOICEBOOK 1
-
-// wxTreebook control is similar to wxNotebook but uses wxTreeCtrl instead of
-// the tabs
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_TREEBOOK 1
-
-// wxToolbook control is similar to wxNotebook but uses wxToolBar instead of
-// tabs
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_TOOLBOOK 1
-
-// wxTaskBarIcon is a small notification icon shown in the system toolbar or
-// dock.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (but can be set to 0 if you don't need it)
-#define wxUSE_TASKBARICON 1
-
-// wxGrid class
-//
-// Default is 1, set to 0 to cut down compilation time and binaries size if you
-// don't use it.
-//
-// Recommended setting: 1
-//
-#define wxUSE_GRID 1
-
-// wxMiniFrame class: a frame with narrow title bar
-//
-// Default is 1.
-//
-// Recommended setting: 1 (it doesn't cost almost anything)
-#define wxUSE_MINIFRAME 1
-
-// wxComboCtrl and related classes: combobox with custom popup window and
-// not necessarily a listbox.
-//
-// Default is 1.
-//
-// Recommended setting: 1 but can be safely set to 0 except for wxUniv where it
-// is used by wxComboBox
-#define wxUSE_COMBOCTRL 1
-
-// wxOwnerDrawnComboBox is a custom combobox allowing to paint the combobox
-// items.
-//
-// Default is 1.
-//
-// Recommended setting: 1 but can be safely set to 0, except where it is
-// needed as a base class for generic wxBitmapComboBox.
-#define wxUSE_ODCOMBOBOX 1
-
-// wxBitmapComboBox is a combobox that can have images in front of text items.
-//
-// Default is 1.
-//
-// Recommended setting: 1 but can be safely set to 0
-#define wxUSE_BITMAPCOMBOBOX 1
-
-// wxRearrangeCtrl is a wxCheckListBox with two buttons allowing to move items
-// up and down in it. It is also used as part of wxRearrangeDialog.
-//
-// Default is 1.
-//
-// Recommended setting: 1 but can be safely set to 0 (currently used only by
-// wxHeaderCtrl)
-#define wxUSE_REARRANGECTRL 1
-
-// wxAddRemoveCtrl is a composite control containing a control showing some
-// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
-// "-" buttons allowing to add and remove items to/from the control.
-//
-// Default is 1.
-//
-// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
-// used by the library itself).
-#define wxUSE_ADDREMOVECTRL 1
-
-// ----------------------------------------------------------------------------
-// Miscellaneous GUI stuff
-// ----------------------------------------------------------------------------
-
-// wxAcceleratorTable/Entry classes and support for them in wxMenu(Bar)
-#define wxUSE_ACCEL 1
-
-// Use the standard art provider. The icons returned by this provider are
-// embedded into the library as XPMs so disabling it reduces the library size
-// somewhat but this should only be done if you use your own custom art
-// provider returning the icons or never use any icons not provided by the
-// native art provider (which might not be implemented at all for some
-// platforms) or by the Tango icons provider (if it's not itself disabled
-// below).
-//
-// Default is 1.
-//
-// Recommended setting: 1 unless you use your own custom art provider.
-#define wxUSE_ARTPROVIDER_STD 1
-
-// Use art provider providing Tango icons: this art provider has higher quality
-// icons than the default one. It uses SVG format which allows much better scaling
-// then when bitmaps are used, at the expense of somewhat larger library size.
-//
-// Default is 1 under non-GTK ports. Under wxGTK the native art provider using
-// the GTK+ stock icons replaces it so it is normally not necessary.
-//
-// Recommended setting: 1 but can be turned off to reduce the library size.
-#define wxUSE_ARTPROVIDER_TANGO 1
-
-// Hotkey support (currently Windows and macOS only)
-#define wxUSE_HOTKEY 1
-
-// Use wxCaret: a class implementing a "cursor" in a text control (called caret
-// under Windows).
-//
-// Default is 1.
-//
-// Recommended setting: 1 (can be safely set to 0, not used by the library)
-#define wxUSE_CARET 1
-
-// Use wxDisplay class: it allows enumerating all displays on a system and
-// their geometries as well as finding the display on which the given point or
-// window lies.
-//
-// Default is 1.
-//
-// Recommended setting: 1 if you need it, can be safely set to 0 otherwise
-#define wxUSE_DISPLAY 1
-
-// Use wxImageList. This class is needed by wxNotebook, wxTreeCtrl and
-// wxListCtrl.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (set it to 0 if you don't use any of the controls
-// enumerated above, then this class is mostly useless too)
-#define wxUSE_IMAGLIST 1
-
-// Use wxInfoBar class.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (but can be disabled without problems as nothing
-// depends on it)
-#define wxUSE_INFOBAR 1
-
-// Use wxMenu, wxMenuItem.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (can't be disabled under MSW)
-#define wxUSE_MENUS 1
-
-// Use wxMenuBar.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (can't be disabled under MSW)
-#define wxUSE_MENUBAR 1
-
-// Use wxNotificationMessage.
-//
-// wxNotificationMessage allows to show non-intrusive messages to the user
-// using balloons, banners, popups or whatever is the appropriate method for
-// the current platform.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_NOTIFICATION_MESSAGE 1
-
-// wxPreferencesEditor provides a common API for different ways of presenting
-// the standard "Preferences" or "Properties" dialog under different platforms
-// (e.g. some use modal dialogs, some use modeless ones; some apply the changes
-// immediately while others require an explicit "Apply" button).
-//
-// Default is 1.
-//
-// Recommended setting: 1 (but can be safely disabled if you don't use it)
-#define wxUSE_PREFERENCES_EDITOR 1
-
-// wxFont::AddPrivateFont() allows to use fonts not installed on the system by
-// loading them from font files during run-time.
-//
-// Default is 1 except under Unix where it will be turned off by configure if
-// the required libraries are not available or not new enough.
-//
-// Recommended setting: 1 (but can be safely disabled if you don't use it and
-// want to avoid extra dependencies under Linux, for example).
-#define wxUSE_PRIVATE_FONTS 1
-
-// wxRichToolTip is a customizable tooltip class which has more functionality
-// than the stock (but native, unlike this class) wxToolTip.
-//
-// Default is 1.
-//
-// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
-#define wxUSE_RICHTOOLTIP 1
-
-// Use wxSashWindow class.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_SASH 1
-
-// Use wxSplitterWindow class.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_SPLITTER 1
-
-// Use wxToolTip and wxWindow::Set/GetToolTip() methods.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_TOOLTIPS 1
-
-// wxValidator class and related methods
-#define wxUSE_VALIDATORS 1
-
-// Use reference counted ID management: this means that wxWidgets will track
-// the automatically allocated ids (those used when you use wxID_ANY when
-// creating a window, menu or toolbar item &c) instead of just supposing that
-// the program never runs out of them. This is mostly useful only under wxMSW
-// where the total ids range is limited to SHRT_MIN..SHRT_MAX and where
-// long-running programs can run into problems with ids reuse without this. On
-// the other platforms, where the ids have the full int range, this shouldn't
-// be necessary.
-#ifdef __WXMSW__
-#define wxUSE_AUTOID_MANAGEMENT 1
-#else
-#define wxUSE_AUTOID_MANAGEMENT 0
-#endif
-
-// ----------------------------------------------------------------------------
-// common dialogs
-// ----------------------------------------------------------------------------
-
-// wxBusyInfo displays window with message when app is busy. Works in same way
-// as wxBusyCursor
-#define wxUSE_BUSYINFO 1
-
-// Use single/multiple choice dialogs.
-//
-// Default is 1
-//
-// Recommended setting: 1 (used in the library itself)
-#define wxUSE_CHOICEDLG 1
-
-// Use colour picker dialog
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_COLOURDLG 1
-
-// wxDirDlg class for getting a directory name from user
-#define wxUSE_DIRDLG 1
-
-// Use file open/save dialogs.
-//
-// Default is 1
-//
-// Recommended setting: 1 (used in many places in the library itself)
-#define wxUSE_FILEDLG 1
-
-// Use find/replace dialogs.
-//
-// Default is 1
-//
-// Recommended setting: 1 (but may be safely set to 0)
-#define wxUSE_FINDREPLDLG 1
-
-// Use font picker dialog
-//
-// Default is 1
-//
-// Recommended setting: 1 (used in the library itself)
-#define wxUSE_FONTDLG 1
-
-// Use wxMessageDialog and wxMessageBox.
-//
-// Default is 1
-//
-// Recommended setting: 1 (used in the library itself)
-#define wxUSE_MSGDLG 1
-
-// progress dialog class for lengthy operations
-#define wxUSE_PROGRESSDLG 1
-
-// Set to 0 to disable the use of the native progress dialog (currently only
-// available under MSW and suffering from some bugs there, hence this option).
-#define wxUSE_NATIVE_PROGRESSDLG 1
-
-// support for startup tips (wxShowTip &c)
-#define wxUSE_STARTUP_TIPS 1
-
-// text entry dialog and wxGetTextFromUser function
-#define wxUSE_TEXTDLG 1
-
-// number entry dialog
-#define wxUSE_NUMBERDLG 1
-
-// credential entry dialog
-#define wxUSE_CREDENTIALDLG 1
-
-// splash screen class
-#define wxUSE_SPLASH 1
-
-// wizards
-#define wxUSE_WIZARDDLG 1
-
-// Compile in wxAboutBox() function showing the standard "About" dialog.
-//
-// Default is 1
-//
-// Recommended setting: 1 but can be set to 0 to save some space if you don't
-// use this function
-#define wxUSE_ABOUTDLG 1
-
-// wxFileHistory class
-//
-// Default is 1
-//
-// Recommended setting: 1
-#define wxUSE_FILE_HISTORY 1
-
-// ----------------------------------------------------------------------------
-// Metafiles support
-// ----------------------------------------------------------------------------
-
-// Windows supports the graphics format known as metafile which, though not
-// portable, is widely used under Windows and so is supported by wxWidgets
-// (under Windows only, of course). Both the so-called "Window MetaFiles" or
-// WMFs, and "Enhanced MetaFiles" or EMFs are supported in wxWin and, by
-// default, EMFs will be used. This may be changed by setting
-// wxUSE_WIN_METAFILES_ALWAYS to 1 and/or setting wxUSE_ENH_METAFILE to 0.
-// You may also set wxUSE_METAFILE to 0 to not compile in any metafile
-// related classes at all.
-//
-// Default is 1 for wxUSE_ENH_METAFILE and 0 for wxUSE_WIN_METAFILES_ALWAYS.
-//
-// Recommended setting: default or 0 for everything for portable programs.
-#define wxUSE_METAFILE 1
-#define wxUSE_ENH_METAFILE 1
-#define wxUSE_WIN_METAFILES_ALWAYS 0
-
-// ----------------------------------------------------------------------------
-// Big GUI components
-// ----------------------------------------------------------------------------
-
-// Set to 0 to disable MDI support.
-//
-// Requires wxUSE_NOTEBOOK under platforms other than MSW.
-//
-// Default is 1.
-//
-// Recommended setting: 1, can be safely set to 0.
-#define wxUSE_MDI 1
-
-// Set to 0 to disable document/view architecture
-#define wxUSE_DOC_VIEW_ARCHITECTURE 1
-
-// Set to 0 to disable MDI document/view architecture
-//
-// Requires wxUSE_MDI && wxUSE_DOC_VIEW_ARCHITECTURE
-#define wxUSE_MDI_ARCHITECTURE 1
-
-// Set to 0 to disable print/preview architecture code
-#define wxUSE_PRINTING_ARCHITECTURE 1
-
-// wxHTML allows displaying simple HTML.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_HTML 1
-
-// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
-// headers and libraries to be able to compile the library with wxUSE_GLCANVAS
-// set to 1 and, under Windows, also to add opengl32.lib to the
-// list of libraries used to link your application when linking to wxWidgets
-// statically (although this is done implicitly for Microsoft Visual C++ users).
-//
-// Default is 1.
-//
-// Recommended setting: 1 if you intend to use OpenGL, can be safely set to 0
-// otherwise.
-#define wxUSE_GLCANVAS 1
-
-// wxRichTextCtrl allows editing of styled text.
-//
-// Default is 1.
-//
-// Recommended setting: 1, set to 0 if you want compile a
-// smaller library.
-#define wxUSE_RICHTEXT 1
-
-// ----------------------------------------------------------------------------
-// Data transfer
-// ----------------------------------------------------------------------------
-
-// Use wxClipboard class for clipboard copy/paste.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_CLIPBOARD 1
-
-// Use wxDataObject and related classes. Needed for clipboard and OLE drag and
-// drop
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_DATAOBJ 1
-
-// Use wxDropTarget and wxDropSource classes for drag and drop (this is
-// different from "built in" drag and drop in wxTreeCtrl which is always
-// available). Requires wxUSE_DATAOBJ.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_DRAG_AND_DROP 1
-
-// Use wxAccessible for enhanced and customisable accessibility.
-// Depends on wxUSE_OLE on MSW.
-//
-// Default is 1 on MSW, 0 elsewhere.
-//
-// Recommended setting (at present): 1 (MSW-only)
-#ifdef __WXMSW__
-#define wxUSE_ACCESSIBILITY 1
-#else
-#define wxUSE_ACCESSIBILITY 0
-#endif
-
-// ----------------------------------------------------------------------------
-// miscellaneous settings
-// ----------------------------------------------------------------------------
-
-// wxSingleInstanceChecker class allows to verify at startup if another program
-// instance is running.
-//
-// Default is 1
-//
-// Recommended setting: 1 (the class is tiny, disabling it won't save much
-// space)
-#define wxUSE_SNGLINST_CHECKER 1
-
-#define wxUSE_DRAGIMAGE 1
-
-#define wxUSE_IPC 1
- // 0 for no interprocess comms
-#define wxUSE_HELP 1
- // 0 for no help facility
-
-// Should we use MS HTML help for wxHelpController? If disabled, neither
-// wxCHMHelpController nor wxBestHelpController are available.
-//
-// Default is 1 under MSW, 0 is always used for the other platforms.
-//
-// Recommended setting: 1, only set to 0 if you have trouble compiling
-// wxCHMHelpController (could be a problem with really ancient compilers)
-#define wxUSE_MS_HTML_HELP 1
-
-
-// Use wxHTML-based help controller?
-#define wxUSE_WXHTML_HELP 1
-
-#define wxUSE_CONSTRAINTS 1
- // 0 for no window layout constraint system
-
-#define wxUSE_SPLINES 1
- // 0 for no splines
-
-#define wxUSE_MOUSEWHEEL 1
- // Include mouse wheel support
-
-// Compile wxUIActionSimulator class?
-#define wxUSE_UIACTIONSIMULATOR 1
-
-// ----------------------------------------------------------------------------
-// wxDC classes for various output formats
-// ----------------------------------------------------------------------------
-
-// Set to 1 for PostScript device context.
-#define wxUSE_POSTSCRIPT 0
-
-// Set to 1 to use font metric files in GetTextExtent
-#define wxUSE_AFM_FOR_POSTSCRIPT 1
-
-// Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows
-// to create files in SVG (Scalable Vector Graphics) format.
-#define wxUSE_SVG 1
-
-// Should wxDC provide SetTransformMatrix() and related methods?
-//
-// Default is 1 but can be set to 0 if this functionality is not used. Notice
-// that currently wxMSW, wxGTK3 support this for wxDC and all platforms support
-// this for wxGCDC so setting this to 0 doesn't change much if neither of these
-// is used (although it will still save a few bytes probably).
-//
-// Recommended setting: 1.
-#define wxUSE_DC_TRANSFORM_MATRIX 1
-
-// ----------------------------------------------------------------------------
-// image format support
-// ----------------------------------------------------------------------------
-
-// wxImage supports many different image formats which can be configured at
-// compile-time. BMP is always supported, others are optional and can be safely
-// disabled if you don't plan to use images in such format sometimes saving
-// substantial amount of code in the final library.
-//
-// Some formats require an extra library (e.g. libpng) which is always included in
-// wxWidgets sources but some build systems (cmake, configure) can be configured to
-// to use the system or user-provided version.
-//
-// Set to 1 for wxImage support (recommended).
-#define wxUSE_IMAGE 1
-
-// Set to 1 for PNG format support (requires libpng). Also requires wxUSE_ZLIB.
-#define wxUSE_LIBPNG 1
-
-// Set to 1 for JPEG format support (requires libjpeg)
-#define wxUSE_LIBJPEG 1
-
-// Set to 1 for TIFF format support (requires libtiff)
-#define wxUSE_LIBTIFF 1
-
-// Set to 1 for SVG rasterizing support using nanosvg
-#define wxUSE_NANOSVG 1
-
-// Set to 1 to use external nanosvg library when wxUSE_NANOSVG is enabled
-#define wxUSE_NANOSVG_EXTERNAL 0
-
-// Set to 1 for SVG rasterizing support using LunaSVG (minimum C++ 17 required)
-// Setting to 1 will override wxUSE_NANOSVG
-#define wxUSE_LUNASVG 0
-
-// Set to 1 for TGA format support (loading only)
-#define wxUSE_TGA 1
-
-// Set to 1 for GIF format support
-#define wxUSE_GIF 1
-
-// Set to 1 for PNM format support
-#define wxUSE_PNM 1
-
-// Set to 1 for PCX format support
-#define wxUSE_PCX 1
-
-// Set to 1 for IFF format support (Amiga format)
-#define wxUSE_IFF 0
-
-// Set to 1 for XPM format support
-#define wxUSE_XPM 1
-
-// Set to 1 for MS Icons and Cursors format support
-#define wxUSE_ICO_CUR 1
-
-// Set to 1 to compile in wxPalette class
-#define wxUSE_PALETTE 1
-
-// Set to 1 for WebP format support (requires libwebp)
-#define wxUSE_LIBWEBP 1
-
-// ----------------------------------------------------------------------------
-// wxUniversal-only options
-// ----------------------------------------------------------------------------
-
-// Set to 1 to enable compilation of all themes, this is the default
-#define wxUSE_ALL_THEMES 1
-
-// Set to 1 to enable the compilation of individual theme if wxUSE_ALL_THEMES
-// is unset, if it is set these options are not used; notice that metal theme
-// uses Win32 one
-#define wxUSE_THEME_GTK 0
-#define wxUSE_THEME_METAL 0
-#define wxUSE_THEME_MONO 0
-#define wxUSE_THEME_WIN32 0
-
-/* --- end common options --- */
-
-/* --- start MSW options --- */
-// ----------------------------------------------------------------------------
-// Windows-only settings
-// ----------------------------------------------------------------------------
-
-// Set this to 1 for generic OLE support: this is required for drag-and-drop,
-// clipboard, OLE Automation. Only set it to 0 if your compiler is very old and
-// can't compile/doesn't have the OLE headers.
-//
-// Default is 1.
-//
-// Recommended setting: 1
-#define wxUSE_OLE 1
-
-// Set this to 1 to enable wxAutomationObject class.
-//
-// Default is 1.
-//
-// Recommended setting: 1 if you need to control other applications via OLE
-// Automation, can be safely set to 0 otherwise
-#define wxUSE_OLE_AUTOMATION 1
-
-// Set this to 1 to enable wxActiveXContainer class allowing to embed OLE
-// controls in wx.
-//
-// Default is 1.
-//
-// Recommended setting: 1, required by wxMediaCtrl
-#define wxUSE_ACTIVEX 1
-
-// wxDC caching implementation
-#define wxUSE_DC_CACHEING 1
-
-// Set this to 1 to enable wxDIB class used internally for manipulating
-// wxBitmap data.
-//
-// Default is 1, set it to 0 only if you don't use wxImage either
-//
-// Recommended setting: 1 (without it conversion to/from wxImage won't work)
-#define wxUSE_WXDIB 1
-
-// Set to 0 to disable PostScript print/preview architecture code under Windows
-// (just use Windows printing).
-#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1
-
-// Set this to 1 to compile in wxRegKey class.
-//
-// Default is 1
-//
-// Recommended setting: 1, this is used internally by wx in a few places
-#define wxUSE_REGKEY 1
-
-// Set this to 1 to use RICHEDIT controls for wxTextCtrl with style wxTE_RICH
-// which allows to put more than ~32Kb of text in it even under Win9x (NT
-// doesn't have such limitation).
-//
-// Default is 1 for compilers which support it
-//
-// Recommended setting: 1, only set it to 0 if your compiler doesn't have
-// or can't compile <richedit.h>
-#define wxUSE_RICHEDIT 1
-
-// Set this to 1 to use extra features of richedit v2 and later controls
-//
-// Default is 1 for compilers which support it
-//
-// Recommended setting: 1
-#define wxUSE_RICHEDIT2 1
-
-// Set this to 1 to enable support for the owner-drawn menu and listboxes. This
-// is required by wxUSE_CHECKLISTBOX.
-//
-// Default is 1.
-//
-// Recommended setting: 1, set to 0 for a small library size reduction
-#define wxUSE_OWNER_DRAWN 1
-
-// Set this to 1 to enable MSW-specific wxTaskBarIcon::ShowBalloon() method. It
-// is required by native wxNotificationMessage implementation.
-//
-// Default is 1 but disabled in wx/msw/chkconf.h if SDK is too old to contain
-// the necessary declarations.
-//
-// Recommended setting: 1, set to 0 for a tiny library size reduction
-#define wxUSE_TASKBARICON_BALLOONS 1
-
-// Set to 1 to use InkEdit control (Tablet PC), if available
-#define wxUSE_INKEDIT 0
-
-// Set to 1 to enable .INI files based wxConfig implementation (wxIniConfig)
-//
-// Default is 0.
-//
-// Recommended setting: 0, nobody uses .INI files any more
-#define wxUSE_INICONF 0
-
-// Set to 1 if you need to include <winsock2.h> over <winsock.h>
-//
-// Default is 0.
-//
-// Recommended setting: 0
-#define wxUSE_WINSOCK2 0
-
-// ----------------------------------------------------------------------------
-// Generic versions of native controls
-// ----------------------------------------------------------------------------
-
-// Set this to 1 to be able to use wxDatePickerCtrlGeneric in addition to the
-// native wxDatePickerCtrl
-//
-// Default is 0.
-//
-// Recommended setting: 0, this is mainly used for testing
-#define wxUSE_DATEPICKCTRL_GENERIC 0
-
-// ----------------------------------------------------------------------------
-// Crash debugging helpers
-// ----------------------------------------------------------------------------
-
-// Set this to 1 to be able to use wxCrashReport::Generate() to create mini
-// dumps of your program when it crashes (or at any other moment)
-//
-// Default is 1 if supported by the compiler (VC++ and recent BC++ only).
-//
-// Recommended setting: 1, set to 0 if your programs never crash
-#define wxUSE_CRASHREPORT 1
-/* --- end MSW options --- */
-
-/* --- start wxUniv options --- */
-// ----------------------------------------------------------------------------
-// wxUniversal-only options
-// ----------------------------------------------------------------------------
-
-// Set to 1 to enable compilation of all themes, this is the default
-#define wxUSE_ALL_THEMES 1
-
-// Set to 1 to enable the compilation of individual theme if wxUSE_ALL_THEMES
-// is unset, if it is set these options are not used; notice that metal theme
-// uses Win32 one
-#define wxUSE_THEME_GTK 0
-#define wxUSE_THEME_METAL 0
-#define wxUSE_THEME_MONO 0
-#define wxUSE_THEME_WIN32 0
-/* --- end wxUniv options --- */
-
-#endif // _WX_SETUP_H_
=====================================
include/wx/platform.h
=====================================
@@ -141,11 +141,6 @@
#endif /* (__WXGTK__ || __WXQT__) && __WINDOWS__ */
-#ifdef __ANDROID__
-# define __WXANDROID__
-# include "wx/android/config_android.h"
-#endif
-
#include "wx/compiler.h"
/*
=====================================
interface/wx/utils.h
=====================================
@@ -843,7 +843,7 @@ bool wxGetUserName(char* buf, int sz);
/**
Returns the string containing the description of the current platform in a
user-readable form. For example, this function may return strings like
- "Windows 10 (build 10240), 64-bit edition",
+ "Windows 10 Pro 22H2 (build 19045), 64-bit edition",
"AlmaLinux 10.1 (Heliotrope Lion), 6.12.0-55.9.1.el10_0.x86_64",
or "Linux 4.1.4 i386".
=====================================
src/common/sckaddr.cpp
=====================================
@@ -94,21 +94,30 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress);
#define wxHAS_REENTRANT_GETHOSTBY_FUNCS
#endif
+#if defined(HAVE_FUNC_GETSERVBYNAME_R_6) || defined(HAVE_FUNC_GETSERVBYNAME_R_5)
+ #define wxHAS_REENTRANT_GETSERVBYNAME
+#endif
+
typedef char wxGethostBuf[4096];
typedef char wxGetservBuf[4096];
#if defined(wxHAS_MT_SAFE_GETBY_FUNCS) || !wxUSE_THREADS
#define wxLOCK_GETBY_MUTEX(name)
#else // may need mutexes to protect getxxxbyxxx() calls
- #ifndef wxHAS_REENTRANT_GETHOSTBY_FUNCS
+ #if !defined(wxHAS_REENTRANT_GETHOSTBY_FUNCS) || \
+ !defined(wxHAS_REENTRANT_GETSERVBYNAME)
#include "wx/thread.h"
namespace
{
// these mutexes are used to serialize
- wxMutex nameLock, // gethostbyname()
- addrLock, // gethostbyaddr()
- servLock; // getservbyname()
+ #if !defined(wxHAS_REENTRANT_GETHOSTBY_FUNCS)
+ wxMutex nameLock, // gethostbyname()
+ addrLock; // gethostbyaddr()
+ #endif
+ #if !defined(wxHAS_REENTRANT_GETSERVBYNAME)
+ wxMutex servLock; // getservbyname()
+ #endif
}
#define wxLOCK_GETBY_MUTEX(name) wxMutexLocker locker(name ## Lock)
@@ -256,7 +265,7 @@ hostent *wxGethostbyaddr_r(const char *addr_buf,
return he;
}
-#ifndef wxHAS_REENTRANT_GETHOSTBY_FUNCS
+#if !defined(wxHAS_REENTRANT_GETSERVBYNAME)
servent *deepCopyServent(servent *s,
servent *se,
char *buffer,
@@ -318,7 +327,7 @@ servent *deepCopyServent(servent *s,
s->s_aliases = s_aliases; /* copy pointer to pointers */
return s;
}
-#endif // !wxHAS_REENTRANT_GETHOSTBY_FUNCS
+#endif // !wxHAS_REENTRANT_GETSERVBYNAME
servent *wxGetservbyname_r(const char *port,
const char *protocol,
=====================================
src/common/ustring.cpp
=====================================
@@ -78,6 +78,15 @@ wxUString &wxUString::assignFromUTF8( const char *str )
size_type len = tableUtf8Lengths[c];
if (!len)
return assign( wxUString() ); // don't try to convert invalid UTF-8
+
+ // a multibyte sequence truncated by the terminating NUL must not make
+ // us skip past the end of the string
+ for ( size_type i = 1; i < len; i++ )
+ {
+ if ( !p[i] )
+ return assign( wxUString() );
+ }
+
ucs4_len++;
p += len;
}
=====================================
src/msw/artmsw.cpp
=====================================
@@ -167,22 +167,74 @@ class wxWindowsArtProvider : public wxArtProvider
protected:
virtual wxBitmap CreateBitmap(const wxArtID& id, const wxArtClient& client,
const wxSize& size) override;
+ virtual wxBitmapBundle CreateBitmapBundle(const wxArtID& id,
+ const wxArtClient& client,
+ const wxSize& size) override;
+
+private:
+ static wxSize GetActualSize(const wxArtClient& client, wxSize size)
+ {
+ // We don't have any window here, so use the primary monitor DPI scale
+ // factor, which is consistent with what the native functions do.
+ if ( !size.IsFullySpecified() )
+ {
+ size = GetNativeSizeHint(client);
+
+ if ( !size.IsFullySpecified() )
+ {
+ // We must have some valid size.
+ size = wxSize(16, 16);
+ }
+ }
+
+ return size;
+ }
+
+ // Return true and fill in the provided parameters with the information
+ // corresponding to the stock icon for the given art id if it is supported,
+ // return false otherwise.
+ static bool GetStockIconInfo(const wxArtID& id, wxString& path, int& icon);
};
-wxBitmap wxWindowsArtProvider::CreateBitmap(const wxArtID& id,
- const wxArtClient& client,
- const wxSize& size)
+namespace
{
- wxBitmap bitmap;
- // We don't have any window here, so if we call GetNativeSizeHint(), it
- // will use the primary monitor DPI scale factor, which is consistent with
- // what MSWGetBitmapFromIconLocation() does.
- const wxSize
- sizeNeeded = size.IsFullySpecified()
- ? size
- : wxArtProvider::GetNativeSizeHint(client);
+class wxWindowsStockIconImpl : public wxBitmapBundleImpl
+{
+public:
+ wxWindowsStockIconImpl(const wxString& path, int icon, const wxSize& size)
+ : m_path(path), m_icon(icon), m_size(size)
+ {
+ }
+
+ virtual wxSize GetDefaultSize() const override
+ {
+ return m_size;
+ }
+
+ virtual wxSize GetPreferredBitmapSizeAtScale(double scale) const override
+ {
+ return m_size*scale;
+ }
+
+ virtual wxBitmap GetBitmap(const wxSize& size) override
+ {
+ return MSWGetBitmapFromIconLocation(m_path.t_str(), m_icon, size);
+ }
+
+private:
+ const wxString m_path;
+ const int m_icon;
+ const wxSize m_size;
+};
+
+} // anonymous namespace
+bool
+wxWindowsArtProvider::GetStockIconInfo(const wxArtID& id,
+ wxString& path,
+ int& icon)
+{
#ifdef wxHAS_SHGetStockIconInfo
SHSTOCKICONID stockIconId = MSWGetStockIconIdForArtProviderId( id );
if ( stockIconId != SIID_INVALID )
@@ -194,14 +246,34 @@ wxBitmap wxWindowsArtProvider::CreateBitmap(const wxArtID& id,
HRESULT res = ::SHGetStockIconInfo(stockIconId, uFlags, &sii);
if ( res == S_OK )
{
- bitmap = MSWGetBitmapFromIconLocation(sii.szPath, sii.iIcon,
- sizeNeeded);
- if ( bitmap.IsOk() )
- return bitmap;
+ path = sii.szPath;
+ icon = sii.iIcon;
+
+ return true;
}
}
#endif // wxHAS_SHGetStockIconInfo
+ return false;
+}
+
+wxBitmap wxWindowsArtProvider::CreateBitmap(const wxArtID& id,
+ const wxArtClient& client,
+ const wxSize& size)
+{
+ wxBitmap bitmap;
+
+ const wxSize sizeNeeded = GetActualSize(client, size);
+
+ wxString path;
+ int icon = 0;
+ if ( GetStockIconInfo(id, path, icon) )
+ {
+ bitmap = MSWGetBitmapFromIconLocation(path.t_str(), icon, sizeNeeded);
+
+ if ( bitmap.IsOk() )
+ return bitmap;
+ }
#if wxUSE_FSVOLUME
// now try SHGetFileInfo
@@ -249,6 +321,25 @@ wxBitmap wxWindowsArtProvider::CreateBitmap(const wxArtID& id,
return bitmap;
}
+wxBitmapBundle
+wxWindowsArtProvider::CreateBitmapBundle(const wxArtID& id,
+ const wxArtClient& client,
+ const wxSize& size)
+{
+ wxString path;
+ int icon = 0;
+ if ( GetStockIconInfo(id, path, icon) )
+ {
+ const wxSize sizeNeeded = GetActualSize(client, size);
+
+ return wxBitmapBundle::FromImpl(
+ new wxWindowsStockIconImpl(path, icon, sizeNeeded)
+ );
+ }
+
+ return {};
+}
+
// ----------------------------------------------------------------------------
// wxArtProvider::InitNativeProvider()
// ----------------------------------------------------------------------------
=====================================
src/msw/renderer.cpp
=====================================
@@ -670,7 +670,7 @@ wxRendererXP::DrawTreeItemButton(wxWindow *win,
const wxRect& rect,
int flags)
{
- wxUxThemeHandle hTheme(win, L"TREEVIEW");
+ wxUxThemeHandle hTheme(win, L"TREEVIEW", L"DarkMode_Explorer::TreeView");
if ( !hTheme )
{
m_rendererNative.DrawTreeItemButton(win, dc, rect, flags);
@@ -851,7 +851,7 @@ wxSize wxRendererXP::GetExpanderSize(wxWindow* win)
{
wxCHECK_MSG( win, wxSize(0, 0), "Must have a valid window" );
- wxUxThemeHandle hTheme(win, L"TREEVIEW");
+ wxUxThemeHandle hTheme(win, L"TREEVIEW", L"DarkMode_Explorer::TreeView");
if ( hTheme )
{
if ( ::IsThemePartDefined(hTheme, TVP_GLYPH, 0) )
=====================================
src/msw/utils.cpp
=====================================
@@ -1207,6 +1207,49 @@ wxString wxGetOsDescription()
info.dwMinorVersion);
}
+ DWORD productType = 0;
+ if ( !wxIsWindowsServer()
+ && GetProductInfo(
+ info.dwMajorVersion, info.dwMinorVersion,
+ 0, 0, // service pack major/minor
+ &productType) )
+ {
+ switch (productType) {
+ case PRODUCT_PROFESSIONAL:
+ str << " Pro";
+ break;
+
+ case PRODUCT_CORE:
+ str << " Home";
+ break;
+
+ case PRODUCT_ENTERPRISE:
+ str << " Enterprise";
+ break;
+
+ default:
+ // There are dozens of other possibilities (see
+ // GetProductInfo docs), but for now we only care
+ // about the most common ones.
+ break;
+ }
+ }
+
+#if wxUSE_REGKEY
+ wxRegKey key(wxRegKey::HKLM,
+ "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
+
+ if ( key.Exists() )
+ {
+ wxString displayVersion;
+ if ( key.QueryValue("DisplayVersion", displayVersion)
+ && !displayVersion.empty() )
+ {
+ str << " " << displayVersion;
+ }
+ }
+#endif // wxUSE_REGKEY
+
str << wxT(" (")
<< wxString::Format(
/* TRANSLATORS: MS Windows build number */_("build %lu"),
View it on GitLab:
https://gitlab.com/wxwidgets/wxwidgets/-/compare/9b0eb807cd03eb9ba517b8d5371c91d811a7682b...daf6282a9c5e1485401834e5420c331573bed68d
--
View it on GitLab:
https://gitlab.com/wxwidgets/wxwidgets/-/compare/9b0eb807cd03eb9ba517b8d5371c91d811a7682b...daf6282a9c5e1485401834e5420c331573bed68d
You're receiving this email because of your account on
gitlab.com. Manage all notifications:
https://gitlab.com/-/profile/notifications | Help:
https://gitlab.com/help