From c55004dcb2a130024c922e47a4ab933cbe859f76 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 7 Sep 2024 18:22:37 +0200 Subject: [PATCH 001/416] Use node 20-based versions of the actions Node 16 is not available on GitHub Actions any longer. --- .github/workflows/make_release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/make_release.yml b/.github/workflows/make_release.yml index 25ad3d791361..cb6f1a6836c0 100644 --- a/.github/workflows/make_release.yml +++ b/.github/workflows/make_release.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: 'recursive' @@ -43,7 +43,7 @@ jobs: # https://github.com/softprops/action-gh-release/pull/255 fixing # updating the body of the draft releases. We should replace the SHA-1 # with a tag when an upstream release including this fix is made. - uses: vadz/action-gh-release@4c1f6af6e1a4dbfc4691427d2822c34374d558a2 + uses: vadz/action-gh-release@f54a467f83ac3b6dd60e37cfb7283f35ae8e2ed2 id: create_release with: name: wxWidgets ${{ inputs.version }} @@ -62,7 +62,7 @@ jobs: # because it can't be downloaded from a draft release without # impersonating the same user and I don't know how to do it. - name: Upload Release Archive - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: wxWidgets-${{ inputs.version }}-source-archive path: distrib/release/${{ inputs.version }}/wxWidgets-${{ inputs.version }}.zip @@ -75,10 +75,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Download Release Archive - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: wxWidgets-${{ inputs.version }}-source-archive @@ -110,7 +110,7 @@ jobs: type ..\..\..\checksums - name: Add Files to the Release - uses: vadz/action-gh-release@4c1f6af6e1a4dbfc4691427d2822c34374d558a2 + uses: vadz/action-gh-release@f54a467f83ac3b6dd60e37cfb7283f35ae8e2ed2 with: name: wxWidgets ${{ inputs.version }} body_path: checksums From 8b9ea6226af77234203f7b84887d61439772615b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 9 Sep 2024 14:59:37 +0200 Subject: [PATCH 002/416] Mention the subject to use for the announcement post --- docs/contributing/how-to-release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/how-to-release.md b/docs/contributing/how-to-release.md index 42f25c276f0d..eca59a9c689a 100644 --- a/docs/contributing/how-to-release.md +++ b/docs/contributing/how-to-release.md @@ -143,7 +143,7 @@ Update https://www.wxwidgets.org: an hour for the next scheduled site rebuild to happen). Post `docs/publicity/announce.txt` at least to wx-announce@googlegroups.com and -to wx-users. +to wx-users using the standard "Announcing wxWidgets $VERSION release" subject. Submit a link to https://www.reddit.com/r/cpp or r/programming (depending on the release importance). From 320973af870afc02c239caf87363f6f28158179a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 9 Sep 2024 14:59:50 +0200 Subject: [PATCH 003/416] Update docs GitHub workflow to use non-deprecated actions too Use node20-based actions/checkout@v4. --- .github/workflows/docs_update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 64a8d899cb69..d9bbc452ce49 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install doxygen run: | From 4ea50a4036338940c59b61e39ac0b272bc968f59 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 9 Sep 2024 15:05:13 +0200 Subject: [PATCH 004/416] Allow updating tags documentation in GitHub workflow too --- .github/workflows/docs_update.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index d9bbc452ce49..a8540e700e1d 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -59,9 +59,23 @@ jobs: DOCS_WEBSITE_KEY: ${{secrets.DOCS_WEBSITE_KEY}} DOCS_WEBSITE_SSH_CONFIG: ${{secrets.DOCS_WEBSITE_SSH_CONFIG}} run: | + ref="${{github.ref}}" + case "$ref" in + refs/heads/3.2) + dst=3.2 + ;; + + refs/tags/v*) + dst=${ref#refs/tags/v} + ;; + + *) + echo "Skipping docs upload for $ref of unknown type" + exit 2 + esac mkdir "$HOME/.ssh" echo "$DOCS_WEBSITE_KEY" > "$HOME/.ssh/docs_website_key" chmod 600 "$HOME/.ssh/docs_website_key" echo "$DOCS_WEBSITE_SSH_CONFIG" > "$HOME/.ssh/config" - rsync --checksum --compress --delete --out-format='%n' --recursive out/html/ wxdocs:public_html/3.2/ \ + rsync --checksum --compress --delete --out-format='%n' --recursive out/html/ wxdocs:public_html/$dst/ \ 2> >(grep -v "Warning: Permanently added" 1>&2) From 50985f7d6da16a9f992fc711ad131708861f483f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 9 Sep 2024 15:15:49 +0200 Subject: [PATCH 005/416] Remove left over condition in docs workflow from the last commit The reference is now checked in the step itself, don't prevent it from running it it doesn't match. --- .github/workflows/docs_update.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index a8540e700e1d..db09e2acc4ca 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -53,7 +53,6 @@ jobs: fi - name: Upload - if: github.ref == 'refs/heads/3.2' working-directory: docs/doxygen env: DOCS_WEBSITE_KEY: ${{secrets.DOCS_WEBSITE_KEY}} From 4c03ecb10ee8c16d36058ca3e28a6a2a93d4ed77 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 15 Sep 2024 19:13:36 +0200 Subject: [PATCH 006/416] Update version to 3.2.7 Rebake everything and add the new change log section too. --- Makefile.in | 8 ++++---- build/bakefiles/version.bkl | 2 +- build/msw/makefile.gcc | 2 +- build/msw/makefile.vc | 2 +- build/msw/wx_setup.props | 2 +- build/osx/wxvers.xcconfig | 2 +- build/tools/msvs/getversion.bat | 2 +- configure | 20 ++++++++++---------- configure.in | 4 ++-- demos/bombs/Makefile.in | 2 +- demos/forty/Makefile.in | 2 +- demos/fractal/Makefile.in | 2 +- demos/life/Makefile.in | 2 +- demos/poem/Makefile.in | 2 +- docs/changes.txt | 4 ++++ docs/doxygen/Doxyfile | 2 +- docs/readme.txt | 10 +++++----- include/wx/osx/config_xcode.h | 4 ++-- include/wx/version.h | 4 ++-- samples/access/Makefile.in | 2 +- samples/animate/Makefile.in | 2 +- samples/artprov/Makefile.in | 2 +- samples/aui/Makefile.in | 2 +- samples/calendar/Makefile.in | 2 +- samples/caret/Makefile.in | 2 +- samples/clipboard/Makefile.in | 2 +- samples/collpane/Makefile.in | 2 +- samples/combo/Makefile.in | 2 +- samples/config/Makefile.in | 2 +- samples/dataview/Makefile.in | 2 +- samples/debugrpt/Makefile.in | 2 +- samples/dialogs/Makefile.in | 2 +- samples/dialup/Makefile.in | 2 +- samples/display/Makefile.in | 2 +- samples/dll/Makefile.in | 2 +- samples/dnd/Makefile.in | 2 +- samples/docview/Makefile.in | 2 +- samples/dragimag/Makefile.in | 2 +- samples/drawing/Makefile.in | 2 +- samples/erase/Makefile.in | 2 +- samples/event/Makefile.in | 2 +- samples/except/Makefile.in | 2 +- samples/exec/Makefile.in | 2 +- samples/font/Makefile.in | 2 +- samples/fswatcher/Makefile.in | 2 +- samples/grid/Makefile.in | 2 +- samples/help/Makefile.in | 2 +- samples/htlbox/Makefile.in | 2 +- samples/html/about/Makefile.in | 2 +- samples/html/help/Makefile.in | 2 +- samples/html/helpview/Makefile.in | 2 +- samples/html/printing/Makefile.in | 2 +- samples/html/test/Makefile.in | 2 +- samples/html/virtual/Makefile.in | 2 +- samples/html/widget/Makefile.in | 2 +- samples/html/zip/Makefile.in | 2 +- samples/image/Makefile.in | 2 +- samples/internat/Makefile.in | 2 +- samples/ipc/Makefile.in | 2 +- samples/joytest/Makefile.in | 2 +- samples/keyboard/Makefile.in | 2 +- samples/layout/Makefile.in | 2 +- samples/listctrl/Makefile.in | 2 +- samples/mdi/Makefile.in | 2 +- samples/mediaplayer/Makefile.in | 2 +- samples/memcheck/Makefile.in | 2 +- samples/menu/Makefile.in | 2 +- samples/minimal/Info_cocoa.plist | 8 ++++---- samples/minimal/Makefile.in | 2 +- samples/nativdlg/Makefile.in | 2 +- samples/notebook/Makefile.in | 2 +- samples/oleauto/Makefile.in | 2 +- samples/opengl/cube/Makefile.in | 2 +- samples/opengl/isosurf/Makefile.in | 2 +- samples/opengl/penguin/Makefile.in | 2 +- samples/opengl/pyramid/Makefile.in | 2 +- samples/ownerdrw/Makefile.in | 2 +- samples/popup/Makefile.in | 2 +- samples/power/Makefile.in | 2 +- samples/preferences/Makefile.in | 2 +- samples/printing/Makefile.in | 2 +- samples/propgrid/Makefile.in | 2 +- samples/regtest/Makefile.in | 2 +- samples/render/Makefile.in | 2 +- samples/ribbon/Makefile.in | 2 +- samples/richtext/Makefile.in | 2 +- samples/sashtest/Makefile.in | 2 +- samples/scroll/Makefile.in | 2 +- samples/shaped/Makefile.in | 2 +- samples/sockets/Makefile.in | 2 +- samples/sound/Makefile.in | 2 +- samples/splash/Makefile.in | 2 +- samples/splitter/Makefile.in | 2 +- samples/statbar/Makefile.in | 2 +- samples/stc/Makefile.in | 2 +- samples/svg/Makefile.in | 2 +- samples/taborder/Makefile.in | 2 +- samples/taskbar/Makefile.in | 2 +- samples/taskbarbutton/Makefile.in | 2 +- samples/text/Makefile.in | 2 +- samples/thread/Makefile.in | 2 +- samples/toolbar/Makefile.in | 2 +- samples/treectrl/Makefile.in | 2 +- samples/treelist/Makefile.in | 2 +- samples/typetest/Makefile.in | 2 +- samples/uiaction/Makefile.in | 2 +- samples/validate/Makefile.in | 2 +- samples/vscroll/Makefile.in | 2 +- samples/webrequest/Makefile.in | 2 +- samples/webview/Makefile.in | 2 +- samples/widgets/Makefile.in | 2 +- samples/wizard/Makefile.in | 2 +- samples/wrapsizer/Makefile.in | 2 +- samples/xrc/Makefile.in | 2 +- samples/xti/Makefile.in | 2 +- tests/Makefile.in | 2 +- tests/benchmarks/Makefile.in | 2 +- tests/makefile.vc | 8 ++++---- utils/helpview/src/Makefile.in | 2 +- utils/screenshotgen/src/Makefile.in | 2 +- 120 files changed, 148 insertions(+), 144 deletions(-) diff --git a/Makefile.in b/Makefile.in index 86948bf57673..e45de227ee03 100644 --- a/Makefile.in +++ b/Makefile.in @@ -82,7 +82,7 @@ wxCFLAGS_C99 = @wxCFLAGS_C99@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WXREGEX_CFLAGS = $(WX_CPPFLAGS) -DNDEBUG \ -I$(wx_top_builddir)/3rdparty/pcre/src -D__WX__ -DHAVE_CONFIG_H \ @@ -2215,7 +2215,7 @@ LOCALE_LINGUAS = ca cs da de el es fi fr hu id it ja nl pl ru sl sv tr uk zh zh_ @COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX) @COND_USE_PLUGINS_0@PLUGIN_ADV_EXTRALIBS = $(EXTRALIBS_SDL) @COND_PLATFORM_MACOSX_1@WXMACVERSION_CMD = \ -@COND_PLATFORM_MACOSX_1@ -compatibility_version 4.0 -current_version 4.0 +@COND_PLATFORM_MACOSX_1@ -compatibility_version 4.0 -current_version 4.1 @COND_USE_GUI_0@PORTNAME = base @COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION) @COND_TOOLKIT_MAC@WXBASEPORT = _carbon @@ -13977,9 +13977,9 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0 \ @COND_USE_SOVERSION_0@dll___targetsuf2 = .$(SO_SUFFIX) @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@dll___targetsuf3 \ @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \ -@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.3.0 +@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.3.1 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@dll___targetsuf3 \ -@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.3.0.$(SO_SUFFIX) +@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.3.1.$(SO_SUFFIX) @COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@dll___targetsuf3 = -0.$(SO_SUFFIX) @COND_USE_SOVERSION_0@dll___targetsuf3 = .$(SO_SUFFIX) @COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@dll___targetsuf3 = .$(SO_SUFFIX).0 diff --git a/build/bakefiles/version.bkl b/build/bakefiles/version.bkl index d53c0f6115c4..1025b610fd94 100644 --- a/build/bakefiles/version.bkl +++ b/build/bakefiles/version.bkl @@ -23,7 +23,7 @@ changes, change C:R:A to C:R+1:A --> 3 - 0 + 1 3 diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 11e6c26aab4e..a4553ff31be8 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -5989,7 +5989,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=6 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=7 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index cbfeed7290bc..e97f95c0a37a 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -6456,7 +6456,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=6 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=7 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/wx_setup.props b/build/msw/wx_setup.props index 2e1b97dfe13d..052eee4a2170 100644 --- a/build/msw/wx_setup.props +++ b/build/msw/wx_setup.props @@ -5,7 +5,7 @@ - 326 + 327 32 msw vc diff --git a/build/osx/wxvers.xcconfig b/build/osx/wxvers.xcconfig index 81e48c660d61..7e85f1b20434 100644 --- a/build/osx/wxvers.xcconfig +++ b/build/osx/wxvers.xcconfig @@ -1,4 +1,4 @@ // update this file with new version numbers DYLIB_COMPATIBILITY_VERSION = 3.2 -DYLIB_CURRENT_VERSION = 3.2.6 +DYLIB_CURRENT_VERSION = 3.2.7 diff --git a/build/tools/msvs/getversion.bat b/build/tools/msvs/getversion.bat index 185165b530ba..b936302a07be 100644 --- a/build/tools/msvs/getversion.bat +++ b/build/tools/msvs/getversion.bat @@ -1,3 +1,3 @@ set wxMAJOR_VERSION=3 set wxMINOR_VERSION=2 -set wxRELEASE_NUMBER=6 +set wxRELEASE_NUMBER=7 diff --git a/configure b/configure index cb08494066d8..deed37f4c0dd 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.6. +# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.7. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='wxWidgets' PACKAGE_TARNAME='wxwidgets' -PACKAGE_VERSION='3.2.6' -PACKAGE_STRING='wxWidgets 3.2.6' +PACKAGE_VERSION='3.2.7' +PACKAGE_STRING='wxWidgets 3.2.7' PACKAGE_BUGREPORT='wx-dev@googlegroups.com' PACKAGE_URL='' @@ -2012,7 +2012,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wxWidgets 3.2.6 to adapt to many kinds of systems. +\`configure' configures wxWidgets 3.2.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2082,7 +2082,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wxWidgets 3.2.6:";; + short | recursive ) echo "Configuration of wxWidgets 3.2.7:";; esac cat <<\_ACEOF @@ -2588,7 +2588,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wxWidgets configure 3.2.6 +wxWidgets configure 3.2.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3405,7 +3405,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wxWidgets $as_me 3.2.6, which was +It was created by wxWidgets $as_me 3.2.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3868,7 +3868,7 @@ fi wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=6 +wx_release_number=7 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number @@ -46614,7 +46614,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wxWidgets $as_me 3.2.6, which was +This file was extended by wxWidgets $as_me 3.2.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -46680,7 +46680,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wxWidgets config.status 3.2.6 +wxWidgets config.status 3.2.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 73caf77a44bd..2f55b8d07940 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- -AC_INIT([wxWidgets], [3.2.6], [wx-dev@googlegroups.com]) +AC_INIT([wxWidgets], [3.2.7], [wx-dev@googlegroups.com]) dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package AC_CONFIG_SRCDIR([wx-config.in]) @@ -40,7 +40,7 @@ dnl wx_release_number += 1 wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=6 +wx_release_number=7 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index 260011e43fff..8a4cd5f7d8d4 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib BOMBS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index aca511d42db4..dcdc4c295095 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib FORTY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index 4cbeed72d6df..0e5486feeb87 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib FRACTAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index af220a77bf9d..e443ec68b846 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib LIFE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index b4d75f4f1cf2..f08cf41e2010 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WXPOEM_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/docs/changes.txt b/docs/changes.txt index 8e7694799c66..1c3f391057ef 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -248,6 +248,10 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. +3.2.7: (released 2025-??-??) +---------------------------- + + 3.2.6: (released 2024-09-09) ---------------------------- diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 8cbf54485903..5367cdf5126e 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = wxWidgets -PROJECT_NUMBER = 3.2.6 +PROJECT_NUMBER = 3.2.7 PROJECT_BRIEF = PROJECT_LOGO = logo.png OUTPUT_DIRECTORY = out diff --git a/docs/readme.txt b/docs/readme.txt index a24ff3ff34c4..36688756040d 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -wxWidgets 3.2.6 Release Notes +wxWidgets 3.2.7 Release Notes ============================= Welcome to the new stable release of wxWidgets, a free and open source @@ -16,7 +16,7 @@ more about wxWidgets at: Documentation is available online at: -* https://docs.wxwidgets.org/3.2.6/ +* https://docs.wxwidgets.org/3.2.7/ wxWidgets sources and binaries for the selected platforms are available for download from: @@ -25,9 +25,9 @@ download from: or, for a more more permanent but less convenient to use link, from -* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.6/ +* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.7/ -Please see https://docs.wxwidgets.org/3.2.6/overview_install.html for full +Please see https://docs.wxwidgets.org/3.2.7/overview_install.html for full installation instructions. @@ -56,7 +56,7 @@ Other changes include: Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.6/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x releases, so the existing applications don't even need to be rebuilt to profit from all the diff --git a/include/wx/osx/config_xcode.h b/include/wx/osx/config_xcode.h index 9d60e86bee48..2388b5eb531c 100644 --- a/include/wx/osx/config_xcode.h +++ b/include/wx/osx/config_xcode.h @@ -121,9 +121,9 @@ #define PACKAGE_BUGREPORT "wx-dev@googlegroups.com" #define PACKAGE_NAME "wxWidgets" -#define PACKAGE_STRING "wxWidgets 3.2.6" +#define PACKAGE_STRING "wxWidgets 3.2.7" #define PACKAGE_TARNAME "wxwidgets" -#define PACKAGE_VERSION "3.2.6" +#define PACKAGE_VERSION "3.2.7" // for jpeg diff --git a/include/wx/version.h b/include/wx/version.h index e65b814996be..140042aca471 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -27,9 +27,9 @@ /* NB: this file is parsed by automatic tools so don't change its format! */ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 -#define wxRELEASE_NUMBER 6 +#define wxRELEASE_NUMBER 7 #define wxSUBRELEASE_NUMBER 0 -#define wxVERSION_STRING wxT("wxWidgets 3.2.6") +#define wxVERSION_STRING wxT("wxWidgets 3.2.7") /* nothing to update below this line when updating the version */ /* ---------------------------------------------------------------------------- */ diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index 9cfec1fa57b0..678ef94944a5 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ACCESSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index 2198ffeecd7d..c52a4a03d001 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ANITEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index 6a3fc8ee3968..f5266c9867b2 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ARTTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index 1a21711f25c6..cbf8b2fa4ac1 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib AUIDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index 0163899d2a81..1b6c410a1881 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib CALENDAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index ac1f7bc1eb03..91f1153ee1f0 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib CARET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index 84f73b1342d3..4b89eb4dbf94 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib CLIPBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index 036a6467ce70..1b3ecea6fd22 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib COLLPANE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index ae3727aaad4e..27c0be83ee4f 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib COMBO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index df8b8c0a824b..5b9cae681ff8 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib CONFTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index 8c171fff6958..f3f339bc4560 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DATAVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index 50d7c41dd287..94727b030734 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DEBUGRPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index 59c2135e4568..50eca8b8b821 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DIALOGS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index c8d16e33ef74..07d2922b6035 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib NETTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index be79d35838bb..e966fbb067f0 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DISPLAY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index e56dd4479979..e2ff6b347380 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -50,7 +50,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib MY_DLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index 21c02f195067..b8fcbe2d1b8a 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index d37a92ce175d..deca05afb340 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DOCVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index 2b528a3c6e66..248d5071719d 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DRAGIMAG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index 2c37f6e920d1..e02733c48ad9 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib DRAWING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index b911ee9748ae..add7ed2420e1 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ERASE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index 29e629b9737a..526eee860e23 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib EVENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index 4ff69d5375e4..f93ebc1c01bc 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib EXCEPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index 957acc45b46d..e2722d19899a 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib EXEC_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index b722e509d9a0..4ec300459d66 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib FONT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index a91a3c73d552..4808d8c2bc25 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib FSWATCHER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index 9c6b5bc78a8a..f41980a57a4f 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib GRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index 2ac329889ad2..f3f6a0a9faae 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib HELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index 9e6aef769fee..93bc57bf6014 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib HTLBOX_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index 58b52768eafe..d961adff71c9 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ABOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index 88b8270f5180..37679f46455d 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib HTMLHELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index 70a1225254a8..1912174e93fb 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 7509e755df1d..34cb2289ff52 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib HTMLPRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index 31092bebc66e..4345672d2dae 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index 1431c2485592..5afe38f9bba4 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib VIRTUAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index 6be9ea4d55da..58a50cc0521d 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WIDGET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index 19f6d310c8a3..921fd16a8c66 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ZIP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index c3fad0946dd5..9d977d5eaf3e 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib IMAGE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index 641cb5dbdf68..bc3c02c14d15 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib INTERNAT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index a866c26f4c49..8b621d2a40b0 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib IPCCLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index 3ec261f312e8..d0d70d820c1c 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib JOYTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index 1451c1f8f6c7..e9c8c3764fcf 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib KEYBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index a15ad5449a7d..f3d5d367fe24 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib LAYOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index ea6c53c866c6..e5290c50a208 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib LISTCTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index 11846b9945d4..8a6846b916dd 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib MDI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index 9a5e828224bc..e455602a1591 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib MEDIAPLAYER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index 034f4263b153..7bfd94da273b 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib MEMCHECK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index 62b86e996682..5596d0567d54 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib MENU_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index b136c1aeaa47..4bd7eac690ae 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.6, (c) 2005-2024 wxWidgets + $(PRODUCT_NAME) version 3.2.7, (c) 2005-2024 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,15 +15,15 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.6, (c) 2005-2024 wxWidgets + 3.2.7, (c) 2005-2024 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 3.2.6 + 3.2.7 CFBundleVersion - 3.2.6 + 3.2.7 NSHumanReadableCopyright Copyright 2005-2024 wxWidgets NSPrincipalClass diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index b77b46568fdc..71c455b47437 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib MINIMAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index 9db350cc4e88..72cd0cb92da8 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib NATIVDLG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index 101a4144b6a1..6e84263038f8 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib NOTEBOOK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index fc4c25bdb32f..57a4d823d65b 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib OLEAUTO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index 336b0f251ea9..dc8bd5987051 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib CUBE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index 174df0ed4ac8..41707ee3096c 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib ISOSURF_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index 0fcc5b4fe745..4ce72cc5f479 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib PENGUIN_CFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index 8b8df9d899d4..6977826ad152 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib PYRAMID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index 26645efc540f..611f60345345 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib OWNERDRW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index b37ec4fad2e6..9f40dc3d2a6b 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib POPUP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index 32ca4a51a9d8..f8b543e31dcc 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib POWER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index f1b647181c4f..ab71cfeaa992 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib PREFERENCES_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index 7a39a7d33d3e..2e40db6ea604 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib PRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index dfb19eb3ce7c..12778afe6fcf 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib PROPGRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index 579a5734dd07..df907ee12735 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib REGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index 8a1efa93f14d..b2aebfc9151b 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -53,7 +53,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0) RENDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ diff --git a/samples/ribbon/Makefile.in b/samples/ribbon/Makefile.in index f2c61f0a0852..332029a9bbf2 100644 --- a/samples/ribbon/Makefile.in +++ b/samples/ribbon/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib RIBBON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/richtext/Makefile.in b/samples/richtext/Makefile.in index 2a1ce9d6cfc6..7022ebfc3d86 100644 --- a/samples/richtext/Makefile.in +++ b/samples/richtext/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib RICHTEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in index 58239e2c6357..2e8ab03155e3 100644 --- a/samples/sashtest/Makefile.in +++ b/samples/sashtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SASHTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/scroll/Makefile.in b/samples/scroll/Makefile.in index 581b6cc141c9..72d8c009a249 100644 --- a/samples/scroll/Makefile.in +++ b/samples/scroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SCROLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/shaped/Makefile.in b/samples/shaped/Makefile.in index 28ca367eb980..2e1b627a9bce 100644 --- a/samples/shaped/Makefile.in +++ b/samples/shaped/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SHAPED_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sockets/Makefile.in b/samples/sockets/Makefile.in index 43fa19d8bd7b..2d998af4d86d 100644 --- a/samples/sockets/Makefile.in +++ b/samples/sockets/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib CLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sound/Makefile.in b/samples/sound/Makefile.in index a709dac76c5e..36e1eed47449 100644 --- a/samples/sound/Makefile.in +++ b/samples/sound/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SOUND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splash/Makefile.in b/samples/splash/Makefile.in index b48fd018707f..50136cdfba85 100644 --- a/samples/splash/Makefile.in +++ b/samples/splash/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SPLASH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index fe7fea30e6e1..b4411bcf6b64 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SPLITTER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/statbar/Makefile.in b/samples/statbar/Makefile.in index 9d40356e96b1..b2024f5e5803 100644 --- a/samples/statbar/Makefile.in +++ b/samples/statbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib STATBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index e89b6e8349c5..57cf36b21374 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib STCTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index b77c64693ec3..124fb42e33d1 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SVGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taborder/Makefile.in b/samples/taborder/Makefile.in index 13fad032751d..3d6c3607db9b 100644 --- a/samples/taborder/Makefile.in +++ b/samples/taborder/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TABORDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbar/Makefile.in b/samples/taskbar/Makefile.in index 08ad9dcc1b69..8f3e20546cc3 100644 --- a/samples/taskbar/Makefile.in +++ b/samples/taskbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TASKBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbarbutton/Makefile.in b/samples/taskbarbutton/Makefile.in index 4c506669269a..f08c60e465cf 100644 --- a/samples/taskbarbutton/Makefile.in +++ b/samples/taskbarbutton/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TASKBARBUTTON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in index 00bcd8550cd7..dbf14f3cd1d2 100644 --- a/samples/text/Makefile.in +++ b/samples/text/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in index 6f60d07c964a..5771ab60623a 100644 --- a/samples/thread/Makefile.in +++ b/samples/thread/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib THREAD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in index 16ed01851a55..2ab7962b5f0e 100644 --- a/samples/toolbar/Makefile.in +++ b/samples/toolbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TOOLBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in index 106523ce6a6c..aaa96f214696 100644 --- a/samples/treectrl/Makefile.in +++ b/samples/treectrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TREECTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treelist/Makefile.in b/samples/treelist/Makefile.in index 640293fc04e8..5580f923337c 100644 --- a/samples/treelist/Makefile.in +++ b/samples/treelist/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TREELIST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in index ea13bf46b3cb..b8619ab8c961 100644 --- a/samples/typetest/Makefile.in +++ b/samples/typetest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TYPETEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/uiaction/Makefile.in b/samples/uiaction/Makefile.in index d5a9a6d35513..9be79e226774 100644 --- a/samples/uiaction/Makefile.in +++ b/samples/uiaction/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib UIACTION_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in index 7bfa15c77c11..a459e55ae6d1 100644 --- a/samples/validate/Makefile.in +++ b/samples/validate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib VALIDATE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/vscroll/Makefile.in b/samples/vscroll/Makefile.in index a0241043f7f8..e6ff7e4c54d9 100644 --- a/samples/vscroll/Makefile.in +++ b/samples/vscroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib VSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webrequest/Makefile.in b/samples/webrequest/Makefile.in index 32c0cba41fd4..1b459a9f04bb 100644 --- a/samples/webrequest/Makefile.in +++ b/samples/webrequest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WEBREQUEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webview/Makefile.in b/samples/webview/Makefile.in index 65b37ca010fd..04f90d6c237a 100644 --- a/samples/webview/Makefile.in +++ b/samples/webview/Makefile.in @@ -46,7 +46,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WEBVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index 4abb90580bf4..5336f26988fb 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WIDGETS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wizard/Makefile.in b/samples/wizard/Makefile.in index ee9bc74cd318..6ad3f4bc025b 100644 --- a/samples/wizard/Makefile.in +++ b/samples/wizard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WIZARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wrapsizer/Makefile.in b/samples/wrapsizer/Makefile.in index 5f779b7a9d44..517bbe74fa5f 100644 --- a/samples/wrapsizer/Makefile.in +++ b/samples/wrapsizer/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib WRAPSIZER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index d8f2769409f4..767ac557d971 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib XRCDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xti/Makefile.in b/samples/xti/Makefile.in index 87e20aac490b..f13afb9f4502 100644 --- a/samples/xti/Makefile.in +++ b/samples/xti/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib XTI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 6801f8e0459d..285e48002506 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -52,7 +52,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(__test_PCH_INC) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in index dacf61450c59..69406bc291fa 100644 --- a/tests/benchmarks/Makefile.in +++ b/tests/benchmarks/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib BENCH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/tests/makefile.vc b/tests/makefile.vc index f6d4f193fc25..43ea60cd9b08 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -859,14 +859,14 @@ data-images: if not exist image mkdir image for %f in (bitfields.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%f copy .\image\%f image -fr: - if not exist $(OBJS)\intl\fr mkdir $(OBJS)\intl\fr - for %f in (internat.po internat.mo) do if not exist $(OBJS)\intl\fr\%f copy .\intl\fr\%f $(OBJS)\intl\fr - en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB for %f in (internat.po internat.mo) do if not exist $(OBJS)\intl\en_GB\%f copy .\intl\en_GB\%f $(OBJS)\intl\en_GB +fr: + if not exist $(OBJS)\intl\fr mkdir $(OBJS)\intl\fr + for %f in (internat.po internat.mo) do if not exist $(OBJS)\intl\fr\%f copy .\intl\fr\%f $(OBJS)\intl\fr + ja: if not exist $(OBJS)\intl\ja mkdir $(OBJS)\intl\ja for %f in (internat.po internat.mo) do if not exist $(OBJS)\intl\ja\%f copy .\intl\ja\%f $(OBJS)\intl\ja diff --git a/utils/helpview/src/Makefile.in b/utils/helpview/src/Makefile.in index a40518a6c00b..9d362517eb9b 100644 --- a/utils/helpview/src/Makefile.in +++ b/utils/helpview/src/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/screenshotgen/src/Makefile.in b/utils/screenshotgen/src/Makefile.in index ce2251dfdff9..d2d88cecb21c 100644 --- a/utils/screenshotgen/src/Makefile.in +++ b/utils/screenshotgen/src/Makefile.in @@ -49,7 +49,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).6 +WX_VERSION = $(WX_RELEASE).7 LIBDIRNAME = $(wx_top_builddir)/lib SCREENSHOTGEN_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ From a152d7d24a6c05a7262ca6c1649d4f1914a5cb3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Mon, 9 Sep 2024 18:24:14 +0200 Subject: [PATCH 007/416] Fix GetPreferredUILanguage() on macOS Fix preferred language matching when both the list from wxUILocale::GetPreferredUILanguages() and the list of available translations are BCP-47 language tags. This happens on macOS if the application uses .lproj folders for localized resources to store translations. Closes #24804. (cherry picked from commit 44c24f12ee5127f0252c3c424ef54f0403b5ddba) --- docs/changes.txt | 4 ++++ src/common/translation.cpp | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 1c3f391057ef..eeadc51e6cda 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -251,6 +251,10 @@ Changes in behaviour which may result in build errors 3.2.7: (released 2025-??-??) ---------------------------- +wxOSX: + +- Fix regression in GetPreferredUILanguage() in some cases (#24804). + 3.2.6: (released 2024-09-09) ---------------------------- diff --git a/src/common/translation.cpp b/src/common/translation.cpp index 30b1ca42dc30..dd0f6f7ad56b 100644 --- a/src/common/translation.cpp +++ b/src/common/translation.cpp @@ -133,6 +133,11 @@ wxString GetPreferredUILanguage(const wxArrayString& available) j != preferred.end(); ++j ) { + // try exact match first: + if (available.Index(*j, /*bCase=*/false) != wxNOT_FOUND) + return *j; + + // try looking up as a POSIX locale: wxLocaleIdent localeId = wxLocaleIdent::FromTag(*j); wxString lang = localeId.GetTag(wxLOCALE_TAGTYPE_POSIX); From 568bea42876828e52e11b6bc1293e83683eb6073 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 14 Sep 2024 09:09:29 +0200 Subject: [PATCH 008/416] Fix not getting mouse motion events for scrolled window in wxOSX Add tracking handler to clip view as well to ensure we get them. See #24797, #24790, #24809. (cherry picked from commit aaf77824bd283edaab8f0dd8159a591048acedb4) --- docs/changes.txt | 1 + src/osx/cocoa/window.mm | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index eeadc51e6cda..6f3516661470 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -253,6 +253,7 @@ Changes in behaviour which may result in build errors wxOSX: +- Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). - Fix regression in GetPreferredUILanguage() in some cases (#24804). diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index bdef050c04a4..337eea67dae8 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -4151,6 +4151,13 @@ new wxCocoaGesturesImpl(this, m_osxView, eventsMask) [(NSClipView*)m_osxClipView setDrawsBackground: NO]; [m_osxView addSubview:m_osxClipView]; + // add tracking for this clipview as well + + NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited|NSTrackingCursorUpdate|NSTrackingMouseMoved|NSTrackingActiveAlways|NSTrackingInVisibleRect; + NSTrackingArea* area = [[NSTrackingArea alloc] initWithRect: NSZeroRect options: options owner: m_osxClipView userInfo: nil]; + [m_osxClipView addTrackingArea: area]; + [area release]; + wxWidgetImpl::Associate( m_osxClipView, this ) ; // TODO check for additional subwindows which might have to be moved to the clip view ? From 9ff8d10132960fadb07b1c2755e6bd89366a9727 Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Mon, 16 Sep 2024 12:21:10 +0100 Subject: [PATCH 009/416] Avoid trailing space with wx-config --c[xx]flags When WXCONFIG_C[XX]FLAGS is empty, this ends up being: `echo $._cppflags ""` which results in a trailing space being printed. This is a minor issue but it may confuse a tool trying to parse the output of wx-config. Removing the quotes would instead give `echo $._cppflags `, which does not print a trailing space. See #24812. (cherry picked from commit a5e4409dfce86ba27a4984181b81a81cc7364005) --- docs/changes.txt | 4 ++++ wx-config.in | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 6f3516661470..ac58e2f9ded4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -251,6 +251,10 @@ Changes in behaviour which may result in build errors 3.2.7: (released 2025-??-??) ---------------------------- +All: + +- Avoid trailing space in `wx-config --c[xx]flags` (Tobiasz Laskowski, #24812). + wxOSX: - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). diff --git a/wx-config.in b/wx-config.in index 4df8571d287f..019dc35c7e5b 100755 --- a/wx-config.in +++ b/wx-config.in @@ -1293,8 +1293,8 @@ _cppflags=`echo "-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@" $_include_cppflags # now without further ado, we can answer these too. [ -z "$output_option_cppflags" ] || echo $_cppflags -[ -z "$output_option_cflags" ] || echo $_cppflags "@WXCONFIG_CFLAGS@" -[ -z "$output_option_cxxflags" ] || echo $_cppflags "@WXCONFIG_CXXFLAGS@" +[ -z "$output_option_cflags" ] || echo $_cppflags @WXCONFIG_CFLAGS@ +[ -z "$output_option_cxxflags" ] || echo $_cppflags @WXCONFIG_CXXFLAGS@ [ -z "$output_option_gl_libs" ] || echo `lib_flags_for gl` [ -z "$output_option_linkdeps" ] || echo $link_deps From f99b2ff01291388a0d56c8a9154d5e072c3f2bd2 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Mon, 16 Sep 2024 22:38:13 -0400 Subject: [PATCH 010/416] Fix docs generation for datetime with doxygen 1.11.0 It seems that as of the below commit, doxygen changed its handling of parsing backticks in comments such that it now fails to properly generate documentation for the entire datetime.h file. Fix this by closing the open backtick. Also update the actual, non-documentation, header to match for consistency, even if non-matching backticks are not a problem there. See: https://github.com/doxygen/doxygen/commit/f18767307be20ca8d2ca81f74cc1f3446205282b See #24814. (cherry picked from commit 2d79dfc7a2a8dd42021ff0ea3dcc8ed05f7c23ef) --- include/wx/datetime.h | 2 +- interface/wx/datetime.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/wx/datetime.h b/include/wx/datetime.h index 6eb2f8ce2ea3..8c3cf43cf4b7 100644 --- a/include/wx/datetime.h +++ b/include/wx/datetime.h @@ -148,7 +148,7 @@ class WXDLLIMPEXP_BASE wxDateTime Local, // zones from GMT (= Greenwich Mean Time): they're guaranteed to be - // consequent numbers, so writing something like `GMT0 + offset' is + // consequent numbers, so writing something like `GMT0 + offset` is // safe if abs(offset) <= 12 // underscore stands for minus diff --git a/interface/wx/datetime.h b/interface/wx/datetime.h index ae99947e76b4..4604b757ca13 100644 --- a/interface/wx/datetime.h +++ b/interface/wx/datetime.h @@ -96,7 +96,7 @@ class wxDateTime ///@{ /// zones from GMT (= Greenwich Mean Time): they're guaranteed to be - /// consequent numbers, so writing something like `GMT0 + offset' is + /// consequent numbers, so writing something like `GMT0 + offset` is /// safe if abs(offset) <= 12 // underscore stands for minus From 9617dfbbc839672bcc5845ffb080e45f044f01a8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 19 Aug 2024 03:11:14 +0200 Subject: [PATCH 011/416] Improve appearance of checkboxes in wxPropGrid in high DPI See #24650, #24651, #24671, #24754. (cherry picked from commit 89b38ded388302fd6842f36405dfab27a6c34e9c) --- docs/changes.txt | 4 ++++ src/propgrid/editors.cpp | 16 ++++++++++------ src/propgrid/property.cpp | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index ac58e2f9ded4..2749a4ba061c 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -255,6 +255,10 @@ All: - Avoid trailing space in `wx-config --c[xx]flags` (Tobiasz Laskowski, #24812). +All (GUI): + +- Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). + wxOSX: - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). diff --git a/src/propgrid/editors.cpp b/src/propgrid/editors.cpp index 22978d85e38f..75bac257a34c 100644 --- a/src/propgrid/editors.cpp +++ b/src/propgrid/editors.cpp @@ -1414,7 +1414,15 @@ static void DrawSimpleCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect, int #endif } - wxRendererNative::Get().DrawCheckBox(win, dc, rect, cbFlags); + // Ignore the specified height because the native renderer only draws + // checkboxes correctly when using its own preferred size in high DPI. + wxRendererNative::Get().DrawCheckBox + ( + win, + dc, + wxRect(wxRendererNative::Get().GetCheckBoxSize(win)).CenterIn(rect), + cbFlags + ); #else wxUnusedVar(win); @@ -1497,11 +1505,7 @@ class wxSimpleCheckBox : public wxControl void SetBoxHeight(int height) { m_boxHeight = height; - // Box rectangle - wxRect rect(GetClientSize()); - rect.y += 1; - rect.width += 1; - m_boxRect = GetBoxRect(rect, m_boxHeight); + m_boxRect = GetBoxRect(GetClientSize(), m_boxHeight); } static wxRect GetBoxRect(const wxRect& r, int box_h) diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp index d9e922eab749..562fa5639bb4 100644 --- a/src/propgrid/property.cpp +++ b/src/propgrid/property.cpp @@ -94,7 +94,7 @@ void wxPGCellRenderer::DrawEditorValue( wxDC& dc, const wxRect& rect, { wxRect rect2(rect); rect2.Offset(xOffset, yOffset); - rect2.height -= yOffset; + rect2.height -= yOffset * 2; editor->DrawValue( dc, rect2, property, text ); } else From 6811c4fe0f5eebe21be1fa1e2dac374601d86a74 Mon Sep 17 00:00:00 2001 From: taler21 <99262969+taler21@users.noreply.github.com> Date: Mon, 23 Sep 2024 19:36:53 +0200 Subject: [PATCH 012/416] Improve print preview in high DPI Take the DPI scaling factor into account. This is a partial backport of 6418bc261d (Fix print preview in high DPI, 2024-09-17). See #24666, #24815. --- docs/changes.txt | 4 ++++ src/common/prntbase.cpp | 24 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 2749a4ba061c..dbf84789f8cb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,10 @@ All (GUI): - Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). +wxMSW: + +- Improve print preview in high DPI (taler21, #24815). + wxOSX: - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 8803ef1bc36e..57a8f53880c8 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -939,7 +939,7 @@ wxScrolledWindow(parent, wxID_ANY, pos, size, style | wxFULL_REPAINT_ON_RESIZE, // Use some reasonable default size for this window, roughly proportional // to the paper sheet. - SetInitialSize(wxSize(600, 750)); + SetInitialSize(FromDIP(wxSize(600, 750))); } wxPreviewCanvas::~wxPreviewCanvas() @@ -1940,8 +1940,8 @@ void wxPrintPreviewBase::CalcRects(wxPreviewCanvas *canvas, wxRect& pageRect, wx canvas->GetSize(&canvasWidth, &canvasHeight); float zoomScale = m_currentZoom / 100.0f; - float screenPrintableWidth = zoomScale * m_pageWidth * m_previewScaleX; - float screenPrintableHeight = zoomScale * m_pageHeight * m_previewScaleY; + float screenPrintableWidth = zoomScale * canvas->FromDIP(m_pageWidth) * m_previewScaleX; + float screenPrintableHeight = zoomScale * canvas->FromDIP(m_pageHeight) * m_previewScaleY; wxRect devicePaperRect = m_previewPrintout->GetPaperRectPixels(); wxCoord devicePrintableWidth, devicePrintableHeight; @@ -2094,7 +2094,14 @@ bool wxPrintPreviewBase::RenderPage(int pageNum) if (!m_previewBitmap) { - m_previewBitmap = new wxBitmap(pageRect.width, pageRect.height); + m_previewBitmap = new wxBitmap(); +#ifdef wxHAS_DPI_INDEPENDENT_PIXELS + m_previewBitmap->CreateWithDIPSize( pageRect.width, pageRect.height, + m_previewCanvas->GetDPIScaleFactor() ); +#else + m_previewBitmap->Create( pageRect.width, pageRect.height ); + m_previewBitmap->SetScaleFactor( m_previewCanvas->GetDPIScaleFactor() ); +#endif if (!m_previewBitmap || !m_previewBitmap->IsOk()) { @@ -2132,7 +2139,7 @@ bool wxPrintPreviewBase::DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc) CalcRects(canvas, pageRect, paperRect); // Draw shadow, allowing for 1-pixel border AROUND the actual paper - wxCoord shadowOffset = 4; + wxCoord shadowOffset = dc.FromDIP(4); dc.SetPen(*wxBLACK_PEN); dc.SetBrush(*wxBLACK_BRUSH); @@ -2143,10 +2150,11 @@ bool wxPrintPreviewBase::DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc) shadowOffset, paperRect.height); // Draw blank page allowing for 1-pixel border AROUND the actual paper - dc.SetPen(*wxBLACK_PEN); + dc.SetPen(wxPen(*wxBLACK, dc.FromDIP(1), wxPENSTYLE_SOLID)); dc.SetBrush(*wxWHITE_BRUSH); - dc.DrawRectangle(paperRect.x - 1, paperRect.y - 1, - paperRect.width + 2, paperRect.height + 2); + wxCoord borderOffset = wxRound(dc.GetPen().GetWidth() / 2.0); + dc.DrawRectangle(paperRect.x - borderOffset, paperRect.y - borderOffset, + paperRect.width + 2*borderOffset, paperRect.height + 2*borderOffset); return true; } From 669438636b8478d2d6a32f29d591db4c702344b1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 23 Sep 2024 00:15:39 +0200 Subject: [PATCH 013/416] Fix events generated when toast-based notifications are dismissed Make wxToastEventHandler::QueryInterface() work correctly by implementing it ourselves instead of relying on the stuff in wx/msw/ole/comimpl.h which only works for the classes supporting a single (not counting IUnknown) interface, as the object pointer has to be cast to the pointer to the correct interface when there is more than one of them. See #24320, #24826. (cherry picked from commit 38132bcb945d2b9f33f3fcd54328fd8c6e013eb9) --- docs/changes.txt | 1 + src/msw/rt/notifmsgrt.cpp | 57 +++++++++++++++++++++++++++++++-------- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index dbf84789f8cb..a53ae4efd221 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All (GUI): wxMSW: - Improve print preview in high DPI (taler21, #24815). +- Fix events generated when toast-based notifications are dismissed (#24320). wxOSX: diff --git a/src/msw/rt/notifmsgrt.cpp b/src/msw/rt/notifmsgrt.cpp index b03504c04b3b..3079bdc93f41 100644 --- a/src/msw/rt/notifmsgrt.cpp +++ b/src/msw/rt/notifmsgrt.cpp @@ -23,7 +23,6 @@ #include "wx/msw/rt/utils.h" #include "wx/msw/private/comptr.h" #include "wx/msw/wrapshl.h" -#include "wx/msw/ole/comimpl.h" #include "wx/filename.h" #include "wx/stdpaths.h" @@ -70,21 +69,57 @@ class wxToastEventHandler : IFACEMETHODIMP Invoke(IToastNotification *sender, IToastFailedEventArgs *e); // IUnknown - DECLARE_IUNKNOWN_METHODS; + STDMETHODIMP_(ULONG) AddRef() wxOVERRIDE + { + return ++m_cRef; + } + + STDMETHODIMP_(ULONG) Release() wxOVERRIDE + { + if ( !--m_cRef ) + { + delete this; + return 0; + } + + return m_cRef; + } + + STDMETHODIMP QueryInterface(REFIID riid, void **ppv) wxOVERRIDE + { + if ( riid == IID_IUnknown || riid == __uuidof(DesktopToastActivatedEventHandler) ) + { + DesktopToastActivatedEventHandler* const p = this; + *ppv = p; + } + else if ( riid == __uuidof(DesktopToastDismissedEventHandler) ) + { + DesktopToastDismissedEventHandler* const p = this; + *ppv = p; + } + else if ( riid == __uuidof(DesktopToastFailedEventHandler) ) + { + DesktopToastFailedEventHandler* const p = this; + *ppv = p; + } + else + { + *ppv = NULL; + + return E_NOINTERFACE; + } + + AddRef(); + + return S_OK; + } private: + ULONG m_cRef = 0; + wxToastNotifMsgImpl* m_impl; }; -BEGIN_IID_TABLE(wxToastEventHandler) -ADD_IID(Unknown) -ADD_RAW_IID(__uuidof(DesktopToastActivatedEventHandler)) -ADD_RAW_IID(__uuidof(DesktopToastDismissedEventHandler)) -ADD_RAW_IID(__uuidof(DesktopToastFailedEventHandler)) -END_IID_TABLE; - -IMPLEMENT_IUNKNOWN_METHODS(wxToastEventHandler) - class wxToastNotifMsgImpl : public wxNotificationMessageImpl { public: From 3f4b66c05d9bb659f7946c952100f1f0a9ecaa25 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 28 Sep 2024 18:48:04 +0200 Subject: [PATCH 014/416] Move code logging GDK atom being added to clipboard No real changes, just put this log into the function actually doing this instead of doing it in one place where it's called. (cherry picked from commit 20a17c0ef9b935abbb43a777d39bb5dba0d1663e) --- src/gtk/clipbrd.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 0b3a1cd01dbf..51361047b8cb 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -524,6 +524,9 @@ bool wxClipboard::SetSelectionOwner(bool set) void wxClipboard::AddSupportedTarget(GdkAtom atom) { + wxLogTrace(TRACE_CLIPBOARD, wxT("Adding support for %s"), + wxGtkString(gdk_atom_name(atom)).c_str()); + gtk_selection_add_target ( m_clipboardWidget, @@ -706,9 +709,6 @@ bool wxClipboard::AddData( wxDataObject *data ) } #endif // __WXGTK3__ - wxLogTrace(TRACE_CLIPBOARD, wxT("Adding support for %s"), - format.GetId()); - AddSupportedTarget(format); } From 7c211248d65a46bc85acf64278478eb68d4b9c1b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 28 Sep 2024 19:45:25 +0200 Subject: [PATCH 015/416] Extract wxAtomName() helper function No real changes, just simplify calls to gdk_atom_name(). (cherry picked from commit d7ec3a1502363cc01ec09ff79a8d41249d281a1c) --- src/gtk/clipbrd.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 51361047b8cb..5a45c96e0caf 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -48,6 +48,11 @@ static GdkAtom g_timestampAtom = 0; // This is defined in src/gtk/dataobj.cpp. extern bool wxGTKIsSameFormat(GdkAtom atom1, GdkAtom atom2); +static wxString wxAtomName(GdkAtom atom) +{ + return wxString::FromAscii(wxGtkString(gdk_atom_name(atom))); +} + // the trace mask we use with wxLogTrace() - call // wxLog::AddTraceMask(TRACE_CLIPBOARD) to enable the trace messages from here // (there will be a *lot* of them!) @@ -294,9 +299,9 @@ selection_handler( GtkWidget *WXUNUSED(widget), wxLogTrace(TRACE_CLIPBOARD, wxT("clipboard data in format %s, GtkSelectionData is target=%s type=%s selection=%s timestamp=%u"), format.GetId(), - wxString::FromAscii(wxGtkString(gdk_atom_name(gtk_selection_data_get_target(selection_data)))), - wxString::FromAscii(wxGtkString(gdk_atom_name(gtk_selection_data_get_data_type(selection_data)))), - wxString::FromAscii(wxGtkString(gdk_atom_name(gtk_selection_data_get_selection(selection_data)))), + wxAtomName(gtk_selection_data_get_target(selection_data)), + wxAtomName(gtk_selection_data_get_data_type(selection_data)), + wxAtomName(gtk_selection_data_get_selection(selection_data)), timestamp ); @@ -524,8 +529,7 @@ bool wxClipboard::SetSelectionOwner(bool set) void wxClipboard::AddSupportedTarget(GdkAtom atom) { - wxLogTrace(TRACE_CLIPBOARD, wxT("Adding support for %s"), - wxGtkString(gdk_atom_name(atom)).c_str()); + wxLogTrace(TRACE_CLIPBOARD, wxT("Adding support for %s"), wxAtomName(atom)); gtk_selection_add_target ( From 0b0f023017fd5d746d0b895b21f856551639e57f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 28 Sep 2024 19:48:26 +0200 Subject: [PATCH 016/416] Use gtk_selection_add_targets() in wxGTK clipboard code For some reason, calling gtk_selection_add_target() multiple times doesn't work under some Wayland compositors, including at least Weston: only the first call to it is taken into account, but the other atoms don't appear to be added to the list of supported formats. Work around this by calling gtk_selection_add_targets() to add all of them at once, which works with at least Weston. See #24701. (cherry picked from commit 0373d60a36b8b7a03e163a7134ccafb1642ad5b8) --- src/gtk/clipbrd.cpp | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 5a45c96e0caf..1a638c5261d1 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -527,10 +527,10 @@ bool wxClipboard::SetSelectionOwner(bool set) return rc; } +// This function is unused in 3.2 and preserved just in the (very unlikely) +// case somebody managed to call this private function from their code. void wxClipboard::AddSupportedTarget(GdkAtom atom) { - wxLogTrace(TRACE_CLIPBOARD, wxT("Adding support for %s"), wxAtomName(atom)); - gtk_selection_add_target ( m_clipboardWidget, @@ -679,9 +679,11 @@ bool wxClipboard::AddData( wxDataObject *data ) wxDataFormatArray formats(count); data->GetAllFormats(formats.get()); + wxVector atomNames; + // always provide TIMESTAMP as a target, see comments in selection_handler // for explanation - AddSupportedTarget(g_timestampAtom); + atomNames.push_back("TIMESTAMP"); #ifdef __WXGTK3__ bool addedUTF8Text = false; @@ -713,9 +715,31 @@ bool wxClipboard::AddData( wxDataObject *data ) } #endif // __WXGTK3__ - AddSupportedTarget(format); + atomNames.push_back(wxAtomName(format)); + } + + wxVector targets(atomNames.size()); + wxVector::iterator target = targets.begin(); + for ( size_t i = 0; i < atomNames.size(); i++ ) + { + const wxString& name = atomNames[i]; + + wxLogTrace(TRACE_CLIPBOARD, wxT("Adding support for %s"), name); + + target->target = const_cast((const char*)name.utf8_str()); + target->flags = 0; + target->info = 0; + ++target; } + gtk_selection_add_targets + ( + m_clipboardWidget, + GTKGetClipboardAtom(), + &targets[0], + targets.size() + ); + if ( !m_idSelectionGetHandler ) { m_idSelectionGetHandler = g_signal_connect ( From a570d5db7bd6dc6c90be79faa0054c18cc69571f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 16:42:22 +0200 Subject: [PATCH 017/416] Define helper "isWayland" variable in wxClipboard::AddData() No real changes, just make the code a bit more readable. (cherry picked from commit 56ed13dfb76a7e8dc64d8c1d277619d4eb36a0b5) --- src/gtk/clipbrd.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 1a638c5261d1..583d5805ce92 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -679,6 +679,13 @@ bool wxClipboard::AddData( wxDataObject *data ) wxDataFormatArray formats(count); data->GetAllFormats(formats.get()); +#ifdef GDK_WINDOWING_WAYLAND + const bool isWayland = + wxGTKImpl::IsWayland(gtk_widget_get_window(m_clipboardWidget)); +#else // !GDK_WINDOWING_WAYLAND + const bool isWayland = false; +#endif // GDK_WINDOWING_WAYLAND/!GDK_WINDOWING_WAYLAND + wxVector atomNames; // always provide TIMESTAMP as a target, see comments in selection_handler @@ -694,7 +701,7 @@ bool wxClipboard::AddData( wxDataObject *data ) const wxDataFormat format(formats[i]); #ifdef __WXGTK3__ - if ( wxGTKImpl::IsWayland(gtk_widget_get_window(m_clipboardWidget)) ) + if ( isWayland ) { if ( format == wxDF_UNICODETEXT ) { From 1ae0cacbc30192386803586fc07b61a7974dde6c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 16:43:30 +0200 Subject: [PATCH 018/416] Don't bother advertising TIMESTAMP under Wayland This doesn't seem to be used there, and no native Wayland applications ever put it on clipboard, so don't do it neither when using Wayland. (cherry picked from commit 4c83451b76480f5ac113ee2d88c89ceca56e1532) --- src/gtk/clipbrd.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 583d5805ce92..3c16c9eedf6d 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -688,9 +688,10 @@ bool wxClipboard::AddData( wxDataObject *data ) wxVector atomNames; - // always provide TIMESTAMP as a target, see comments in selection_handler - // for explanation - atomNames.push_back("TIMESTAMP"); + // under X11, always provide TIMESTAMP as a target, see comments in + // selection_handler for explanation + if ( !isWayland ) + atomNames.push_back("TIMESTAMP"); #ifdef __WXGTK3__ bool addedUTF8Text = false; From fdfc0bee6a8887a3aa6ae597d8f65108190acdca Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 16:44:10 +0200 Subject: [PATCH 019/416] Always provide Wayland native clipboard text formats ourselves Don't rely on GTK for doing it as this has been only added in 3.24.35 and there are systems using Wayland with older GTK versions, e.g. Ubuntu 22.04 which uses 3.24.33. Also put Wayland native formats first, before the X11 ones: even though it doesn't seem to really matter, it's again more consistent with what the native Wayland applications do. See #24701. (cherry picked from commit a24b3dd233099884b66d7f3a8a4c8b6f46c05a24) --- src/gtk/clipbrd.cpp | 17 +++++++++++++++++ src/gtk/dataobj.cpp | 11 +++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 3c16c9eedf6d..a1f986797555 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -48,6 +48,9 @@ static GdkAtom g_timestampAtom = 0; // This is defined in src/gtk/dataobj.cpp. extern bool wxGTKIsSameFormat(GdkAtom atom1, GdkAtom atom2); +// Returns alternative format used under Wayland for the given format or 0. +extern GdkAtom wxGTKGetAltWaylandFormat(GdkAtom atom); + static wxString wxAtomName(GdkAtom atom) { return wxString::FromAscii(wxGtkString(gdk_atom_name(atom))); @@ -723,6 +726,20 @@ bool wxClipboard::AddData( wxDataObject *data ) } #endif // __WXGTK3__ + // Put Wayland native format first, if any. + // + // Note that since v3.24.25, GTK adds Wayland formats automatically + // when putting the traditional X11 atoms corresponding text formats + // available, so this could be skipped for the high enough versions, + // but it seems simpler to just always do this than test GTK version + // and this ensures consistent behaviour on all distributions. + if ( isWayland ) + { + if ( GdkAtom altFormat = wxGTKGetAltWaylandFormat(format) ) + atomNames.push_back(wxAtomName(altFormat)); + } + + // But still to use the traditional X11 one too in any case. atomNames.push_back(wxAtomName(format)); } diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index f620a4bddb7a..376307df2275 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -197,6 +197,17 @@ extern bool wxGTKIsSameFormat(GdkAtom atom1, GdkAtom atom2) return false; } +// Also used by wxClipboard to use the alternative Wayland atoms for the text. +extern GdkAtom wxGTKGetAltWaylandFormat(GdkAtom atom) +{ + if (atom == g_u8strAtom) + return g_u8textAtom.Get(); + if (atom == g_strAtom) + return g_textAtom.Get(); + + return NULL; +} + bool wxDataFormat::operator==(const wxDataFormat& other) const { if ( m_type != other.m_type ) From fab4e4e917b6ac360e5aee4bc11605cd249a991c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 16:53:43 +0200 Subject: [PATCH 020/416] Revert hack with ignoring wxDF_TEXT under Wayland This reverts 1b3afc41db (Don't advertise wxDF_TEXT when copying text under Wayland, 2024-03-20) which isn't necessary any longer after the changes of eeda1f14f5 (Use gtk_selection_add_targets() in wxGTK clipboard code, 2024-09-28) as adding all targets at once avoids the problem with STRING replacing UTF8_STRING etc. (cherry picked from commit c2a2d270417552c130c965fb0fde6a50a8d50f52) --- src/gtk/clipbrd.cpp | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index a1f986797555..8e2b01bbb236 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -696,36 +696,10 @@ bool wxClipboard::AddData( wxDataObject *data ) if ( !isWayland ) atomNames.push_back("TIMESTAMP"); -#ifdef __WXGTK3__ - bool addedUTF8Text = false; -#endif // __WXGTK3__ - for ( size_t i = 0; i < count; i++ ) { const wxDataFormat format(formats[i]); -#ifdef __WXGTK3__ - if ( isWayland ) - { - if ( format == wxDF_UNICODETEXT ) - { - addedUTF8Text = true; - } - else if ( format == wxDF_TEXT ) - { - if ( addedUTF8Text ) - { - // We already added UTF-8 text format, adding plain text - // format is not only unnecessary but seems to be actually - // harmful under Wayland because it somehow _replaces_ - // UTF8_STRING, even though it shouldn't happen according - // to the documentation. - continue; - } - } - } -#endif // __WXGTK3__ - // Put Wayland native format first, if any. // // Note that since v3.24.25, GTK adds Wayland formats automatically From 91197f9583b0d5fe041bc20a19ddc8d752f8c33c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 16:58:58 +0200 Subject: [PATCH 021/416] Order clipboard formats in Wayland-first order under Wayland This doesn't seem to make any real difference, but is again more consistent with the way the native Wayland applications work. (cherry picked from commit ecdc3b2fbc327a20c21ef297a3275d327590f0c2) --- src/gtk/clipbrd.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 8e2b01bbb236..c6c56c04ab6b 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -689,7 +689,7 @@ bool wxClipboard::AddData( wxDataObject *data ) const bool isWayland = false; #endif // GDK_WINDOWING_WAYLAND/!GDK_WINDOWING_WAYLAND - wxVector atomNames; + wxVector atomNames, atomX11Names; // under X11, always provide TIMESTAMP as a target, see comments in // selection_handler for explanation @@ -710,13 +710,25 @@ bool wxClipboard::AddData( wxDataObject *data ) if ( isWayland ) { if ( GdkAtom altFormat = wxGTKGetAltWaylandFormat(format) ) + { atomNames.push_back(wxAtomName(altFormat)); + + // Still use the traditional X11 one too for compatibility but + // put it at the end of the formats list. + atomX11Names.push_back(wxAtomName(format)); + + continue; + } } - // But still to use the traditional X11 one too in any case. + // When not using Wayland or when the same format is used under Wayland + // and X11, just add it to the list directly. atomNames.push_back(wxAtomName(format)); } + // Add the X11 formats at the end, if any. + WX_APPEND_ARRAY(atomNames, atomX11Names); + wxVector targets(atomNames.size()); wxVector::iterator target = targets.begin(); for ( size_t i = 0; i < atomNames.size(); i++ ) From 93fdb1b910ed2e541c2c941094a3d43e4b6f3b6e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 17:24:45 +0200 Subject: [PATCH 022/416] Document Wayland clipboard fixes in the change log --- docs/changes.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index a53ae4efd221..86fddb81e1f8 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,10 @@ All (GUI): - Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). +wxGTK: + +- Fix copy-pasting text under more Wayland compositors (Weston, kwin) (#24701). + wxMSW: - Improve print preview in high DPI (taler21, #24815). From dbeef280e9c85f717a9bedf1685fe4d9c74f304a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Sep 2024 15:37:44 +0200 Subject: [PATCH 023/416] Fix position of the icons when printing in wxMSW We need to account for wxPrinterDC origin when drawing the icons, so use the same XLOG2DEV() and YLOG2DEV() macros as in src/msw/dc.cpp in this file and apply them to the coordinates before passing them to the native functions. See #24673, #24834. (cherry picked from commit 6ecc7af12fe5be29bb1aeb3fddfe2c57efb8550b) --- docs/changes.txt | 1 + src/msw/dcprint.cpp | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 86fddb81e1f8..7b20d18202d0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -266,6 +266,7 @@ wxGTK: wxMSW: - Improve print preview in high DPI (taler21, #24815). +- Fix position of the icons in the printout (#24673). - Fix events generated when toast-based notifications are dismissed (#24320). wxOSX: diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index b12aa4c73c64..053b914b8187 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -56,6 +56,11 @@ #define wxUSE_PS_PRINTING 0 #endif +// See the comment in wx/msw/dc.cpp before the definition of the macros with +// the same names for the explanation. +#define XLOG2DEV(x) ((x) + (m_deviceOriginX / m_scaleX)) +#define YLOG2DEV(y) ((y) + (m_deviceOriginY / m_scaleY)) + // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- @@ -411,7 +416,7 @@ void wxPrinterDCImpl::DoDrawBitmap(const wxBitmap& bmp, height = bmp.GetHeight(); if ( !(::GetDeviceCaps(GetHdc(), RASTERCAPS) & RC_STRETCHDIB) || - !DrawBitmapUsingStretchDIBits(GetHdc(), bmp, x, y) ) + !DrawBitmapUsingStretchDIBits(GetHdc(), bmp, XLOG2DEV(x), YLOG2DEV(y)) ) { // no support for StretchDIBits() or an error occurred if we got here wxMemoryDC memDC; @@ -455,9 +460,9 @@ bool wxPrinterDCImpl::DoBlit(wxCoord xdest, wxCoord ydest, if (cref) { HBRUSH brush = ::CreateSolidBrush(::GetPixel(dcSrc, x, y)); - rect.left = xdest + x; + rect.left = XLOG2DEV(xdest) + x; rect.right = rect.left + 1; - rect.top = ydest + y; + rect.top = YLOG2DEV(ydest) + y; rect.bottom = rect.top + 1; ::FillRect(GetHdc(), &rect, brush); ::DeleteObject(brush); @@ -468,7 +473,7 @@ bool wxPrinterDCImpl::DoBlit(wxCoord xdest, wxCoord ydest, else // no mask { if ( !(::GetDeviceCaps(GetHdc(), RASTERCAPS) & RC_STRETCHDIB) || - !DrawBitmapUsingStretchDIBits(GetHdc(), bmp, xdest, ydest) ) + !DrawBitmapUsingStretchDIBits(GetHdc(), bmp, XLOG2DEV(xdest), YLOG2DEV(ydest)) ) { // no support for StretchDIBits @@ -484,14 +489,14 @@ bool wxPrinterDCImpl::DoBlit(wxCoord xdest, wxCoord ydest, COLORREF col = ::GetPixel(dcSrc, x, y); HBRUSH brush = ::CreateSolidBrush( col ); - rect.left = xdest + x; - rect.top = ydest + y; + rect.left = XLOG2DEV(xdest) + x; + rect.top = YLOG2DEV(ydest) + y; while( (x + 1 < width) && (::GetPixel(dcSrc, x + 1, y) == col ) ) { ++x; } - rect.right = xdest + x + 1; + rect.right = XLOG2DEV(xdest) + x + 1; rect.bottom = rect.top + 1; ::FillRect((HDC) m_hDC, &rect, brush); ::DeleteObject(brush); From 99fc1f389652e0f138e234502046b41e8b5f20f3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Sep 2024 17:52:54 +0200 Subject: [PATCH 024/416] Don't give error in docs workflow for PRs Just skip the upload step for them. --- .github/workflows/docs_update.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index db09e2acc4ca..32148e605940 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -68,6 +68,11 @@ jobs: dst=${ref#refs/tags/v} ;; + refs/pull/*/merge) + echo "Skipping docs upload for pull request" + exit 0 + ;; + *) echo "Skipping docs upload for $ref of unknown type" exit 2 From 82a3e9c57efaadf68feabf1615b70d16d8c9b042 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 5 Oct 2024 18:49:09 +0200 Subject: [PATCH 025/416] Cleanup and reorder wrapcdlg.h includes Include wrappers in a specific order so missing.h does not cause macro redefinition warnings. When wrapcdlg.h/ is not needed, include wx/msw/private.h instead. See #24851, #24860. (cherry picked from commit b170a58b403a51a25a973d84abe4b490fa5b3cac) --- docs/changes.txt | 1 + include/wx/msw/wrapcdlg.h | 6 ++---- src/common/cmndata.cpp | 3 --- src/common/prntbase.cpp | 9 --------- src/msw/dc.cpp | 2 +- src/msw/dialog.cpp | 1 - src/msw/filedlg.cpp | 6 ++---- src/msw/graphics.cpp | 7 +------ src/msw/printwin.cpp | 1 - 9 files changed, 7 insertions(+), 29 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 7b20d18202d0..069de78d86e2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ wxOSX: - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). - Fix regression in GetPreferredUILanguage() in some cases (#24804). +- Fix CMake build with PCH disabled (Maarten Bent, #24851). 3.2.6: (released 2024-09-09) diff --git a/include/wx/msw/wrapcdlg.h b/include/wx/msw/wrapcdlg.h index 038a9bc6fced..bdd24364b4b9 100644 --- a/include/wx/msw/wrapcdlg.h +++ b/include/wx/msw/wrapcdlg.h @@ -15,12 +15,10 @@ #include "wx/msw/wrapwin.h" #include "wx/msw/private.h" -#include "wx/msw/missing.h" -#if wxUSE_COMMON_DIALOGS - #include -#endif +#include +#include "wx/msw/missing.h" #include "wx/msw/winundef.h" #endif // _WX_MSW_WRAPCDLG_H_ diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index ac4f04376bfd..081438a0b53e 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -25,9 +25,6 @@ #include "wx/cmndata.h" #ifndef WX_PRECOMP - #if defined(__WXMSW__) - #include "wx/msw/wrapcdlg.h" - #endif // MSW #include #include "wx/string.h" #include "wx/utils.h" diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 57a8f53880c8..7279ca7db6a7 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -17,9 +17,6 @@ #include "wx/dcprint.h" #ifndef WX_PRECOMP - #if defined(__WXMSW__) - #include "wx/msw/wrapcdlg.h" - #endif // MSW #include "wx/utils.h" #include "wx/dc.h" #include "wx/app.h" @@ -65,12 +62,6 @@ #include "wx/dcps.h" #endif -#ifdef __WXMSW__ - #ifndef __WIN32__ - #include - #endif -#endif // __WXMSW__ - // The value traditionally used as the default max page number and meaning // "infinitely many". It should probably be documented and exposed, but for now // at least use it here instead of hardcoding the number. diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 8646f9b822f6..4dde3e3f8475 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -21,7 +21,7 @@ #ifndef WX_PRECOMP - #include "wx/msw/wrapcdlg.h" + #include "wx/msw/private.h" #include "wx/image.h" #include "wx/window.h" #include "wx/utils.h" diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp index b95a299ea00d..c835076db58f 100644 --- a/src/msw/dialog.cpp +++ b/src/msw/dialog.cpp @@ -24,7 +24,6 @@ #include "wx/modalhook.h" #ifndef WX_PRECOMP - #include "wx/msw/wrapcdlg.h" #include "wx/utils.h" #include "wx/frame.h" #include "wx/app.h" diff --git a/src/msw/filedlg.cpp b/src/msw/filedlg.cpp index e05b52323141..66615ab3ff47 100644 --- a/src/msw/filedlg.cpp +++ b/src/msw/filedlg.cpp @@ -25,8 +25,6 @@ #include "wx/filedlg.h" #ifndef WX_PRECOMP - #include "wx/msw/wrapcdlg.h" - #include "wx/msw/missing.h" #include "wx/utils.h" #include "wx/msgdlg.h" #include "wx/filefn.h" @@ -46,6 +44,8 @@ #include "wx/tokenzr.h" #include "wx/modalhook.h" +#include "wx/msw/wrapshl.h" +#include "wx/msw/wrapcdlg.h" #include "wx/msw/private/dpiaware.h" #include "wx/msw/private/filedialog.h" @@ -62,8 +62,6 @@ #include "wx/stattext.h" #include "wx/textctrl.h" - #include "wx/msw/wrapshl.h" - #include "wx/msw/private/cotaskmemptr.h" #endif // wxUSE_IFILEOPENDIALOG diff --git a/src/msw/graphics.cpp b/src/msw/graphics.cpp index abca42a353c2..82db50e57869 100644 --- a/src/msw/graphics.cpp +++ b/src/msw/graphics.cpp @@ -16,7 +16,7 @@ #if wxUSE_GRAPHICS_GDIPLUS #ifndef WX_PRECOMP - #include "wx/msw/wrapcdlg.h" + #include "wx/msw/private.h" #include "wx/image.h" #include "wx/window.h" #include "wx/utils.h" @@ -43,11 +43,6 @@ #include "wx/dcgraph.h" #include "wx/rawbmp.h" -#include "wx/msw/private.h" // needs to be before #include - -#if wxUSE_COMMON_DIALOGS -#include -#endif #include // for FLT_MAX, FLT_MIN // Define REAL_MAX, REAL_MIN diff --git a/src/msw/printwin.cpp b/src/msw/printwin.cpp index 0cd213136aa3..df8ff33f0aaf 100644 --- a/src/msw/printwin.cpp +++ b/src/msw/printwin.cpp @@ -25,7 +25,6 @@ #if wxUSE_PRINTING_ARCHITECTURE && (!defined(__WXUNIVERSAL__) || !wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW) #ifndef WX_PRECOMP - #include "wx/msw/wrapcdlg.h" #include "wx/window.h" #include "wx/msw/private.h" #include "wx/utils.h" From 4ebc11546e301ec0324af478c302bc49f32a9c11 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 10 Oct 2024 02:44:48 +0200 Subject: [PATCH 026/416] Fixes for autoconf build with gcc 14 on Solaris See #24869. (cherry picked from commit 1880fe8b64bb34713f9baf27abd038b50d8dc558) --- acinclude.m4 | 3 ++- configure | 7 +++++++ configure.in | 6 ++++++ docs/changes.txt | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/acinclude.m4 b/acinclude.m4 index 97b4b26d1b81..e83d3b892c5b 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -269,7 +269,8 @@ AC_TRY_COMPILE([#include not big endian #endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)]) if test $ac_cv_c_bigendian = unknown; then -AC_TRY_RUN([main () { +AC_TRY_RUN([#include +main () { /* Are we little or big endian? From Harbison&Steele. */ union { diff --git a/configure b/configure index deed37f4c0dd..bb09c7f19a14 100755 --- a/configure +++ b/configure @@ -24703,6 +24703,7 @@ if test "$cross_compiling" = yes; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include main () { /* Are we little or big endian? From Harbison&Steele. */ union @@ -38378,6 +38379,9 @@ else #include #include + #ifdef HAVE_UNISTD_H + # include /* needed for ioctl() on Solaris */ + #endif int main () @@ -38400,6 +38404,9 @@ else #include #include + #ifdef HAVE_UNISTD_H + # include /* needed for ioctl() on Solaris */ + #endif int main () diff --git a/configure.in b/configure.in index 2f55b8d07940..42c049428076 100644 --- a/configure.in +++ b/configure.in @@ -5806,6 +5806,9 @@ if test "$USE_UNIX" = 1 ; then AC_TRY_LINK([ #include #include + #ifdef HAVE_UNISTD_H + # include /* needed for ioctl() on Solaris */ + #endif ], [ ioctl(0, SNDCTL_DSP_SPEED, 0); @@ -5817,6 +5820,9 @@ if test "$USE_UNIX" = 1 ; then AC_TRY_LINK([ #include #include + #ifdef HAVE_UNISTD_H + # include /* needed for ioctl() on Solaris */ + #endif ], [ ioctl(0, SNDCTL_DSP_SPEED, 0); diff --git a/docs/changes.txt b/docs/changes.txt index 069de78d86e2..5b76671e240b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -254,6 +254,7 @@ Changes in behaviour which may result in build errors All: - Avoid trailing space in `wx-config --c[xx]flags` (Tobiasz Laskowski, #24812). +- Fix building using gcc 14 under Solaris (Alan Coopersmith, #24869). All (GUI): From 853d4448f79c8a75963e0fc89b4d33013d06c00f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 11 Oct 2024 16:44:54 +0200 Subject: [PATCH 027/416] Fix always using "All pages" in wxGTK wxPrintDialog The code in wxGtkPrinter tried to determine whether all pages should be printed from the values returned by GetPageInfo(), but this doesn't make much sense because a typical implementation of GetPageInfo() uses the values in the associated wxPrintDialogData to determine the pages to return, i.e. it's wxPrintDialogData which is the primary source of truth and the values set in it should be respected, otherwise we ended up with "All pages" being selected in the print dialog independently of the values set in the application code. Just remove this code, which isn't present in the other ports neither, to fix this. See #24868. (cherry picked from commit 7abc628a5ab6084836532a5e2f018758c4cf386d) --- docs/changes.txt | 1 + src/gtk/print.cpp | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 5b76671e240b..11fe3885259b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -263,6 +263,7 @@ All (GUI): wxGTK: - Fix copy-pasting text under more Wayland compositors (Weston, kwin) (#24701). +- Fix unwanted "All pages" selection in the printing dialog (#24868). wxMSW: diff --git a/src/gtk/print.cpp b/src/gtk/print.cpp index 99b71fb7b316..4a512d89f9bc 100644 --- a/src/gtk/print.cpp +++ b/src/gtk/print.cpp @@ -954,7 +954,6 @@ bool wxGtkPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt ) int fromPage, toPage; int minPage, maxPage; printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage); - m_printDialogData.SetAllPages(true); if (minPage < 1) minPage = 1; if (maxPage < 1) maxPage = 9999; @@ -975,9 +974,6 @@ bool wxGtkPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt ) else if (toPage < minPage) toPage = minPage; } - if (((minPage != fromPage) && fromPage != 0) || ((maxPage != toPage) && toPage != 0)) m_printDialogData.SetAllPages(false); - - wxPrintData printdata = GetPrintDialogData().GetPrintData(); wxGtkPrintNativeData *native = (wxGtkPrintNativeData*) printdata.GetNativeData(); From 23972081292a3cdd987819dbfb7895dbbb07b7f5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 12 Oct 2024 16:45:21 +0200 Subject: [PATCH 028/416] Handle passing root item to wxTreeListCtrl::Select() gracefully Assert if an invalid item is passed to Select(), Unselect() or IsSelected() instead of crashing. See #24861. (cherry picked from commit 9b1231e4ba6742e1200c38edb1ba0d3f9c8ee438) --- src/generic/treelist.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/generic/treelist.cpp b/src/generic/treelist.cpp index 25385504b644..5462b8d3427e 100644 --- a/src/generic/treelist.cpp +++ b/src/generic/treelist.cpp @@ -1184,6 +1184,7 @@ unsigned wxTreeListCtrl::GetSelections(wxTreeListItems& selections) const void wxTreeListCtrl::Select(wxTreeListItem item) { wxCHECK_RET( m_view, "Must create first" ); + wxCHECK_RET( item->GetParent(), "Can't select the invisible root item" ); m_view->Select(m_model->ToNonRootDVI(item)); } @@ -1191,6 +1192,7 @@ void wxTreeListCtrl::Select(wxTreeListItem item) void wxTreeListCtrl::Unselect(wxTreeListItem item) { wxCHECK_RET( m_view, "Must create first" ); + wxCHECK_RET( item->GetParent(), "Can't deselect the invisible root item" ); m_view->Unselect(m_model->ToNonRootDVI(item)); } @@ -1198,6 +1200,7 @@ void wxTreeListCtrl::Unselect(wxTreeListItem item) bool wxTreeListCtrl::IsSelected(wxTreeListItem item) const { wxCHECK_MSG( m_view, false, "Must create first" ); + wxCHECK_MSG( item->GetParent(), false, "Invisible root can't be selected" ); return m_view->IsSelected(m_model->ToNonRootDVI(item)); } From fc922046b305b86d59df33bf9fc894529cc4bff5 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Wed, 25 Sep 2024 14:35:04 +0300 Subject: [PATCH 029/416] Remove unused wxString variables A few were removed tests/, which might have existed for readability. (cherry picked from commit 007787c3a8608ce2e16122445c478b55f64f99c9) --- samples/fswatcher/fswatcher.cpp | 2 +- samples/internat/internat.cpp | 1 - src/common/bmpbndl.cpp | 1 - src/common/datetimefmt.cpp | 3 +-- src/common/http.cpp | 2 -- src/common/mimecmn.cpp | 1 - src/common/variant.cpp | 1 - src/html/helpdata.cpp | 2 -- src/html/helpwnd.cpp | 2 -- src/html/m_image.cpp | 2 +- src/msw/volume.cpp | 3 --- src/msw/webview_ie.cpp | 1 - src/richtext/richtextxml.cpp | 1 - src/unix/mimetype.cpp | 4 ++-- src/unix/utilsunx.cpp | 3 +-- tests/config/config.cpp | 4 ++-- tests/strings/stdstrings.cpp | 6 ++---- tests/strings/tokenizer.cpp | 12 ++++++------ tests/strings/vsnprintf.cpp | 1 - 19 files changed, 16 insertions(+), 36 deletions(-) diff --git a/samples/fswatcher/fswatcher.cpp b/samples/fswatcher/fswatcher.cpp index bd4e3dd65fe4..4973daf89eff 100644 --- a/samples/fswatcher/fswatcher.cpp +++ b/samples/fswatcher/fswatcher.cpp @@ -481,7 +481,7 @@ void MyFrame::OnFileSystemEvent(wxFileSystemWatcherEvent& event) bool found(false); for (size_t n = m_filesList->GetItemCount(); n > 0; --n) { - wxString path, foo = m_filesList->GetItemText(n-1); + wxString path; if ((!m_filesList->GetItemText(n-1).StartsWith("Dir: ", &path)) && (!m_filesList->GetItemText(n-1).StartsWith("Tree: ", &path))) { diff --git a/samples/internat/internat.cpp b/samples/internat/internat.cpp index 53ca7ebbb135..f9dd863fcdb7 100644 --- a/samples/internat/internat.cpp +++ b/samples/internat/internat.cpp @@ -558,7 +558,6 @@ void MyFrame::OnTestLocaleAvail(wxCommandEvent& WXUNUSED(event)) { wxLayoutDirection layout = uiLocale.GetLayoutDirection(); wxString strLayout = (layout == wxLayout_RightToLeft) ? "RTL" : "LTR"; - wxString strLocale = uiLocale.GetLocalizedName(wxLOCALE_NAME_LOCALE, wxLOCALE_FORM_NATIVE); wxLogMessage(_("Locale \"%s\" is available.\nIdentifier: %s; Layout: %s\nEnglish name: %s\nLocalized name: %s"), s_locale, uiLocale.GetName(), strLayout, uiLocale.GetLocalizedName(wxLOCALE_NAME_LOCALE, wxLOCALE_FORM_ENGLISH), diff --git a/src/common/bmpbndl.cpp b/src/common/bmpbndl.cpp index c8ba6edd1b98..dc4fd77cf636 100644 --- a/src/common/bmpbndl.cpp +++ b/src/common/bmpbndl.cpp @@ -515,7 +515,6 @@ wxBitmapBundle wxBitmapBundle::FromFiles(const wxString& path, const wxString& f wxVector bitmaps; wxFileName fn(path, filename, extension); - wxString ext = extension.Lower(); for ( int dpiFactor = 1 ; dpiFactor <= 2 ; ++dpiFactor) { diff --git a/src/common/datetimefmt.cpp b/src/common/datetimefmt.cpp index 1d70ed63e7f0..1ab04f8fcccc 100644 --- a/src/common/datetimefmt.cpp +++ b/src/common/datetimefmt.cpp @@ -393,7 +393,7 @@ wxString wxDateTime::Format(const wxString& formatp, const TimeZone& tz) const tmTimeOnly.tm_year = 76; tmTimeOnly.tm_isdst = 0; // no DST, we adjust for tz ourselves - wxString tmp, res, fmt; + wxString res, fmt; for ( wxString::const_iterator p = format.begin(); p != format.end(); ++p ) { if ( *p != wxT('%') ) @@ -1043,7 +1043,6 @@ wxDateTime::ParseFormat(const wxString& date, wxCHECK_MSG( !format.empty(), false, "format can't be empty" ); wxCHECK_MSG( endParse, false, "end iterator pointer must be specified" ); - wxString str; unsigned long num; // what fields have we found? diff --git a/src/common/http.cpp b/src/common/http.cpp index 7ff7bb75ddff..b973cb9a836f 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -486,8 +486,6 @@ wxInputStream *wxHTTP::GetInputStream(const wxString& path) { wxHTTPStream *inp_stream; - wxString new_path; - m_lastError = wxPROTO_CONNERR; // all following returns share this type of error if (!m_addr) return NULL; diff --git a/src/common/mimecmn.cpp b/src/common/mimecmn.cpp index e9e71cdb647d..bc2c196ee166 100644 --- a/src/common/mimecmn.cpp +++ b/src/common/mimecmn.cpp @@ -217,7 +217,6 @@ wxString wxFileType::ExpandCommand(const wxString& command, { const wxChar *pEnd = wxStrchr(pc, wxT('}')); if ( pEnd == NULL ) { - wxString mimetype; wxLogWarning(_("Unmatched '{' in an entry for mime type %s."), params.GetMimeType().c_str()); str << wxT("%{"); diff --git a/src/common/variant.cpp b/src/common/variant.cpp index cacec0b085fa..0c57e2ac0486 100644 --- a/src/common/variant.cpp +++ b/src/common/variant.cpp @@ -2068,7 +2068,6 @@ bool wxVariantDataList::Write(wxString& str) const wxVariant* var = node->GetData(); if (node != m_value.GetFirst()) str += wxT(" "); - wxString str1; str += var->MakeString(); node = node->GetNext(); } diff --git a/src/html/helpdata.cpp b/src/html/helpdata.cpp index 1c73d2b6abad..74e075115da5 100644 --- a/src/html/helpdata.cpp +++ b/src/html/helpdata.cpp @@ -276,7 +276,6 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, wxFSFile *f; wxHtmlFilterHTML filter; wxString buf; - wxString string; HP_Parser parser; HP_TagHandler *handler = new HP_TagHandler(book); @@ -648,7 +647,6 @@ bool wxHtmlHelpData::AddBook(const wxString& book) wxFileSystem fsys; wxString title = _("noname"), - safetitle, start, contents, index, diff --git a/src/html/helpwnd.cpp b/src/html/helpwnd.cpp index f302f3802317..7e7eea3923fe 100644 --- a/src/html/helpwnd.cpp +++ b/src/html/helpwnd.cpp @@ -1068,7 +1068,6 @@ void wxHtmlHelpWindow::RefreshLists() void wxHtmlHelpWindow::ReadCustomization(wxConfigBase *cfg, const wxString& path) { wxString oldpath; - wxString tmp; if (!path.empty()) { @@ -1126,7 +1125,6 @@ void wxHtmlHelpWindow::ReadCustomization(wxConfigBase *cfg, const wxString& path void wxHtmlHelpWindow::WriteCustomization(wxConfigBase *cfg, const wxString& path) { wxString oldpath; - wxString tmp; if (!path.empty()) { diff --git a/src/html/m_image.cpp b/src/html/m_image.cpp index 221389d1c3e1..400a3a9a676d 100644 --- a/src/html/m_image.cpp +++ b/src/html/m_image.cpp @@ -77,7 +77,7 @@ class wxHtmlImageMapAreaCell : public wxHtmlCell wxHtmlImageMapAreaCell::wxHtmlImageMapAreaCell( wxHtmlImageMapAreaCell::celltype t, wxString &incoords, double pixel_scale ) { int i; - wxString x = incoords, y; + wxString x = incoords; type = t; while ((i = x.Find( ',' )) != wxNOT_FOUND) diff --git a/src/msw/volume.cpp b/src/msw/volume.cpp index eeef9def34be..ab41facee95a 100644 --- a/src/msw/volume.cpp +++ b/src/msw/volume.cpp @@ -363,15 +363,12 @@ static bool BuildRemoteList(wxArrayString& list, NETRESOURCE* pResSrc, for (ssize_t iMounted = mounted.GetCount()-1; iMounted >= 0 && iList >= 0; iMounted--) { int compare; - wxString all(list[iList]); - wxString mount(mounted[iMounted]); while (compare = wxStricmp(list[iList].c_str(), mounted[iMounted].c_str()), compare > 0 && iList >= 0) { iList--; - all = list[iList]; } diff --git a/src/msw/webview_ie.cpp b/src/msw/webview_ie.cpp index 3aa65e29af10..02043b2fb27a 100644 --- a/src/msw/webview_ie.cpp +++ b/src/msw/webview_ie.cpp @@ -955,7 +955,6 @@ void wxWebViewIE::ClearSelection() if(document) { wxCOMPtr selection; - wxString selected; HRESULT hr = document->get_selection(&selection); if(SUCCEEDED(hr)) { diff --git a/src/richtext/richtextxml.cpp b/src/richtext/richtextxml.cpp index 717f455e5fff..8212015fbbd7 100644 --- a/src/richtext/richtextxml.cpp +++ b/src/richtext/richtextxml.cpp @@ -1954,7 +1954,6 @@ void wxRichTextXMLHelper::OutputIndentation(wxOutputStream& stream, int indent) void wxRichTextXMLHelper::OutputStringEnt(wxOutputStream& stream, const wxString& str, wxMBConv *convMem, wxMBConv *convFile) { - wxString buf; size_t i, last, len; wxChar c; diff --git a/src/unix/mimetype.cpp b/src/unix/mimetype.cpp index 07d0c54e88be..5452d07a46d0 100644 --- a/src/unix/mimetype.cpp +++ b/src/unix/mimetype.cpp @@ -317,7 +317,7 @@ size_t wxFileTypeImpl::GetAllCommands(wxArrayString *verbs, wxArrayString *commands, const wxFileType::MessageParameters& params) const { - wxString vrb, cmd, sTmp; + wxString vrb, cmd; size_t count = 0; wxMimeTypeCommands * sPairs; @@ -951,7 +951,7 @@ wxFileType * wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mim wxString wxMimeTypesManagerImpl::GetCommand(const wxString & verb, size_t nIndex) const { - wxString command, testcmd, sV, sTmp; + wxString command, sV, sTmp; sV = verb + wxT("="); // list of verb = command pairs for this mimetype diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 8a944cd62624..9e3c38dfd054 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -904,11 +904,10 @@ long wxExecute(const char* const* argv, int flags, wxProcess* process, const wxChar* wxGetHomeDir( wxString *home ) { *home = wxGetUserHome(); - wxString tmp; if ( home->empty() ) *home = wxT("/"); #ifdef __VMS - tmp = *home; + wxString tmp = *home; if ( tmp.Last() != wxT(']')) if ( tmp.Last() != wxT('/')) *home << wxT('/'); #endif diff --git a/tests/config/config.cpp b/tests/config/config.cpp index a38bc920dd3e..ada9284eac7d 100644 --- a/tests/config/config.cpp +++ b/tests/config/config.cpp @@ -144,10 +144,10 @@ size_t ReadValues(const wxConfig& config, bool has_values) size_t read = 0; bool r; - wxString string1 = config.Read("string1", "abc"); + config.Read("string1", "abc"); read++; - wxString string2 = config.Read("string2", wxString("def")); + config.Read("string2", wxString("def")); read++; wxString string3; diff --git a/tests/strings/stdstrings.cpp b/tests/strings/stdstrings.cpp index 0c8940f2057d..47f362c62ad3 100644 --- a/tests/strings/stdstrings.cpp +++ b/tests/strings/stdstrings.cpp @@ -235,7 +235,7 @@ TEST_CASE("StdString::AssignOp", "[stdstring]") TEST_CASE("StdString::Compare", "[stdstring]") { - wxString s1, s2, s3, s4, s5, s6, s7, s8; + wxString s1, s2, s3, s4, s5, s6; s1 = wxT("abcdefgh"); s2 = wxT("abcdefgh"); @@ -257,14 +257,12 @@ TEST_CASE("StdString::Compare", "[stdstring]") TEST_CASE("StdString::Erase", "[stdstring]") { - wxString s1, s2, s3, s4, s5, s6, s7; + wxString s1, s2, s3, s4, s7; s1 = wxT("abcdefgh"); s2 = wxT("abcdefgh"); s3 = wxT("abc"); s4 = wxT("abcdefghi"); - s5 = wxT("aaa"); - s6 = wxT("zzz"); s7 = wxT("zabcdefg"); s1.erase(1, 1); diff --git a/tests/strings/tokenizer.cpp b/tests/strings/tokenizer.cpp index 5400de53af64..d482f49ff912 100644 --- a/tests/strings/tokenizer.cpp +++ b/tests/strings/tokenizer.cpp @@ -275,15 +275,15 @@ void TokenizerTestCase::CopyObj() wxStringTokenizer tkzSrc(wxT("first:second:third:fourth"), wxT(":")); while ( tkzSrc.HasMoreTokens() ) { - wxString tokenSrc = tkzSrc.GetNextToken(); + tkzSrc.GetNextToken(); wxStringTokenizer tkz = tkzSrc; CPPUNIT_ASSERT_EQUAL( tkzSrc.GetPosition(), tkz.GetPosition() ); CPPUNIT_ASSERT_EQUAL( tkzSrc.GetString(), tkz.GetString() ); // Change the state of both objects and compare again... - tokenSrc = tkzSrc.GetNextToken(); - wxString token = tkz.GetNextToken(); + tkzSrc.GetNextToken(); + tkz.GetNextToken(); CPPUNIT_ASSERT_EQUAL( tkzSrc.GetPosition(), tkz.GetPosition() ); CPPUNIT_ASSERT_EQUAL( tkzSrc.GetString(), tkz.GetString() ); @@ -297,15 +297,15 @@ void TokenizerTestCase::AssignObj() wxStringTokenizer tkz; while ( tkzSrc.HasMoreTokens() ) { - wxString tokenSrc = tkzSrc.GetNextToken(); + tkzSrc.GetNextToken(); tkz = tkzSrc; CPPUNIT_ASSERT_EQUAL( tkzSrc.GetPosition(), tkz.GetPosition() ); CPPUNIT_ASSERT_EQUAL( tkzSrc.GetString(), tkz.GetString() ); // Change the state of both objects and compare again... - tokenSrc = tkzSrc.GetNextToken(); - wxString token = tkz.GetNextToken(); + tkzSrc.GetNextToken(); + tkz.GetNextToken(); CPPUNIT_ASSERT_EQUAL( tkzSrc.GetPosition(), tkz.GetPosition() ); CPPUNIT_ASSERT_EQUAL( tkzSrc.GetString(), tkz.GetString() ); diff --git a/tests/strings/vsnprintf.cpp b/tests/strings/vsnprintf.cpp index f1fa10f99ff6..4546271af632 100644 --- a/tests/strings/vsnprintf.cpp +++ b/tests/strings/vsnprintf.cpp @@ -519,7 +519,6 @@ TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::GlibcMisc1", "[vsnprintf]") TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::GlibcMisc2", "[vsnprintf]") { int prec; - wxString test_format; prec = 0; CMP("3", "%.*g", prec, 3.3); From fa876c3f7401c2a74f09cbaaf379487f40b56922 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Sat, 28 Sep 2024 17:47:09 +0300 Subject: [PATCH 030/416] Add macro wxWARN_UNUSED to stand for the attribute 'warn_unused' Also known as [[gnu::warn_unused]]. Use __has_attribute to check availability of the attribute. (Is available on recent GCC and Clang versions, not available on MSVC.) (cherry picked from commit a2e2bc57c9fd064503884b91af25ad4335263379) --- include/wx/defs.h | 12 ++++++++++++ interface/wx/defs.h | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/wx/defs.h b/include/wx/defs.h index 39ce1294776e..ac563387bddb 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -341,6 +341,18 @@ typedef short int WXTYPE; #define wxFALLTHROUGH ((void)0) #endif +/* wxWARN_UNUSED is used as an attribute to a class, stating that unused instances + should be warned about (in case such warnings are enabled in the first place) */ + +#ifdef __has_cpp_attribute + #if __has_cpp_attribute(warn_unused) + #define wxWARN_UNUSED __attribute__((warn_unused)) + #endif +#endif +#ifndef wxWARN_UNUSED + #define wxWARN_UNUSED +#endif + /* these macros are obsolete, use the standard C++ casts directly now */ #define wx_static_cast(t, x) static_cast(x) #define wx_const_cast(t, x) const_cast(x) diff --git a/interface/wx/defs.h b/interface/wx/defs.h index 679f69d78792..76f8bc78c0a0 100644 --- a/interface/wx/defs.h +++ b/interface/wx/defs.h @@ -1862,6 +1862,16 @@ template void wxDELETEA(T*& array); */ #define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name) +/** + Expands to the "warn_unused" attribute (also known as [[gnu::warn_unused]]) + on compilers supporting it (GCC and Clang), otherwise to nothing. + + @header{wx/defs.h} + + @since 3.3.0 +*/ +#define wxWARN_UNUSED __attribute__((warn_unused)) + /** Swaps the contents of two variables. From 87617efbe1e840590db6040f0866d0ac9fdc6bcf Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Mon, 14 Oct 2024 17:37:37 +0200 Subject: [PATCH 031/416] Fix wxOSX wxScreenDC compilation against SDK 15.0 Don't use CGDisplayCreateImage() which is not available in macOS 15 any more. See #24724, #24879. (cherry picked from commit 7e32de0e7eb8df37f3cf3c78d4f736fc7111f899) --- docs/changes.txt | 1 + src/osx/carbon/dcscreen.cpp | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 11fe3885259b..43c0d123fd73 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ wxMSW: wxOSX: +- Fix build with macOS 15 SDK (#24724, #24879). - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). - Fix regression in GetPreferredUILanguage() in some cases (#24804). - Fix CMake build with PCH disabled (Maarten Bent, #24851). diff --git a/src/osx/carbon/dcscreen.cpp b/src/osx/carbon/dcscreen.cpp index 1c6a987f9633..b2fb2ddc9a05 100644 --- a/src/osx/carbon/dcscreen.cpp +++ b/src/osx/carbon/dcscreen.cpp @@ -14,6 +14,7 @@ #include "wx/osx/dcscreen.h" #include "wx/osx/private.h" +#include "wx/osx/private/available.h" #include "wx/graphics.h" wxIMPLEMENT_ABSTRACT_CLASS(wxScreenDCImpl, wxWindowDCImpl); @@ -69,14 +70,25 @@ wxBitmap wxScreenDCImpl::DoGetAsBitmap(const wxRect *subrect) const srcRect = CGRectOffset( srcRect, -subrect->x, -subrect->y ) ; CGImageRef image = NULL; - - image = CGDisplayCreateImage(kCGDirectMainDisplay); - wxASSERT_MSG(image, wxT("wxScreenDC::GetAsBitmap - unable to get screenshot.")); - - CGContextDrawImage(context, srcRect, image); +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 140000 + if ( WX_IS_MACOS_AVAILABLE(14, 4) ) // errors on lower versions of macOS 14 + { + // TODO add ScreenKit implementation + } + else +#endif // macOS 10.14+ + { +#if __MAC_OS_X_VERSION_MAX_ALLOWED < 150000 + image = CGDisplayCreateImage(kCGDirectMainDisplay); +#endif + } - CGImageRelease(image); + if ( image != NULL ) + { + CGContextDrawImage(context, srcRect, image); + CGImageRelease(image); + } CGContextRestoreGState(context); #else From f5da2bbf8ba0f68f9393f939fa8b6143a4b625e9 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Sun, 13 Oct 2024 18:42:03 +0300 Subject: [PATCH 032/416] Make wxWARN_UNUSED an opt-in feature in 3.2 Define wxWARN_UNUSED always as nothing, unless wxNO_UNUSED_VARIABLES is defined by the library user. Also opt-in for wxWARN_UNUSED when building wxWidgets itself, i.e. when WXBUILDING is defined. --- docs/doxygen/mainpages/const_cpp.h | 6 ++++++ include/wx/defs.h | 11 +++++++---- interface/wx/defs.h | 5 ++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/docs/doxygen/mainpages/const_cpp.h b/docs/doxygen/mainpages/const_cpp.h index 023f8e7e9312..2770ce24ae0f 100644 --- a/docs/doxygen/mainpages/const_cpp.h +++ b/docs/doxygen/mainpages/const_cpp.h @@ -405,6 +405,12 @@ more details. fix such problems, by explicitly selecting the wanted conversion, as this symbol is only honoured by wxWidgets 3.2 (since 3.2.5) but not by the future versions of the library.} +@itemdef{wxNO_UNUSED_VARIABLES, + this symbol is not defined by wxWidgets itself, but can be defined by + the applications using the library to opt-in enabling the @c wxWARN_UNUSED + attribute, and use it for selected wxWidgets classes to allow warnings + for unused instances. This symbol only has effect in wxWidgets 3.2 + (since 3.2.7); it is no longer needed with 3.3.0 and later.} @itemdef{WXMAKINGDLL_XXX, used internally and defined when building the library @c XXX as a DLL; when a monolithic wxWidgets build is used only a diff --git a/include/wx/defs.h b/include/wx/defs.h index ac563387bddb..899bd25719b9 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -342,11 +342,14 @@ typedef short int WXTYPE; #endif /* wxWARN_UNUSED is used as an attribute to a class, stating that unused instances - should be warned about (in case such warnings are enabled in the first place) */ + should be warned about (in case such warnings are enabled in the first place) + In 3.2.x this is an opt-in feature enabled by defining wxNO_UNUSED_VARIABLES. */ -#ifdef __has_cpp_attribute - #if __has_cpp_attribute(warn_unused) - #define wxWARN_UNUSED __attribute__((warn_unused)) +#if defined(wxNO_UNUSED_VARIABLES) || defined(WXBUILDING) + #ifdef __has_cpp_attribute + #if __has_cpp_attribute(warn_unused) + #define wxWARN_UNUSED __attribute__((warn_unused)) + #endif #endif #endif #ifndef wxWARN_UNUSED diff --git a/interface/wx/defs.h b/interface/wx/defs.h index 76f8bc78c0a0..49bb52f92c21 100644 --- a/interface/wx/defs.h +++ b/interface/wx/defs.h @@ -1866,9 +1866,12 @@ template void wxDELETEA(T*& array); Expands to the "warn_unused" attribute (also known as [[gnu::warn_unused]]) on compilers supporting it (GCC and Clang), otherwise to nothing. + @note This is an opt-in feature, and wxNO_UNUSED_VARIABLES must be + defined to enable it. In 3.3.0 and later, it is enabled by default. + @header{wx/defs.h} - @since 3.3.0 + @since 3.2.7 (opt-in), 3.3.0 */ #define wxWARN_UNUSED __attribute__((warn_unused)) From e9a7caca3667a10fd320dd964356a891e479aaf4 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Wed, 9 Oct 2024 12:32:05 +0300 Subject: [PATCH 033/416] Use unused variables like they were likely meant to be used No actual changes to the test, a slight change of tone with one colour scheme in the propgrid sample. (cherry picked from commit ee978a1f6f873d67571e2cc5634d1785389649cf) --- samples/propgrid/propgrid.cpp | 2 +- tests/controls/gridtest.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/propgrid/propgrid.cpp b/samples/propgrid/propgrid.cpp index 7ea9be846d71..99662862270b 100644 --- a/samples/propgrid/propgrid.cpp +++ b/samples/propgrid/propgrid.cpp @@ -2761,7 +2761,7 @@ void FormMain::OnColourScheme( wxCommandEvent& event ) m_pPropGridManager->Freeze(); m_pPropGridManager->GetGrid()->SetMarginColour( my_grey_1 ); m_pPropGridManager->GetGrid()->SetCaptionBackgroundColour( my_grey_1 ); - m_pPropGridManager->GetGrid()->SetLineColour( my_grey_1 ); + m_pPropGridManager->GetGrid()->SetLineColour( my_grey_2 ); m_pPropGridManager->Thaw(); } else if ( id == ID_COLOURSCHEME4 ) diff --git a/tests/controls/gridtest.cpp b/tests/controls/gridtest.cpp index ad2cefd91426..85d0312c6a12 100644 --- a/tests/controls/gridtest.cpp +++ b/tests/controls/gridtest.cpp @@ -1262,9 +1262,9 @@ TEST_CASE_METHOD(GridTestCase, "Grid::CellFormatting", "[grid]") CHECK(m_grid->GetCellBackgroundColour(0, 0) == back); - back = m_grid->GetDefaultCellTextColour(); + text = m_grid->GetDefaultCellTextColour(); - CHECK(m_grid->GetCellTextColour(0, 0) == back); + CHECK(m_grid->GetCellTextColour(0, 0) == text); #if WXWIN_COMPATIBILITY_2_8 m_grid->SetCellAlignment(wxALIGN_CENTRE, 0, 0); From ca25aaba583bdf04a563f151d9a515d06f2f2b77 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Sat, 28 Sep 2024 17:53:35 +0300 Subject: [PATCH 034/416] Enable the possibility to warn about unused wxStrings Use the wxWARN_UNUSED attribute in wxString's definition. Compilers do not typically warn about unused non-POD objects, but this attribute makes it possible (on GCC and Clang). Whether a warning is actually shown or not still depends on whether the user has enabled warnings for unused variables in their compiler flags. (cherry picked from commit a73504cdc5433a8a89a3dd2e9decc325735bba6b) --- include/wx/string.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/string.h b/include/wx/string.h index dc8b5c50102f..28dbadd50dcf 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -298,7 +298,7 @@ class WXDLLIMPEXP_BASE wxStringIteratorNode }; #endif // wxUSE_UNICODE_UTF8 -class WXDLLIMPEXP_BASE wxString +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxString { // NB: special care was taken in arranging the member functions in such order // that all inline functions can be effectively inlined, verify that all From d31ac5f33f77cdcd8dca6ff17dd1a9a138c42e8a Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 10 Oct 2024 11:55:58 +0300 Subject: [PATCH 035/416] Add the wxWARN_UNUSED attribute for wxColour; remove unused (cherry picked from commit 463d903b2339f8c8da55955e5e3259fc2027d456) --- include/wx/generic/colour.h | 2 +- include/wx/gtk/colour.h | 2 +- include/wx/msw/colour.h | 2 +- include/wx/osx/core/colour.h | 2 +- include/wx/qt/colour.h | 2 +- include/wx/x11/colour.h | 2 +- tests/graphics/bitmap.cpp | 2 -- tests/graphics/graphbitmap.cpp | 1 - 8 files changed, 6 insertions(+), 9 deletions(-) diff --git a/include/wx/generic/colour.h b/include/wx/generic/colour.h index af9c654944fa..626a87bb08f1 100644 --- a/include/wx/generic/colour.h +++ b/include/wx/generic/colour.h @@ -14,7 +14,7 @@ #include "wx/object.h" // Colour -class WXDLLIMPEXP_CORE wxColour: public wxColourBase +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxColour: public wxColourBase { public: // constructors diff --git a/include/wx/gtk/colour.h b/include/wx/gtk/colour.h index 91b40a02e41c..ef3d7514417d 100644 --- a/include/wx/gtk/colour.h +++ b/include/wx/gtk/colour.h @@ -17,7 +17,7 @@ typedef struct _GdkRGBA GdkRGBA; // wxColour //----------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxColour : public wxColourBase +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxColour : public wxColourBase { public: // constructors diff --git a/include/wx/msw/colour.h b/include/wx/msw/colour.h index afb54011c8bb..4e89776a4746 100644 --- a/include/wx/msw/colour.h +++ b/include/wx/msw/colour.h @@ -17,7 +17,7 @@ // Colour // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxColour : public wxColourBase +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxColour : public wxColourBase { public: // constructors diff --git a/include/wx/osx/core/colour.h b/include/wx/osx/core/colour.h index c77c39e898c2..605a872e3db7 100644 --- a/include/wx/osx/core/colour.h +++ b/include/wx/osx/core/colour.h @@ -19,7 +19,7 @@ struct RGBColor; // Colour -class WXDLLIMPEXP_CORE wxColour: public wxColourBase +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxColour: public wxColourBase { public: // constructors diff --git a/include/wx/qt/colour.h b/include/wx/qt/colour.h index f6d041f5febf..a44461ef4468 100644 --- a/include/wx/qt/colour.h +++ b/include/wx/qt/colour.h @@ -12,7 +12,7 @@ class QColor; -class WXDLLIMPEXP_CORE wxColour : public wxColourBase +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxColour : public wxColourBase { public: DEFINE_STD_WXCOLOUR_CONSTRUCTORS diff --git a/include/wx/x11/colour.h b/include/wx/x11/colour.h index 568cf07b3765..314fb21d3f0a 100644 --- a/include/wx/x11/colour.h +++ b/include/wx/x11/colour.h @@ -32,7 +32,7 @@ class WXDLLIMPEXP_FWD_CORE wxColour; // wxColour //----------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxColour : public wxColourBase +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxColour : public wxColourBase { public: // constructors diff --git a/tests/graphics/bitmap.cpp b/tests/graphics/bitmap.cpp index dde38ad8c48b..b484abec3135 100644 --- a/tests/graphics/bitmap.cpp +++ b/tests/graphics/bitmap.cpp @@ -250,7 +250,6 @@ TEST_CASE("BitmapTestCase::ToImage", "[bitmap][image][convertto]") #endif // __WXMSW__ || __WXOSX__ { const wxColour clrFg(*wxCYAN); - const wxColour clrBg(*wxGREEN); const unsigned char alpha = 92; #if defined(__WXMSW__) || defined(__WXOSX__) @@ -328,7 +327,6 @@ TEST_CASE("BitmapTestCase::ToImage", "[bitmap][image][convertto]") #endif // __WXMSW__ || __WXOSX__ { const wxColour clrFg(*wxCYAN); - const wxColour clrBg(*wxGREEN); const unsigned char alpha = 92; #if defined(__WXMSW__) || defined(__WXOSX__) // premultiplied values diff --git a/tests/graphics/graphbitmap.cpp b/tests/graphics/graphbitmap.cpp index f1574491ab7b..eaeb29ef8924 100644 --- a/tests/graphics/graphbitmap.cpp +++ b/tests/graphics/graphbitmap.cpp @@ -98,7 +98,6 @@ wxBitmap CreateBitmapRGBA(int w, int h, bool withMask) #endif // __WXMSW__ || __WXOSX__ { const wxColour clrFg(*wxCYAN); - const wxColour clrBg(*wxGREEN); const unsigned char alpha = 51; #if defined(__WXMSW__) || defined(__WXOSX__) From 59d33ca02d93093628a086327ceee5eb5f907b29 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 10 Oct 2024 11:38:46 +0300 Subject: [PATCH 036/416] Add the wxWARN_UNUSED attribute for wxStringTokenizer; remove unused (cherry picked from commit a76d6642835a10d16741ef13c906064a512a01d5) --- include/wx/tokenzr.h | 2 +- src/common/http.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/wx/tokenzr.h b/include/wx/tokenzr.h index 45f91a0aefc3..72024983aac8 100644 --- a/include/wx/tokenzr.h +++ b/include/wx/tokenzr.h @@ -37,7 +37,7 @@ enum wxStringTokenizerMode // wxStringTokenizer: replaces infamous strtok() and has some other features // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_BASE wxStringTokenizer : public wxObject +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxStringTokenizer : public wxObject { public: // ctors and initializers diff --git a/src/common/http.cpp b/src/common/http.cpp index b973cb9a836f..f99b80abde4d 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -247,7 +247,6 @@ void wxHTTP::SendHeaders() bool wxHTTP::ParseHeaders() { wxString line; - wxStringTokenizer tokenzr; ClearHeaders(); ClearCookies(); From 164552cc9f649e3b6f60174fc4fa4ebf11a363da Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 10 Oct 2024 11:46:07 +0300 Subject: [PATCH 037/416] Add the wxWARN_UNUSED attribute for wxSize, wxRect, wx(Real)Point; remove unused (cherry picked from commit 1d0e1b69cd0d366217879df8f9614aa7716b6f8d) --- include/wx/gdicmn.h | 8 ++++---- src/aui/auibar.cpp | 2 -- src/generic/gridsel.cpp | 1 - src/richtext/richtextbuffer.cpp | 4 ---- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h index 2f5f8ee99fd1..92b4cc632690 100644 --- a/include/wx/gdicmn.h +++ b/include/wx/gdicmn.h @@ -279,7 +279,7 @@ enum wxEllipsizeMode // wxSize // --------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxSize +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxSize { public: // members are public for compatibility, don't use them directly. @@ -456,7 +456,7 @@ inline wxSize operator*(double i, const wxSize& s) // Point classes: with real or integer coordinates // --------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxRealPoint +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxRealPoint { public: double x; @@ -574,7 +574,7 @@ inline wxRealPoint operator*(double i, const wxRealPoint& s) // wxPoint: 2D point with integer coordinates // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxPoint +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxPoint { public: int x, y; @@ -730,7 +730,7 @@ WX_DECLARE_LIST_WITH_DECL(wxPoint, wxPointList, class WXDLLIMPEXP_CORE); // wxRect // --------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxRect +class WXDLLIMPEXP_CORE wxWARN_UNUSED wxRect { public: wxRect() diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index db48eb9d92f4..c5d324b62ccf 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -2515,8 +2515,6 @@ void wxAuiToolBar::OnEraseBackground(wxEraseEvent& WXUNUSED(evt)) void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt) { - wxRect cli_rect(wxPoint(0,0), GetClientSize()); - if (m_gripperSizerItem) { wxRect gripper_rect = m_gripperSizerItem->GetRect(); diff --git a/src/generic/gridsel.cpp b/src/generic/gridsel.cpp index fbbaec25800e..4805270b1509 100644 --- a/src/generic/gridsel.cpp +++ b/src/generic/gridsel.cpp @@ -411,7 +411,6 @@ wxGridSelection::DeselectBlock(const wxGridBlockCoords& block, void wxGridSelection::ClearSelection() { size_t n; - wxRect r; wxGridCellCoords coords1, coords2; // deselect all blocks and update the screen diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index 2b482e8d11fe..a8cace44441b 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -10121,7 +10121,6 @@ bool wxRichTextTable::Draw(wxDC& dc, wxRichTextDrawingContext& context, const wx wxRichTextCell* cell = GetCell(row, col); if (cell && cell->IsShown() && !cell->GetRange().IsOutside(range)) { - wxRect childRect(cell->GetPosition(), cell->GetCachedSize()); wxRichTextAttr attr(cell->GetAttributes()); cell->AdjustAttributes(attr, context); if (row != 0) @@ -10400,8 +10399,6 @@ bool wxRichTextTable::Layout(wxDC& dc, wxRichTextDrawingContext& context, const spanningWidths.Add(0, m_colCount); spanningWidthsSpanLengths.Add(0, m_colCount); - wxSize tableSize(tableWidth, 0); - int i, j, k; for (i = 0; i < m_colCount; i++) @@ -12787,7 +12784,6 @@ bool wxRichTextImage::Draw(wxDC& dc, wxRichTextDrawingContext& context, const wx DrawBoxAttributes(dc, GetBuffer(), attr, wxRect(position, GetCachedSize())); - wxSize imageSize(m_imageCache.GetWidth(), m_imageCache.GetHeight()); wxRect marginRect, borderRect, contentRect, paddingRect, outlineRect; marginRect = wxRect(position, GetCachedSize()); // outer rectangle, will calculate contentRect GetBoxRects(dc, GetBuffer(), attr, marginRect, borderRect, contentRect, paddingRect, outlineRect); From 9bbff9e41e7f81b52d353f48bd88f555d2208134 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 10 Oct 2024 11:55:26 +0300 Subject: [PATCH 038/416] Add the wxWARN_UNUSED attribute for wxLongLong, wxULongLong (cherry picked from commit 0a75b8a4b792ef0ceff17ee32b5ab4c9c7f2b936) --- include/wx/longlong.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/wx/longlong.h b/include/wx/longlong.h index fdc73878f496..67c58db91f4c 100644 --- a/include/wx/longlong.h +++ b/include/wx/longlong.h @@ -103,7 +103,7 @@ #if wxUSE_LONGLONG_NATIVE -class WXDLLIMPEXP_BASE wxLongLongNative +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxLongLongNative { public: // ctors @@ -344,7 +344,7 @@ class WXDLLIMPEXP_BASE wxLongLongNative }; -class WXDLLIMPEXP_BASE wxULongLongNative +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxULongLongNative { public: // ctors @@ -573,7 +573,7 @@ wxLongLongNative& wxLongLongNative::operator=(const wxULongLongNative &ll) #if wxUSE_LONGLONG_WX -class WXDLLIMPEXP_BASE wxLongLongWx +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxLongLongWx { public: // ctors @@ -815,7 +815,7 @@ class WXDLLIMPEXP_BASE wxLongLongWx }; -class WXDLLIMPEXP_BASE wxULongLongWx +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxULongLongWx { public: // ctors From 4cfab3d12e7a0c38a37356679823c8a556fb5369 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 10 Oct 2024 11:43:36 +0300 Subject: [PATCH 039/416] Add the wxWARN_UNUSED attribute for wxArrayString (cherry picked from commit 55f0b7f9a858079f5856e5545035348e20037029) --- include/wx/arrstr.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/wx/arrstr.h b/include/wx/arrstr.h index dcc1b6b55707..5befd067c39f 100644 --- a/include/wx/arrstr.h +++ b/include/wx/arrstr.h @@ -75,7 +75,7 @@ typedef int (wxCMPFUNC_CONV *CMPFUNCwxString)(wxString*, wxString*); WX_DEFINE_USER_EXPORTED_TYPEARRAY(wxString, wxArrayStringBase, wxARRAY_DUMMY_BASE, WXDLLIMPEXP_BASE); -class WXDLLIMPEXP_BASE wxArrayString : public wxArrayStringBase +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxArrayString : public wxArrayStringBase { public: // type of function used by wxArrayString::Sort() @@ -161,7 +161,7 @@ class WXDLLIMPEXP_BASE wxSortedArrayString : public wxSortedArrayStringBase #include #include "wx/afterstd.h" -class WXDLLIMPEXP_BASE wxArrayString +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxArrayString { public: // type of function used by wxArrayString::Sort() From 347b1eb058733d22e0e6f1a52d89f6e5d4a0a9d4 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 10 Oct 2024 11:59:03 +0300 Subject: [PATCH 040/416] Add the wxWARN_UNUSED attribute for wxDateTime (cherry picked from commit 00df4754fdc80eee12e43944a3481a8329b13351) --- include/wx/datetime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/datetime.h b/include/wx/datetime.h index 8c3cf43cf4b7..ccd6afae166f 100644 --- a/include/wx/datetime.h +++ b/include/wx/datetime.h @@ -125,7 +125,7 @@ extern WXDLLIMPEXP_DATA_BASE(const wxDateTime) wxDefaultDateTime; // wxDateTime represents an absolute moment in the time // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_BASE wxDateTime +class WXDLLIMPEXP_BASE wxWARN_UNUSED wxDateTime { public: // types From 84b6a82e3ecfd00354ebeeec621aed3aa1f102e7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 23 Oct 2024 02:29:49 +0200 Subject: [PATCH 041/416] Fix height of wxOwnerDrawnComboBox popup at different DPI See #24850, #24898. (cherry picked from commit 0150248f08ed4687fbf8889e058261f0c741fd14) --- docs/changes.txt | 1 + src/common/combocmn.cpp | 9 +++++++-- src/generic/odcombo.cpp | 4 ++-- src/propgrid/propgrid.cpp | 2 ++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index c128dd795ab3..1d946b32544f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -271,6 +271,7 @@ wxMSW: - Improve print preview in high DPI (taler21, #24815). - Fix position of the icons in the printout (#24673). - Fix events generated when toast-based notifications are dismissed (#24320). +- Fix height of wxOwnerDrawnComboBox popup in high DPI (Maarten Bent, #24850). wxOSX: diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index 8f443bc1804a..e0940a5eba70 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -118,7 +118,7 @@ wxCONSTRUCTOR_5( wxComboBox, wxWindow*, Parent, wxWindowID, Id, \ #define BMP_BUTTON_MARGIN 4 -#define DEFAULT_POPUP_HEIGHT 400 +#define DEFAULT_POPUP_ITEMS 21 #define DEFAULT_TEXT_INDENT 3 @@ -2161,8 +2161,13 @@ void wxComboCtrlBase::ShowPopup() wxASSERT( !m_popup || m_popup == popup ); // Consistency check. + int heightPopup = m_heightPopup; + if (heightPopup <= 0) + // estimated height for a row containig text + heightPopup = DEFAULT_POPUP_ITEMS * (GetCharHeight() + FromDIP(4)); + wxSize adjustedSize = m_popupInterface->GetAdjustedSize(widthPopup, - m_heightPopup<=0?DEFAULT_POPUP_HEIGHT:m_heightPopup, + heightPopup, maxHeightPopup); popup->SetSize(adjustedSize); diff --git a/src/generic/odcombo.cpp b/src/generic/odcombo.cpp index b9d8997a7189..d21cfc709f5a 100644 --- a/src/generic/odcombo.cpp +++ b/src/generic/odcombo.cpp @@ -818,7 +818,7 @@ void wxVListBoxComboPopup::CalcWidths() wxSize wxVListBoxComboPopup::GetAdjustedSize( int minWidth, int prefHeight, int maxHeight ) { - int height = 250; + int height = FromDIP(250); maxHeight -= 2; // Must take borders into account @@ -850,7 +850,7 @@ wxSize wxVListBoxComboPopup::GetAdjustedSize( int minWidth, int prefHeight, int } } else - height = 50; + height = FromDIP(50); CalcWidths(); diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index e99c71b926d3..9b028785d7ed 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -1351,6 +1351,8 @@ void wxPropertyGrid::OnDPIChanged(wxDPIChangedEvent &event) CalculateFontAndBitmapStuff(m_vspacing); Refresh(); + RefreshProperty(GetSelection()); + event.Skip(); } From 801e95871d02f10591deb912580510ea522b969c Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Thu, 17 Oct 2024 11:12:43 -0400 Subject: [PATCH 042/416] Update list of locales to install The list of the languages to install the message catalogs for has to be hardcoded in the bakefile currently, so update it to ensure that all the available catalogs are installed. See #24880, #24887. (cherry picked from commit fb04f7c2cc3e07a6de4e94747fe38099b60678bc) --- Makefile.in | 3 ++- build/bakefiles/wx.bkl | 5 +++-- docs/changes.txt | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile.in b/Makefile.in index e45de227ee03..14179f6f2031 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2205,7 +2205,8 @@ WEBKIT2_EXT_CXXFLAGS = $(WX_CPPFLAGS) -DWXUSINGDLL -DwxUSE_GUI=0 $(PIC_FLAG) \ $(WX_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS) WEBKIT2_EXT_OBJECTS = \ webkit2_ext_webview_webkit2_extension.o -LOCALE_LINGUAS = ca cs da de el es fi fr hu id it ja nl pl ru sl sv tr uk zh zh_CN zh_TW +LOCALE_LINGUAS = af an ar ca ca@valencia co cs da de el es eu fa_IR fi fr gl_ES hi hr hu id it ja \ + ka ko_KR lt lv ms nb ne nl pl pt pt_BR ro ru sk sl sq sr sv ta tr uk vi zh_CN zh_TW ### Conditionally set variables: ### diff --git a/build/bakefiles/wx.bkl b/build/bakefiles/wx.bkl index 0054360d3fbf..5ef067dc423c 100644 --- a/build/bakefiles/wx.bkl +++ b/build/bakefiles/wx.bkl @@ -139,8 +139,9 @@ $(SRCDIR)/locale wxstd-$(WX_RELEASE) - ca cs da de el es fi fr hu id it ja nl pl ru sl sv tr uk - zh zh_CN zh_TW + af an ar ca ca@valencia co cs da de el es eu fa_IR fi fr + gl_ES hi hr hu id it ja ka ko_KR lt lv ms nb ne nl pl pt + pt_BR ro ru sk sl sq sr sv ta tr uk vi zh_CN zh_TW $(LOCALEDIR) diff --git a/docs/changes.txt b/docs/changes.txt index 1d946b32544f..cb86c154bf59 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -256,6 +256,7 @@ All: - Avoid trailing space in `wx-config --c[xx]flags` (Tobiasz Laskowski, #24812). - Fix building using gcc 14 under Solaris (Alan Coopersmith, #24869). - Add wxNO_UNUSED_VARIABLES to enable warnings about them (Lauri Nurmi, #24882). +- Install all translations in "make install" (Scott Talbert, #24880). All (GUI): From d275dd4ba8c07cf1b05077ebf2c1c2e67655d633 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Mon, 28 Oct 2024 10:12:04 +0200 Subject: [PATCH 043/416] Fix compilation of on Clang 19 on Fedora Clang 19.1.0 on Fedora Rawhide fails to compile because m_rep's members are accessed as if m_rep was not a pointer, but it is. This is obviously wrong with any compiler, but apparently because wxArchiveIterator is a template class, and its operator=() is never called in tests, its brokenness went unnoticed. (cherry picked from commit c70a281c335d3df773b3ce4b5149aed92c9ee8a7) See #24922. --- docs/changes.txt | 1 + include/wx/archive.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index cb86c154bf59..bba498df2b92 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -257,6 +257,7 @@ All: - Fix building using gcc 14 under Solaris (Alan Coopersmith, #24869). - Add wxNO_UNUSED_VARIABLES to enable warnings about them (Lauri Nurmi, #24882). - Install all translations in "make install" (Scott Talbert, #24880). +- Fix compilation with clang 19 (Lauri Nurmi, #24922). All (GUI): diff --git a/include/wx/archive.h b/include/wx/archive.h index 2e32e7a49717..77b0f65c521f 100644 --- a/include/wx/archive.h +++ b/include/wx/archive.h @@ -218,9 +218,9 @@ class wxArchiveIterator wxArchiveIterator& operator =(const wxArchiveIterator& it) { if (it.m_rep) - it.m_rep.AddRef(); + it.m_rep->AddRef(); if (m_rep) - this->m_rep.UnRef(); + m_rep->UnRef(); m_rep = it.m_rep; return *this; } From fd0f60daea24e9c62d372d774be9e32ce2b0849d Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Thu, 24 Oct 2024 22:21:20 +0300 Subject: [PATCH 044/416] Make wxWARN_UNUSED work with Clang (again) Checking for availability of 'warn_unused' using __has_cpp_attribute evaluates to false with Clang, even when the attribute is actually available. __has_attribute gives the correct result, so use it instead, despite the aesthetic inconsistency with other checks. See #24833, #24907. (cherry picked from commit 795c02c4982c1d8f3e192b3e3e3ffa70193bb72e) --- include/wx/defs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index 899bd25719b9..e7cfb14a663a 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -346,8 +346,8 @@ typedef short int WXTYPE; In 3.2.x this is an opt-in feature enabled by defining wxNO_UNUSED_VARIABLES. */ #if defined(wxNO_UNUSED_VARIABLES) || defined(WXBUILDING) - #ifdef __has_cpp_attribute - #if __has_cpp_attribute(warn_unused) + #ifdef __has_attribute /* __has_cpp_attribute(warn_unused) would return false with Clang, */ + #if __has_attribute(warn_unused) /* so use __has_attribute instead */ #define wxWARN_UNUSED __attribute__((warn_unused)) #endif #endif From f2918a9ac823074901ce27de939baa57788beb3d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 Oct 2024 00:56:21 +0200 Subject: [PATCH 045/416] Fix crash when connection is refused in wxWebRequestCURL Avoid deleting wxEventLoopSourceHandler which may be still in use, as is the case when we get write IO notification just before an error one: if we delete the handler while handling the former, we crash when getting the latter one. Use a hack to avoid deleting the handlers for which write notification is being processed and delete them later, when we get the error one. See #24885. (cherry picked from commit 4e0fca8ab9756989598d07b41e672af86eac7092) --- docs/changes.txt | 1 + src/common/webrequest_curl.cpp | 80 +++++++++++++++++++++++++--------- 2 files changed, 61 insertions(+), 20 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index bba498df2b92..71c2f2ed8277 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -258,6 +258,7 @@ All: - Add wxNO_UNUSED_VARIABLES to enable warnings about them (Lauri Nurmi, #24882). - Install all translations in "make install" (Scott Talbert, #24880). - Fix compilation with clang 19 (Lauri Nurmi, #24922). +- Fix crash in wxWebRequestCURL when connection was refused (#24885). All (GUI): diff --git a/src/common/webrequest_curl.cpp b/src/common/webrequest_curl.cpp index f50acf4f8d2a..64650ab6b45a 100644 --- a/src/common/webrequest_curl.cpp +++ b/src/common/webrequest_curl.cpp @@ -704,10 +704,13 @@ SocketPollerImpl* SocketPollerImpl::Create(wxEvtHandler* hndlr) // SocketPollerSourceHandler - a source handler used by the SocketPoller class. +class SourceSocketPoller; + class SocketPollerSourceHandler: public wxEventLoopSourceHandler { public: - SocketPollerSourceHandler(curl_socket_t, wxEvtHandler*); + SocketPollerSourceHandler(curl_socket_t sock, SourceSocketPoller* poller) + : m_socket(sock), m_poller(poller) {} void OnReadWaiting() wxOVERRIDE; void OnWriteWaiting() wxOVERRIDE; @@ -716,16 +719,9 @@ class SocketPollerSourceHandler: public wxEventLoopSourceHandler private: void SendEvent(int); curl_socket_t m_socket; - wxEvtHandler* m_handler; + SourceSocketPoller* const m_poller; }; -SocketPollerSourceHandler::SocketPollerSourceHandler(curl_socket_t sock, - wxEvtHandler* hndlr) -{ - m_socket = sock; - m_handler = hndlr; -} - void SocketPollerSourceHandler::OnReadWaiting() { SendEvent(SocketPoller::READY_FOR_READ); @@ -741,14 +737,6 @@ void SocketPollerSourceHandler::OnExceptionWaiting() SendEvent(SocketPoller::HAS_ERROR); } -void SocketPollerSourceHandler::SendEvent(int result) -{ - wxThreadEvent event(wxEVT_SOCKET_POLLER_RESULT); - event.SetPayload(m_socket); - event.SetInt(result); - m_handler->ProcessEvent(event); -} - // SourceSocketPoller - a SocketPollerImpl based on event loop sources. class SourceSocketPoller: public SocketPollerImpl @@ -760,6 +748,8 @@ class SourceSocketPoller: public SocketPollerImpl void StopPolling(curl_socket_t) wxOVERRIDE; void ResumePolling(curl_socket_t) wxOVERRIDE; + void SendEvent(curl_socket_t sock, int result); + private: WX_DECLARE_HASH_MAP(curl_socket_t, wxEventLoopSource*, wxIntegerHash,\ wxIntegerEqual, SocketDataMap); @@ -768,11 +758,25 @@ class SourceSocketPoller: public SocketPollerImpl SocketDataMap m_socketData; wxEvtHandler* m_handler; + + // The socket for which we're currently processing a write IO notification. + curl_socket_t m_activeWriteSocket; + + // The sockets that we couldn't clean up yet but should do if/when we get + // an error notification for them. + wxVector m_socketsToCleanUp; }; +// This function must be implemented after full SourceSocketPoller declaration. +void SocketPollerSourceHandler::SendEvent(int result) +{ + m_poller->SendEvent(m_socket, result); +} + SourceSocketPoller::SourceSocketPoller(wxEvtHandler* hndlr) { m_handler = hndlr; + m_activeWriteSocket = 0; } SourceSocketPoller::~SourceSocketPoller() @@ -822,9 +826,7 @@ bool SourceSocketPoller::StartPolling(curl_socket_t sock, int pollAction) } else { - // Otherwise create a new source handler. - srcHandler = - new SocketPollerSourceHandler(sock, m_handler); + srcHandler = new SocketPollerSourceHandler(sock, this); } // Get a new source object for these polling checks. @@ -858,6 +860,15 @@ bool SourceSocketPoller::StartPolling(curl_socket_t sock, int pollAction) void SourceSocketPoller::StopPolling(curl_socket_t sock) { + if ( sock == m_activeWriteSocket ) + { + // We can't clean up the socket while we're inside OnWriteWaiting() for + // it because it could be followed by OnExceptionWaiting() and we'd + // crash if we deleted it already. + m_socketsToCleanUp.push_back(sock); + return; + } + SocketDataMap::iterator it = m_socketData.find(sock); if ( it != m_socketData.end() ) @@ -871,6 +882,35 @@ void SourceSocketPoller::ResumePolling(curl_socket_t WXUNUSED(sock)) { } +void SourceSocketPoller::SendEvent(curl_socket_t sock, int result) +{ + if ( result == SocketPoller::READY_FOR_WRITE ) + { + // Prevent the handler from this socket from being deleted in case we + // get a HAS_ERROR event for it immediately after this one. + m_activeWriteSocket = sock; + } + + wxThreadEvent event(wxEVT_SOCKET_POLLER_RESULT); + event.SetPayload(sock); + event.SetInt(result); + m_handler->ProcessEvent(event); + + m_activeWriteSocket = 0; + + if ( result == SocketPoller::HAS_ERROR ) + { + // Check if we have any sockets to clean up and do it now, it should be + // safe. + for ( size_t n = 0; n < m_socketsToCleanUp.size(); ++n ) + { + StopPolling(m_socketsToCleanUp[n]); + } + + m_socketsToCleanUp.clear(); + } +} + void SourceSocketPoller::CleanUpSocketSource(wxEventLoopSource* source) { wxEventLoopSourceHandler* srcHandler = source->GetHandler(); From b6a54c4752b5fd6770f3c2d21f512046ee50dcc5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 Oct 2024 14:00:41 +0100 Subject: [PATCH 046/416] Fix default background colour of ownerdrawn wxListBox items They should use the same background as non-ownerdrawn listbox items (i.e. wxSYS_COLOUR_LISTBOX, which white by default) but used wxSYS_COLOUR_MENU (light grey in the default colour schema) as this is what was used in wxOwnerDrawnBase::GetColourToUse() if no explicit colour was specified. Fix this by overriding GetColourToUse() in wxListBoxItem and forcing the use of the correct colour there by default. This seems preferable to setting the background colour to wxSYS_COLOUR_LISTBOX directly, as it might be surprising to application code if the colour it didn't set itself still turned out to be set. See #24917. (cherry picked from commit 1826e65a7460d717a7f76b13ad55626f4f4838df) --- docs/changes.txt | 1 + src/msw/listbox.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 71c2f2ed8277..048a87cb5dba 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -275,6 +275,7 @@ wxMSW: - Fix position of the icons in the printout (#24673). - Fix events generated when toast-based notifications are dismissed (#24320). - Fix height of wxOwnerDrawnComboBox popup in high DPI (Maarten Bent, #24850). +- Fix background colour of owner-drawn wxListBox items (#24917). wxOSX: diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index 8b50dd2acf1b..1c6a7f11d7d0 100644 --- a/src/msw/listbox.cpp +++ b/src/msw/listbox.cpp @@ -64,6 +64,20 @@ class wxListBoxItem : public wxOwnerDrawn wxString GetName() const wxOVERRIDE { return m_parent->GetString(GetIndex()); } +protected: + void + GetColourToUse(wxODStatus stat, + wxColour& colText, + wxColour& colBack) const wxOVERRIDE + { + wxOwnerDrawn::GetColourToUse(stat, colText, colBack); + + // Default background colour for the owner drawn items is the menu one, + // but it's not appropriate for the listboxes, so override it here. + if ( !(stat & wxODSelected) && !GetBackgroundColour().IsOk() ) + colBack = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX); + } + private: wxListBox *m_parent; }; From 89686403cb64638aca0957db2fd43e29e22d4b96 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 1 Nov 2024 19:02:37 +0100 Subject: [PATCH 047/416] Don't break AUI layout if Update() is called while iconized Because we don't have the correct client size when the window is minimized (at least in wxMSW), postpone the actual update until the window is restored, as we don't really need to do it until then anyhow. See #24930. (cherry picked from commit 8b7147261943e3e50bc08492d225e6a012bb433d) --- docs/changes.txt | 1 + src/aui/framemanager.cpp | 43 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 048a87cb5dba..4489c258ba2f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -263,6 +263,7 @@ All: All (GUI): - Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). +- Don't break AUI layout if Update() called when window is iconized (#24930). wxGTK: diff --git a/src/aui/framemanager.cpp b/src/aui/framemanager.cpp index 7cc11b112575..cc813ae00530 100644 --- a/src/aui/framemanager.cpp +++ b/src/aui/framemanager.cpp @@ -75,6 +75,21 @@ wxDEFINE_EVENT( wxEVT_AUI_FIND_MANAGER, wxAuiManagerEvent ); wxIMPLEMENT_DYNAMIC_CLASS(wxAuiManagerEvent, wxEvent); wxIMPLEMENT_CLASS(wxAuiManager, wxEvtHandler); +// We can't add a member variable to wxAuiManager in 3.2 branch, so emulate it +// by encoding the corresponding boolean value via the presence of "this" +// pointer in the given hash set. +#include "wx/hashset.h" + +namespace +{ + +// Define a set of wxAuiManager object pointers. +WX_DECLARE_HASH_SET(wxAuiManager*, wxPointerHash, wxPointerEqual, wxAuiManagerSet); + +// And use it to remember for which objects we delayed updating them. +wxAuiManagerSet gs_updateOnRestore; + +} // anonymous namespace const int auiToolBarLayer = 10; @@ -629,6 +644,8 @@ wxAuiManager::wxAuiManager(wxWindow* managed_wnd, unsigned int flags) wxAuiManager::~wxAuiManager() { + gs_updateOnRestore.erase(this); + UnInit(); // NOTE: It's possible that the windows have already been destroyed by the @@ -2495,6 +2512,17 @@ void wxAuiManager::GetDockSizeConstraint(double* width_pct, double* height_pct) void wxAuiManager::Update() { + wxTopLevelWindow * const + tlw = wxDynamicCast(wxGetTopLevelParent(m_frame), wxTopLevelWindow); + if ( tlw && tlw->IsIconized() ) + { + // We can't compute the layout correctly when the frame is minimized + // because at least under MSW its client size is (0,0) in this case + // but, luckily, we don't need to do it right now anyhow. + gs_updateOnRestore.insert(this); + return; + } + m_hoverButton = NULL; m_actionPart = NULL; @@ -3982,8 +4010,19 @@ void wxAuiManager::OnSize(wxSizeEvent& event) { if (m_frame) { - DoFrameLayout(); - Repaint(); + if ( gs_updateOnRestore.count(this) ) + { + // If we had postponed updating, do it now: we only receive size + // events once the window is restored. + gs_updateOnRestore.erase(this); + + Update(); + } + else // Otherwise just re-layout, without redoing the full update. + { + DoFrameLayout(); + Repaint(); + } #if wxUSE_MDI if (wxDynamicCast(m_frame, wxMDIParentFrame)) From 3c8fedcdd0999d17b3d61a431636ba5682d4ee45 Mon Sep 17 00:00:00 2001 From: Artur Sochirca Date: Mon, 18 Nov 2024 21:39:06 +0200 Subject: [PATCH 048/416] Fix wxEvent timestamp narrowing under macOS `wxEvent::m_timeStamp` is of type `long`, expressed in milliseconds. On macOS this value is assigned after conversion from `[NSEvent timestamp]` which is of type `double`, expressed in seconds. In several such assigment instances the original value is narrowed to `int`, apparently to silence implicit conversion warnings, see e490b0d. However, the narrowing limits the applicability to `MAX_INT` milliseconds. Given that int is 32 bit on mac and that `NSEvent`'s `timestamp` returns the time in seconds since system startup, an interval between two events can only be checked when macOS uptime is less then 24.9 days. As macs tend to run quite stable for long periods of time without the need for a reboot, this is a real-world problem. Fix this by casting the source milliseconds value to `long`, which is 64 bit on mac. See #24960. (cherry picked from commit 08e9fb37f15c893c7f28b1fb7024ff63802af1e3) --- docs/changes.txt | 1 + src/osx/cocoa/window.mm | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 4489c258ba2f..8f3658da63a4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -284,6 +284,7 @@ wxOSX: - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). - Fix regression in GetPreferredUILanguage() in some cases (#24804). - Fix CMake build with PCH disabled (Maarten Bent, #24851). +- Fix truncating wxEvent time stamp after ~25 days (Artur Sochirca, #24960). 3.2.6: (released 2024-09-09) diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index 337eea67dae8..92610cf4675d 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -456,7 +456,7 @@ long wxOSXTranslateCocoaKey( NSEvent* event, int eventType ) wxevent.m_rawCode = [nsEvent keyCode]; wxevent.m_rawFlags = modifiers; - wxevent.SetTimestamp( (int)([nsEvent timestamp] * 1000) ) ; + wxevent.SetTimestamp( static_cast([nsEvent timestamp] * 1000) ) ; wxevent.m_isRepeat = (eventType == NSKeyDown) && [nsEvent isARepeat]; wxString chars; @@ -616,7 +616,7 @@ - (CGFloat)scrollingDeltaY; wxevent->m_rawControlDown = modifiers & NSControlKeyMask; wxevent->m_altDown = modifiers & NSAlternateKeyMask; wxevent->m_controlDown = modifiers & NSCommandKeyMask; - wxevent->SetTimestamp( (int)([nsEvent timestamp] * 1000) ) ; + wxevent->SetTimestamp( static_cast([nsEvent timestamp] * 1000) ) ; UInt32 mouseChord = 0; @@ -3873,7 +3873,7 @@ new wxCocoaGesturesImpl(this, m_osxView, eventsMask) wxevent.SetId(peer->GetId()); if ( event ) - wxevent.SetTimestamp( (int)([event timestamp] * 1000) ) ; + wxevent.SetTimestamp( static_cast([event timestamp] * 1000) ) ; } result = peer->OSXHandleKeyEvent(wxevent) || result; From dc86045658ce96218c4468f2476f7aa94ae11ab0 Mon Sep 17 00:00:00 2001 From: Daniel Collins Date: Tue, 19 Nov 2024 01:23:20 +0000 Subject: [PATCH 049/416] Implement wxCursor::GetHotSpot() in wxOSX/Cocoa Forward it to the corresponding NSCursor accessor. See #24961. (cherry picked from commit c3ee8a4ad1c0adb32e277160f142689ef654d8a5) --- docs/changes.txt | 1 + include/wx/osx/cocoa/private.h | 1 + include/wx/osx/cursor.h | 2 ++ interface/wx/cursor.h | 4 ++-- src/osx/carbon/cursor.cpp | 10 ++++++++++ src/osx/carbon/utilscocoa.mm | 5 +++++ 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8f3658da63a4..c821690cc4ca 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -285,6 +285,7 @@ wxOSX: - Fix regression in GetPreferredUILanguage() in some cases (#24804). - Fix CMake build with PCH disabled (Maarten Bent, #24851). - Fix truncating wxEvent time stamp after ~25 days (Artur Sochirca, #24960). +- Implement wxCursor::GetHotSpot() (Daniel Collins, #24961). 3.2.6: (released 2024-09-09) diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index 4c373a13b4ed..daa79ed6fd3f 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -556,6 +556,7 @@ WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hot void wxMacCocoaSetCursor( WX_NSCursor cursor ); void wxMacCocoaHideCursor(); void wxMacCocoaShowCursor(); +wxPoint wxMacCocoaGetCursorHotSpot( WX_NSCursor cursor ); typedef struct tagClassicCursor { diff --git a/include/wx/osx/cursor.h b/include/wx/osx/cursor.h index d01a643c628e..deef158a0bce 100644 --- a/include/wx/osx/cursor.h +++ b/include/wx/osx/cursor.h @@ -38,6 +38,8 @@ class WXDLLIMPEXP_CORE wxCursor : public wxCursorBase void SetHCURSOR(WXHCURSOR cursor); WXHCURSOR GetHCURSOR() const; + virtual wxPoint GetHotSpot() const wxOVERRIDE; + protected: virtual wxGDIRefData *CreateGDIRefData() const wxOVERRIDE; virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const wxOVERRIDE; diff --git a/interface/wx/cursor.h b/interface/wx/cursor.h index 945479738794..9737d443488c 100644 --- a/interface/wx/cursor.h +++ b/interface/wx/cursor.h @@ -231,8 +231,8 @@ class wxCursor : public wxGDIObject The hot spot is the point at which the mouse is actually considered to be when this cursor is used. - This method is currently only implemented in wxMSW and wxGTK2+ and - simply returns ::wxDefaultPosition in the other ports. + This method is currently implemented in wxMSW, wxGTK and wxOSX (since + wxWidgets 3.2.7) and returns ::wxDefaultPosition in the other ports. @since 3.1.0 */ diff --git a/src/osx/carbon/cursor.cpp b/src/osx/carbon/cursor.cpp index 7e44649bcf20..28bfd9d06f1e 100644 --- a/src/osx/carbon/cursor.cpp +++ b/src/osx/carbon/cursor.cpp @@ -316,6 +316,16 @@ void wxCursor::MacInstall() const #endif } +wxPoint wxCursor::GetHotSpot() const +{ +#if wxOSX_USE_COCOA + if ( IsOk() ) + return wxMacCocoaGetCursorHotSpot( M_CURSORDATA->m_hCursor ); +#endif + + return wxDefaultPosition; +} + wxCursor::~wxCursor() { } diff --git a/src/osx/carbon/utilscocoa.mm b/src/osx/carbon/utilscocoa.mm index 1ba31461cf88..d9f14fddf13a 100644 --- a/src/osx/carbon/utilscocoa.mm +++ b/src/osx/carbon/utilscocoa.mm @@ -682,6 +682,11 @@ void wxMacCocoaShowCursor() { [NSCursor unhide]; } + +wxPoint wxMacCocoaGetCursorHotSpot(WX_NSCursor cursor) +{ + return wxPoint([cursor hotSpot].x, [cursor hotSpot].y); +} #endif //--------------------------------------------------------- From 3fd09eae7f67dfcfb58462bf651bde089f0aaebd Mon Sep 17 00:00:00 2001 From: Daniel Collins Date: Tue, 19 Nov 2024 01:29:46 +0000 Subject: [PATCH 050/416] Implement wxSYS_CURSOR_[XY] in wxOSX wxSystemSettings::GetMetric() Use the dimension of the standard arrow cursor. See #24962. (cherry picked from commit 832312bbb422a478e7d532d367c8fe365a585744) --- docs/changes.txt | 1 + src/osx/cocoa/settings.mm | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index c821690cc4ca..fafac111e1c5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -286,6 +286,7 @@ wxOSX: - Fix CMake build with PCH disabled (Maarten Bent, #24851). - Fix truncating wxEvent time stamp after ~25 days (Artur Sochirca, #24960). - Implement wxCursor::GetHotSpot() (Daniel Collins, #24961). +- Handle wxSYS_CURSOR_[XY] in wxSystemSettings (Daniel Collins, #24962). 3.2.6: (released 2024-09-09) diff --git a/src/osx/cocoa/settings.mm b/src/osx/cocoa/settings.mm index c819deeb0c29..ad4a9aaef7d9 100644 --- a/src/osx/cocoa/settings.mm +++ b/src/osx/cocoa/settings.mm @@ -15,6 +15,7 @@ #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/gdicmn.h" + #include "wx/math.h" #endif #include "wx/osx/core/private.h" @@ -221,6 +222,19 @@ static int wxOSXGetUserDefault(NSString* key, int defaultValue) // system metrics/features // ---------------------------------------------------------------------------- +static float GetCursorScale() +{ + NSDictionary *dict = [[NSUserDefaults standardUserDefaults] persistentDomainForName:@"com.apple.universalaccess"]; + + /* See https://developer.apple.com/documentation/devicemanagement/accessibility?language=objc */ + if ([dict objectForKey: @"mouseDriverCursorSize"]) + { + return [dict[@"mouseDriverCursorSize"] floatValue]; + } + + return 1.0f; +} + // Get a system metric, e.g. scrollbar size int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUNUSED(win)) { @@ -233,8 +247,6 @@ static int wxOSXGetUserDefault(NSString* key, int defaultValue) // TODO case wxSYS_BORDER_X: // TODO case wxSYS_BORDER_Y: - // TODO case wxSYS_CURSOR_X: - // TODO case wxSYS_CURSOR_Y: // TODO case wxSYS_DCLICK_X: // TODO case wxSYS_DCLICK_Y: // TODO case wxSYS_DRAG_X: @@ -242,6 +254,11 @@ static int wxOSXGetUserDefault(NSString* key, int defaultValue) // TODO case wxSYS_EDGE_X: // TODO case wxSYS_EDGE_Y: + case wxSYS_CURSOR_X: + return wxRound([[[NSCursor arrowCursor] image] size].width * GetCursorScale()); + case wxSYS_CURSOR_Y: + return wxRound([[[NSCursor arrowCursor] image] size].height * GetCursorScale()); + case wxSYS_HSCROLL_ARROW_X: return 16; case wxSYS_HSCROLL_ARROW_Y: From 447b1ac6550794d70180d89067b67f0d1aa4c004 Mon Sep 17 00:00:00 2001 From: Stefan Battmer Date: Wed, 20 Nov 2024 16:46:11 +0100 Subject: [PATCH 051/416] Fix handling pending events in wxMSW without an event loop Since the changes of 9b4759d7b6 (Don't rely on getting WM_NULL messages in wxIdleWakeUpModule, 2018-01-13), pending events were not dispatched any more if no event loop was running. Fix this by always trying to dispatch any pending events if we don't have any event loop at all. A better solution might be to handle wake up at wxApp, rather than wxEvtLoop, level, but this would require many more changes, so for now just fix this regression. See #18109. (cherry picked from commit 586883f7cbe4a41b9ea22c3b32e975c212067780) --- docs/changes.txt | 1 + src/msw/app.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index fafac111e1c5..dc7438c2a825 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -277,6 +277,7 @@ wxMSW: - Fix events generated when toast-based notifications are dismissed (#24320). - Fix height of wxOwnerDrawnComboBox popup in high DPI (Maarten Bent, #24850). - Fix background colour of owner-drawn wxListBox items (#24917). +- Fix handling pending events without an event loop (Stefan Battmer, #18109). wxOSX: diff --git a/src/msw/app.cpp b/src/msw/app.cpp index d8b19f0295df..8d98e0c77ff6 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -822,7 +822,12 @@ void wxApp::MSWProcessPendingEventsIfNeeded() // both console and GUI applications. wxMSWEventLoopBase * const evtLoop = static_cast(wxEventLoop::GetActive()); - if ( evtLoop && evtLoop->MSWIsWakeUpRequested() ) + + // We don't want to do anything if we have an event loop which hadn't been + // woken up, but we need to do it if we don't have any event loop at all + // (which is uncommon but may happen), as otherwise pending events would + // just accumulate forever, without ever being processed. + if ( !evtLoop || evtLoop->MSWIsWakeUpRequested() ) ProcessPendingEvents(); } From 9437c9cb381238fe1759f310f3f43e55b2c98335 Mon Sep 17 00:00:00 2001 From: taler21 <99262969+taler21@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:14:52 +0100 Subject: [PATCH 052/416] Fix indent of wxTreeCtrl without images in high DPI under MSW Work around the incorrect behavior of the native control, which causes the buttons for expanding and collapsing to be displayed too small in a wxTreeCtrl not using images at high DPI. See #24640, #24941. (cherry picked from commit 7239f6ee11d05a09ac191bc1e28a2e3c3c3b96f2) --- docs/changes.txt | 1 + include/wx/msw/treectrl.h | 2 ++ src/msw/treectrl.cpp | 17 +++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index dc7438c2a825..583ff523d4c8 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -278,6 +278,7 @@ wxMSW: - Fix height of wxOwnerDrawnComboBox popup in high DPI (Maarten Bent, #24850). - Fix background colour of owner-drawn wxListBox items (#24917). - Fix handling pending events without an event loop (Stefan Battmer, #18109). +- Fix indent of imageless wxTreeCtrl in high DPI (taler21, #24941). wxOSX: diff --git a/include/wx/msw/treectrl.h b/include/wx/msw/treectrl.h index 08d42f706220..9d0b09af3556 100644 --- a/include/wx/msw/treectrl.h +++ b/include/wx/msw/treectrl.h @@ -303,6 +303,8 @@ class WXDLLIMPEXP_CORE wxTreeCtrl : public wxTreeCtrlBase // Delete the given item from the native control. bool MSWDeleteItem(const wxTreeItemId& item); + void OnDPIChanged(wxDPIChangedEvent& event); + // the hash storing the items attributes (indexed by item ids) wxMapTreeAttr m_attrs; diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 4d1aab68f819..8baabda684a0 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -790,6 +790,15 @@ bool wxTreeCtrl::Create(wxWindow *parent, EnableSystemThemeByDefault(); } + // When using non-standard DPI, we need to scale the default indent with + // the DPI scaling factor as Windows doesn't do it and the "+" buttons + // would be displayed too small if the tree is used without images. + if ( GetDPIScaleFactor() > 1.0 ) + SetIndent(FromDIP(GetIndent())); + + // And ensure we adjust it again if the DPI changes in the future. + Bind(wxEVT_DPI_CHANGED, &wxTreeCtrl::OnDPIChanged, this); + return true; } @@ -2286,6 +2295,14 @@ void wxTreeCtrl::MSWUpdateFontOnDPIChange(const wxSize& newDPI) } } +void wxTreeCtrl::OnDPIChanged(wxDPIChangedEvent& event) +{ + // Adjust the indent to the new DPI scaling factor as Windows doesn't do it. + SetIndent(event.ScaleX(GetIndent())); + + event.Skip(); +} + bool wxTreeCtrl::MSWIsOnItem(unsigned flags) const { unsigned mask = TVHT_ONITEM; From ac371abb7a96eebac7871c9b4a9777608cdbbeaa Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 21 Nov 2024 10:46:05 +0100 Subject: [PATCH 053/416] Use the standard naming convention for WX_GL_COMPAT_PROFILE Use "WX" prefix for it, just as for all the other constants in the same enum instead of the lower-case "wx" (which is still preserved for compatibility). See #24964, #24965. (cherry picked from commit 7af7c55ed0420d3457e9d1fb7f23e48f4abb4457) --- docs/changes.txt | 1 + include/wx/glcanvas.h | 7 +++++-- interface/wx/glcanvas.h | 2 +- src/common/glcmn.cpp | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 583ff523d4c8..feffc5f4973f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -264,6 +264,7 @@ All (GUI): - Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). - Don't break AUI layout if Update() called when window is iconized (#24930). +- Fix WX_GL_COMPAT_PROFILE spelling (#24964). wxGTK: diff --git a/include/wx/glcanvas.h b/include/wx/glcanvas.h index 00f14953d515..5f0079cff1c3 100644 --- a/include/wx/glcanvas.h +++ b/include/wx/glcanvas.h @@ -54,7 +54,7 @@ enum WX_GL_CORE_PROFILE, // use an OpenGL core profile WX_GL_MAJOR_VERSION, // major OpenGL version of the core profile WX_GL_MINOR_VERSION, // minor OpenGL version of the core profile - wx_GL_COMPAT_PROFILE, // use compatible profile (use all versions features) + WX_GL_COMPAT_PROFILE, // use compatible profile (use all versions features) WX_GL_FORWARD_COMPAT, // forward compatible context. OpenGL >= 3.0 WX_GL_ES2, // ES or ES2 context. WX_GL_DEBUG, // create a debug context @@ -63,7 +63,10 @@ enum WX_GL_LOSE_ON_RESET, // if graphics reset, all context state is lost WX_GL_RESET_ISOLATION, // protect other apps or share contexts from reset side-effects WX_GL_RELEASE_FLUSH, // on context release, flush pending commands - WX_GL_RELEASE_NONE // on context release, pending commands are not flushed + WX_GL_RELEASE_NONE, // on context release, pending commands are not flushed + + // Old name defined (ironically) for compatibility. + wx_GL_COMPAT_PROFILE = WX_GL_COMPAT_PROFILE }; #define wxGLCanvasName wxT("GLCanvas") diff --git a/interface/wx/glcanvas.h b/interface/wx/glcanvas.h index 78a83cbb1b81..225773e7f945 100644 --- a/interface/wx/glcanvas.h +++ b/interface/wx/glcanvas.h @@ -656,7 +656,7 @@ enum @since 3.1.0 */ - wx_GL_COMPAT_PROFILE, + WX_GL_COMPAT_PROFILE, /** Request a forward-compatible context. diff --git a/src/common/glcmn.cpp b/src/common/glcmn.cpp index 6ddedb9d7905..a42f4cf25837 100644 --- a/src/common/glcmn.cpp +++ b/src/common/glcmn.cpp @@ -303,7 +303,7 @@ bool wxGLCanvasBase::ParseAttribList(const int *attribList, src++; break; - case wx_GL_COMPAT_PROFILE: + case WX_GL_COMPAT_PROFILE: if ( ctxAttrs ) ctxAttrs->CompatibilityProfile(); break; From bab39fcd4d46a773ec527eb1c83a4cd45b958cb6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 16 Nov 2024 14:48:01 +0100 Subject: [PATCH 054/416] Define wxCharNN as typedefs for charNN_t, not wxUintNN This makes more sense, as they're supposed to be character types, not integer ones, and fixes the build with libc++ 19 which doesn't provide std::char_traits specializations for types other than char, wchar_t and charNN_t, so that std::basic_string can't be compiled with it any more without specializing std::char_traits on our own which we'd rather avoid. Additionally change the code in strconv.cpp to avoid handling wxUint16 and wxChar16 as being the same type, as they can be different now. See #24958, #24959. (cherry picked from commit e37adaba307582749c77e398a3c8ec2c40e55c49) --- docs/changes.txt | 1 + include/wx/defs.h | 20 ++++++++++++++++++-- src/common/strconv.cpp | 14 +++++++------- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index feffc5f4973f..7d0d1fdc6d05 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,7 @@ All: - Install all translations in "make install" (Scott Talbert, #24880). - Fix compilation with clang 19 (Lauri Nurmi, #24922). - Fix crash in wxWebRequestCURL when connection was refused (#24885). +- Fix build with libc++ v19 (#24959). All (GUI): diff --git a/include/wx/defs.h b/include/wx/defs.h index e7cfb14a663a..86eb04b194ff 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -1174,20 +1174,36 @@ typedef double wxDouble; /* Define wxChar16 and wxChar32 */ +#ifdef __cplusplus + #if SIZEOF_WCHAR_T == 2 #define wxWCHAR_T_IS_WXCHAR16 typedef wchar_t wxChar16; #else - typedef wxUint16 wxChar16; + // For compatibility, we keep using wxUint16 here, but this wouldn't + // compile with libc++ 19+, so use the (more correct but, more importantly, + // working) char16_t in this case as there is nothing to be compatible + // with in this case. + #if defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION+0 >= 19000) + typedef char16_t wxChar16; + #else + typedef wxUint16 wxChar16; + #endif #endif #if SIZEOF_WCHAR_T == 4 #define wxWCHAR_T_IS_WXCHAR32 typedef wchar_t wxChar32; #else - typedef wxUint32 wxChar32; + // See the comment above for wxChar16 definition. + #if defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION+0 >= 19000) + typedef char32_t wxChar32; + #else + typedef wxUint32 wxChar32; + #endif #endif +#endif /* __cplusplus */ /* Helper macro expanding into the given "m" macro invoked with each of the diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index ac0681b7c1b3..ec911df76350 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -1596,8 +1596,8 @@ wxMBConvUTF16straight::ToWChar(wchar_t *dst, size_t dstLen, const size_t inLen = srcLen / BYTES_PER_CHAR; size_t outLen = 0; - const wxUint16 *inBuff = reinterpret_cast(src); - for ( const wxUint16 * const inEnd = inBuff + inLen; inBuff < inEnd; ) + const wxChar16 *inBuff = reinterpret_cast(src); + for ( const wxChar16 * const inEnd = inBuff + inLen; inBuff < inEnd; ) { const wxUint32 ch = wxDecodeSurrogate(&inBuff, inEnd); if ( !inBuff ) @@ -1666,11 +1666,11 @@ wxMBConvUTF16swap::ToWChar(wchar_t *dst, size_t dstLen, const size_t inLen = srcLen / BYTES_PER_CHAR; size_t outLen = 0; - const wxUint16 *inBuff = reinterpret_cast(src); - for ( const wxUint16 * const inEnd = inBuff + inLen; inBuff < inEnd; ) + const wxChar16 *inBuff = reinterpret_cast(src); + for ( const wxChar16 * const inEnd = inBuff + inLen; inBuff < inEnd; ) { - wxUint16 tmp[2]; - const wxUint16* tmpEnd = tmp; + wxChar16 tmp[2]; + const wxChar16* tmpEnd = tmp; tmp[0] = wxUINT16_SWAP_ALWAYS(*inBuff); tmpEnd++; @@ -1682,7 +1682,7 @@ wxMBConvUTF16swap::ToWChar(wchar_t *dst, size_t dstLen, tmpEnd++; } - const wxUint16* p = tmp; + const wxChar16* p = tmp; const wxUint32 ch = wxDecodeSurrogate(&p, tmpEnd); if ( !p ) return wxCONV_FAILED; From 9d1c5b108ce96cc61604a3d8b49a171b8a293fed Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 27 Nov 2024 02:15:08 +0100 Subject: [PATCH 055/416] Stop using checkout and other actions for Ubuntu 18.04 CI builds Even actions/checkout@v3 doesn't work in the container any longer, because none of JS actions can run on Ubuntu 18.04 which doesn't have a new enough glibc version any longer, so perform the checkout manually. Disable ccache for the builds using this OS too for the same reason: even though we could install ccache itself manually too, we don't have any easy way to save and restore its cache without this action. This also means that we can use v4 of the action for the other builds. --- .github/workflows/ci.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67162ecf2a5f..efd713a77f08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -159,6 +159,18 @@ jobs: # - xvfb is used for running the GUI tests. apt-get update -qq apt-get install -qq coreutils ${compiler-g++} git locales make pkg-config python3 python3-pip sudo xvfb + + # Checkout action doesn't work under Ubuntu 18.04 any more, so + # run checkout manually. + git config --global --add safe.directory $GITHUB_WORKSPACE + git config --global gc.auto 0 + git init $GITHUB_WORKSPACE + cd $GITHUB_WORKSPACE + git remote add origin $GITHUB_SERVER_URL/$GITHUB_REPOSITORY + git fetch --depth=1 origin $GITHUB_REF + git checkout FETCH_HEAD + git submodule update --init --depth=1 --recursive + git log -1 --format='%H' ;; '') @@ -170,11 +182,13 @@ jobs: esac - name: Checkout - uses: actions/checkout@v3 + if: matrix.container == '' + uses: actions/checkout@v4 with: submodules: 'recursive' - name: Install CCache + if: matrix.container == '' uses: hendrikmuhs/ccache-action@v1.2.3 with: key: ${{ matrix.name }} @@ -245,7 +259,7 @@ jobs: echo echo "ccache version:" - ccache --version + ccache --version || echo "ccache not available" echo - name: Configuring From 1500a05b4ce09fe97a6d0e91ff103753ae6c75f9 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 1 Jan 2025 22:13:44 +0100 Subject: [PATCH 056/416] Update copyright years to 2025 in 3.2 branch too Just run misc/scripts/inc_year and commit the results. See #18690. --- CMakeLists.txt | 2 +- build/bakefiles/mac_bundles.bkl | 6 +++--- demos/bombs/Makefile.in | 6 +++--- demos/forty/Makefile.in | 6 +++--- demos/fractal/Makefile.in | 6 +++--- demos/life/Makefile.in | 6 +++--- demos/poem/Makefile.in | 6 +++--- docs/doxygen/mainpages/copyright.h | 2 +- docs/doxygen/regen.sh | 2 +- interface/wx/aboutdlg.h | 2 +- interface/wx/generic/aboutdlgg.h | 2 +- samples/access/Makefile.in | 6 +++--- samples/animate/Makefile.in | 6 +++--- samples/artprov/Makefile.in | 6 +++--- samples/aui/Makefile.in | 6 +++--- samples/calendar/Makefile.in | 6 +++--- samples/caret/Makefile.in | 6 +++--- samples/clipboard/Makefile.in | 6 +++--- samples/collpane/Makefile.in | 6 +++--- samples/combo/Makefile.in | 6 +++--- samples/config/Makefile.in | 6 +++--- samples/dataview/Makefile.in | 6 +++--- samples/debugrpt/Makefile.in | 6 +++--- samples/dialogs/Makefile.in | 6 +++--- samples/dialup/Makefile.in | 6 +++--- samples/display/Makefile.in | 6 +++--- samples/dll/Makefile.in | 6 +++--- samples/dnd/Makefile.in | 6 +++--- samples/docview/Makefile.in | 6 +++--- samples/dragimag/Makefile.in | 6 +++--- samples/drawing/Makefile.in | 6 +++--- samples/erase/Makefile.in | 6 +++--- samples/event/Makefile.in | 6 +++--- samples/except/Makefile.in | 6 +++--- samples/exec/Makefile.in | 6 +++--- samples/font/Makefile.in | 6 +++--- samples/fswatcher/Makefile.in | 6 +++--- samples/grid/Makefile.in | 6 +++--- samples/help/Makefile.in | 6 +++--- samples/htlbox/Makefile.in | 6 +++--- samples/html/about/Makefile.in | 6 +++--- samples/html/help/Makefile.in | 6 +++--- samples/html/helpview/Makefile.in | 6 +++--- samples/html/printing/Makefile.in | 6 +++--- samples/html/test/Makefile.in | 6 +++--- samples/html/virtual/Makefile.in | 6 +++--- samples/html/widget/Makefile.in | 6 +++--- samples/html/zip/Makefile.in | 6 +++--- samples/image/Makefile.in | 6 +++--- samples/internat/Makefile.in | 6 +++--- samples/ipc/Makefile.in | 12 ++++++------ samples/joytest/Makefile.in | 6 +++--- samples/keyboard/Makefile.in | 6 +++--- samples/layout/Makefile.in | 6 +++--- samples/listctrl/Makefile.in | 6 +++--- samples/mdi/Makefile.in | 6 +++--- samples/mediaplayer/Makefile.in | 6 +++--- samples/memcheck/Makefile.in | 6 +++--- samples/menu/Makefile.in | 6 +++--- samples/minimal/Info_cocoa.plist | 6 +++--- samples/minimal/Makefile.in | 6 +++--- samples/nativdlg/Makefile.in | 6 +++--- samples/notebook/Makefile.in | 6 +++--- samples/oleauto/Makefile.in | 6 +++--- samples/opengl/cube/Makefile.in | 6 +++--- samples/opengl/isosurf/Makefile.in | 6 +++--- samples/opengl/penguin/Makefile.in | 6 +++--- samples/opengl/pyramid/Makefile.in | 6 +++--- samples/ownerdrw/Makefile.in | 6 +++--- samples/popup/Makefile.in | 6 +++--- samples/power/Makefile.in | 6 +++--- samples/preferences/Makefile.in | 6 +++--- samples/printing/Makefile.in | 6 +++--- samples/propgrid/Makefile.in | 6 +++--- samples/regtest/Makefile.in | 6 +++--- samples/render/Makefile.in | 6 +++--- samples/ribbon/Makefile.in | 6 +++--- samples/richtext/Makefile.in | 6 +++--- samples/sashtest/Makefile.in | 6 +++--- samples/scroll/Makefile.in | 6 +++--- samples/shaped/Makefile.in | 6 +++--- samples/sockets/Makefile.in | 12 ++++++------ samples/sound/Makefile.in | 6 +++--- samples/splash/Makefile.in | 6 +++--- samples/splitter/Makefile.in | 6 +++--- samples/statbar/Makefile.in | 6 +++--- samples/stc/Makefile.in | 6 +++--- samples/svg/Makefile.in | 6 +++--- samples/taborder/Makefile.in | 6 +++--- samples/taskbar/Makefile.in | 6 +++--- samples/taskbarbutton/Makefile.in | 6 +++--- samples/text/Makefile.in | 6 +++--- samples/thread/Makefile.in | 6 +++--- samples/toolbar/Makefile.in | 6 +++--- samples/treectrl/Makefile.in | 6 +++--- samples/treelist/Makefile.in | 6 +++--- samples/typetest/Makefile.in | 6 +++--- samples/uiaction/Makefile.in | 6 +++--- samples/validate/Makefile.in | 6 +++--- samples/vscroll/Makefile.in | 6 +++--- samples/webrequest/Makefile.in | 6 +++--- samples/webview/Makefile.in | 6 +++--- samples/widgets/Makefile.in | 6 +++--- samples/wizard/Makefile.in | 6 +++--- samples/wrapsizer/Makefile.in | 6 +++--- samples/xrc/Makefile.in | 6 +++--- samples/xti/Makefile.in | 6 +++--- src/common/utilscmn.cpp | 2 +- src/msw/version.rc | 2 +- tests/Makefile.in | 12 ++++++------ tests/benchmarks/Makefile.in | 12 ++++++------ utils/helpview/src/Makefile.in | 6 +++--- utils/screenshotgen/src/Makefile.in | 6 +++--- 113 files changed, 337 insertions(+), 337 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6ae7f6210c0..d994ba3dba0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,7 @@ math(EXPR wxSOVERSION_MAJOR "${WX_CURRENT} - ${WX_AGE}") set(wxSOVERSION ${wxSOVERSION_MAJOR}.${WX_AGE}.${WX_REVISION}) set(wxVERSION ${wxMAJOR_VERSION}.${wxMINOR_VERSION}.${wxRELEASE_NUMBER}) -set(wxCOPYRIGHT "2002-2024 wxWidgets") +set(wxCOPYRIGHT "2002-2025 wxWidgets") set(wxLANGUAGES C CXX) if(APPLE AND NOT CMAKE_VERSION VERSION_LESS "3.16") diff --git a/build/bakefiles/mac_bundles.bkl b/build/bakefiles/mac_bundles.bkl index 16817ca96d53..7db114670f20 100644 --- a/build/bakefiles/mac_bundles.bkl +++ b/build/bakefiles/mac_bundles.bkl @@ -49,10 +49,10 @@ sed -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.$(id)/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_EXECUTABLE_NAME}/$(id)/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_BUNDLE_NAME}/$(id)/" \ - -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ + -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ - -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_INFO_STRING}/$(id) version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ - -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ + -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_INFO_STRING}/$(id) version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ + -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ $(BUNDLE_PLIST) >$(BUNDLE)/Info.plist diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index 8a4cd5f7d8d4..29b2271e5483 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -166,10 +166,10 @@ bombs$(EXEEXT): $(BOMBS_OBJECTS) $(__bombs___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.bombs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/bombs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/bombs/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bombs version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bombs version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >bombs.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index dcdc4c295095..ab36f1fd881c 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -178,10 +178,10 @@ forty$(EXEEXT): $(FORTY_OBJECTS) $(__forty___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.forty/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/forty/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/forty/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/forty version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/forty version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >forty.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index 0e5486feeb87..e0d1e0d3a463 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -164,10 +164,10 @@ fractal$(EXEEXT): $(FRACTAL_OBJECTS) $(__fractal___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.fractal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/fractal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/fractal/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fractal version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fractal version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >fractal.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index e443ec68b846..a192147dcfa3 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -167,10 +167,10 @@ life$(EXEEXT): $(LIFE_OBJECTS) $(__life___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.life/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/life/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/life/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/life version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/life version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >life.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index f08cf41e2010..1db8465138a8 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -168,10 +168,10 @@ wxpoem$(EXEEXT): $(WXPOEM_OBJECTS) $(__wxpoem___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wxpoem/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wxpoem/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wxpoem/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wxpoem version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wxpoem version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wxpoem.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/docs/doxygen/mainpages/copyright.h b/docs/doxygen/mainpages/copyright.h index 90c5affb13a4..66dc8b9031aa 100644 --- a/docs/doxygen/mainpages/copyright.h +++ b/docs/doxygen/mainpages/copyright.h @@ -11,7 +11,7 @@ @section section_copyright wxWidgets Copyrights and Licenses -Copyright (c) 1992-2024 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert +Copyright (c) 1992-2025 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert Roebling, and other members of the wxWidgets team, please see the acknowledgements section below. diff --git a/docs/doxygen/regen.sh b/docs/doxygen/regen.sh index df46f5db5da8..a98d6f848942 100755 --- a/docs/doxygen/regen.sh +++ b/docs/doxygen/regen.sh @@ -215,7 +215,7 @@ if [[ "$1" = "docset" ]]; then $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetFeedURL $ATOMDIR/$ATOM $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetFallbackURL https://docs.wxwidgets.org $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetDescription "API reference and conceptual documentation for wxWidgets 3.0" - $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info NSHumanReadableCopyright "Copyright 1992-2024 wxWidgets team, Portions 1996 Artificial Intelligence Applications Institute" + $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info NSHumanReadableCopyright "Copyright 1992-2025 wxWidgets team, Portions 1996 Artificial Intelligence Applications Institute" $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info isJavaScriptEnabled true $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info dashIndexFilePath index.html $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetPlatformFamily wx diff --git a/interface/wx/aboutdlg.h b/interface/wx/aboutdlg.h index d5526a78abe1..b28b73a85fe6 100644 --- a/interface/wx/aboutdlg.h +++ b/interface/wx/aboutdlg.h @@ -37,7 +37,7 @@ aboutInfo.SetName("MyApp"); aboutInfo.SetVersion(MY_APP_VERSION_STRING); aboutInfo.SetDescription(_("My wxWidgets-based application!")); - aboutInfo.SetCopyright("(C) 1992-2024"); + aboutInfo.SetCopyright("(C) 1992-2025"); aboutInfo.SetWebSite("http://myapp.org"); aboutInfo.AddDeveloper("My Self"); diff --git a/interface/wx/generic/aboutdlgg.h b/interface/wx/generic/aboutdlgg.h index 0a59d8a080ed..51331d7ad638 100644 --- a/interface/wx/generic/aboutdlgg.h +++ b/interface/wx/generic/aboutdlgg.h @@ -34,7 +34,7 @@ aboutInfo.SetName("MyApp"); aboutInfo.SetVersion(MY_APP_VERSION_STRING); aboutInfo.SetDescription(_("My wxWidgets-based application!")); - aboutInfo.SetCopyright("(C) 1992-2024"); + aboutInfo.SetCopyright("(C) 1992-2025"); aboutInfo.SetWebSite("http://myapp.org"); aboutInfo.AddDeveloper("My Self"); diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index 678ef94944a5..895db6f3c1ff 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -164,10 +164,10 @@ accesstest$(EXEEXT): $(ACCESSTEST_OBJECTS) $(__accesstest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.accesstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/accesstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/accesstest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/accesstest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/accesstest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >accesstest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index c52a4a03d001..9369bc523ed3 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -164,10 +164,10 @@ anitest$(EXEEXT): $(ANITEST_OBJECTS) $(__anitest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.anitest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/anitest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/anitest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/anitest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/anitest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >anitest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index f5266c9867b2..1b11bbb5aadf 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -165,10 +165,10 @@ arttest$(EXEEXT): $(ARTTEST_OBJECTS) $(__arttest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.arttest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/arttest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/arttest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/arttest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/arttest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >arttest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index cbf8b2fa4ac1..55535f0d65aa 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -174,10 +174,10 @@ auidemo$(EXEEXT): $(AUIDEMO_OBJECTS) $(__auidemo___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.auidemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/auidemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/auidemo/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/auidemo version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/auidemo version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >auidemo.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index 1b6c410a1881..c632dfb155f7 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -164,10 +164,10 @@ calendar$(EXEEXT): $(CALENDAR_OBJECTS) $(__calendar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.calendar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/calendar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/calendar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/calendar version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/calendar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >calendar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index 91f1153ee1f0..347ffd60c6c5 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -164,10 +164,10 @@ caret$(EXEEXT): $(CARET_OBJECTS) $(__caret___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.caret/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/caret/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/caret/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/caret version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/caret version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >caret.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index 4b89eb4dbf94..42fc9fe31693 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -164,10 +164,10 @@ clipboard$(EXEEXT): $(CLIPBOARD_OBJECTS) $(__clipboard___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.clipboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/clipboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/clipboard/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/clipboard version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/clipboard version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >clipboard.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index 1b3ecea6fd22..5c8264fd8494 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -164,10 +164,10 @@ collpane$(EXEEXT): $(COLLPANE_OBJECTS) $(__collpane___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.collpane/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/collpane/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/collpane/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/collpane version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/collpane version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >collpane.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index 27c0be83ee4f..f111359cb4a7 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -164,10 +164,10 @@ combo$(EXEEXT): $(COMBO_OBJECTS) $(__combo___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.combo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/combo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/combo/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/combo version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/combo version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >combo.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index 5b9cae681ff8..1f8a651f478a 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -164,10 +164,10 @@ conftest$(EXEEXT): $(CONFTEST_OBJECTS) $(__conftest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.conftest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/conftest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/conftest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/conftest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/conftest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >conftest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index f3f339bc4560..3ca224dcc66b 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -165,10 +165,10 @@ dataview$(EXEEXT): $(DATAVIEW_OBJECTS) $(__dataview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dataview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dataview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dataview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dataview version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dataview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dataview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index 94727b030734..64506d868f42 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -170,10 +170,10 @@ debugrpt$(EXEEXT): $(DEBUGRPT_OBJECTS) $(__debugrpt___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.debugrpt/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/debugrpt/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/debugrpt/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/debugrpt version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/debugrpt version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >debugrpt.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index 50eca8b8b821..094e40ddaa13 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -173,10 +173,10 @@ dialogs$(EXEEXT): $(DIALOGS_OBJECTS) $(__dialogs___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dialogs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dialogs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dialogs/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dialogs version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dialogs version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dialogs.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index 07d2922b6035..8a75e9ec7162 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -164,10 +164,10 @@ nettest$(EXEEXT): $(NETTEST_OBJECTS) $(__nettest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.nettest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/nettest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/nettest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nettest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nettest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >nettest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index e966fbb067f0..c37c3ccb7c1f 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -164,10 +164,10 @@ display$(EXEEXT): $(DISPLAY_OBJECTS) $(__display___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.display/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/display/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/display/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/display version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/display version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >display.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index e2ff6b347380..e8930e98ae06 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -197,10 +197,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wx_exe/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wx_exe/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wx_exe/" \ -@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wx_exe version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wx_exe version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wx_exe.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index b8fcbe2d1b8a..3dedacdee2ec 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -164,10 +164,10 @@ dnd$(EXEEXT): $(DND_OBJECTS) $(__dnd___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dnd/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dnd/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dnd/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dnd version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dnd version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dnd.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index deca05afb340..8601dbdab929 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -169,10 +169,10 @@ docview$(EXEEXT): $(DOCVIEW_OBJECTS) $(__docview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.docview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/docview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/docview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/docview version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/docview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(srcdir)/Info.plist.in >docview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index 248d5071719d..4b49f0f5e101 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -164,10 +164,10 @@ dragimag$(EXEEXT): $(DRAGIMAG_OBJECTS) $(__dragimag___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dragimag/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dragimag/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dragimag/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dragimag version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dragimag version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dragimag.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index e02733c48ad9..e1a43f7231f2 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -164,10 +164,10 @@ drawing$(EXEEXT): $(DRAWING_OBJECTS) $(__drawing___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.drawing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/drawing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/drawing/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/drawing version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/drawing version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >drawing.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index add7ed2420e1..2824a1bb694d 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -164,10 +164,10 @@ erase$(EXEEXT): $(ERASE_OBJECTS) $(__erase___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.erase/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/erase/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/erase/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/erase version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/erase version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >erase.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index 526eee860e23..f24b285ac0a4 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -166,10 +166,10 @@ event$(EXEEXT): $(EVENT_OBJECTS) $(__event___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.event/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/event/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/event/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/event version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/event version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >event.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index f93ebc1c01bc..32fa7bc2c61b 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -164,10 +164,10 @@ except$(EXEEXT): $(EXCEPT_OBJECTS) $(__except___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.except/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/except/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/except/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/except version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/except version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >except.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index e2722d19899a..ed2bcdcff038 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -164,10 +164,10 @@ exec$(EXEEXT): $(EXEC_OBJECTS) $(__exec___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.exec/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/exec/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/exec/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/exec version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/exec version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >exec.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index 4ec300459d66..aae4cbda79aa 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -164,10 +164,10 @@ font$(EXEEXT): $(FONT_OBJECTS) $(__font___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.font/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/font/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/font/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/font version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/font version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >font.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index 4808d8c2bc25..5c66669e76ed 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -164,10 +164,10 @@ fswatcher$(EXEEXT): $(FSWATCHER_OBJECTS) $(__fswatcher___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.fswatcher/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/fswatcher/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/fswatcher/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fswatcher version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fswatcher version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >fswatcher.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index f41980a57a4f..acda6f2b018e 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -164,10 +164,10 @@ grid$(EXEEXT): $(GRID_OBJECTS) $(__grid___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.grid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/grid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/grid/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/grid version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/grid version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >grid.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index f3f6a0a9faae..a93d55c226f4 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -168,10 +168,10 @@ help$(EXEEXT): $(HELP_OBJECTS) $(__help___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.help/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/help/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/help/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/help version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/help version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >help.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index 93bc57bf6014..ccaf44ca830c 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -168,10 +168,10 @@ htlbox$(EXEEXT): $(HTLBOX_OBJECTS) $(__htlbox___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.htlbox/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/htlbox/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/htlbox/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htlbox version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htlbox version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >htlbox.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index d961adff71c9..182c3a28d539 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -169,10 +169,10 @@ about$(EXEEXT): $(ABOUT_OBJECTS) $(__about___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.about/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/about/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/about/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/about version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/about version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >about.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index 37679f46455d..d336703fbc1f 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -169,10 +169,10 @@ htmlhelp$(EXEEXT): $(HTMLHELP_OBJECTS) $(__htmlhelp___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.htmlhelp/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/htmlhelp/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/htmlhelp/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlhelp version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlhelp version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >htmlhelp.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index 1912174e93fb..80e6c76ddb99 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -169,10 +169,10 @@ helpview$(EXEEXT): $(HELPVIEW_OBJECTS) $(__helpview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/helpview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >helpview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 34cb2289ff52..22f9123f8d04 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -174,10 +174,10 @@ htmlprinting$(EXEEXT): $(HTMLPRINTING_OBJECTS) $(__htmlprinting___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.htmlprinting/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/htmlprinting/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/htmlprinting/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlprinting version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlprinting version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >htmlprinting.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index 4345672d2dae..395fee47bbb8 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -172,10 +172,10 @@ test$(EXEEXT): $(TEST_OBJECTS) $(__test___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.test/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/test/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/test/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >test.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index 5afe38f9bba4..3ed977241140 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -169,10 +169,10 @@ virtual$(EXEEXT): $(VIRTUAL_OBJECTS) $(__virtual___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.virtual/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/virtual/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/virtual/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/virtual version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/virtual version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >virtual.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index 58a50cc0521d..b949ad34025f 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -169,10 +169,10 @@ widget$(EXEEXT): $(WIDGET_OBJECTS) $(__widget___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.widget/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/widget/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/widget/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widget version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widget version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >widget.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index 921fd16a8c66..165b0894859a 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -169,10 +169,10 @@ zip$(EXEEXT): $(ZIP_OBJECTS) $(__zip___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.zip/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/zip/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/zip/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/zip version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/zip version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >zip.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index 9d977d5eaf3e..af18defc036a 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -165,10 +165,10 @@ image$(EXEEXT): $(IMAGE_OBJECTS) $(__image___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.image/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/image/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/image/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/image version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/image version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >image.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index bc3c02c14d15..3342fe5e7710 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -164,10 +164,10 @@ internat$(EXEEXT): $(INTERNAT_OBJECTS) $(__internat___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.internat/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/internat/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/internat/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/internat version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/internat version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(srcdir)/Info.plist.in >internat.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index 8b621d2a40b0..f6ccfd289913 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -213,10 +213,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ipcclient/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ipcclient/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ipcclient/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcclient version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcclient version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ipcclient.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -244,10 +244,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ipcserver/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ipcserver/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ipcserver/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcserver version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcserver version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ipcserver.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index d0d70d820c1c..b46abb90626d 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -164,10 +164,10 @@ joytest$(EXEEXT): $(JOYTEST_OBJECTS) $(__joytest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.joytest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/joytest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/joytest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/joytest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/joytest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >joytest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index e9c8c3764fcf..e7c2abdc99cc 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -164,10 +164,10 @@ keyboard$(EXEEXT): $(KEYBOARD_OBJECTS) $(__keyboard___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.keyboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/keyboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/keyboard/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/keyboard version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/keyboard version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >keyboard.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index f3d5d367fe24..17314fad3e14 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -164,10 +164,10 @@ layout$(EXEEXT): $(LAYOUT_OBJECTS) $(__layout___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.layout/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/layout/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/layout/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/layout version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/layout version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >layout.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index e5290c50a208..136ba9053c37 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -164,10 +164,10 @@ listctrl$(EXEEXT): $(LISTCTRL_OBJECTS) $(__listctrl___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.listctrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/listctrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/listctrl/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/listctrl version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/listctrl version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >listctrl.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index 8a6846b916dd..0aa62f270fda 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -164,10 +164,10 @@ mdi$(EXEEXT): $(MDI_OBJECTS) $(__mdi___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.mdi/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/mdi/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/mdi/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mdi version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mdi version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >mdi.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index e455602a1591..61d5b23c98e5 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -171,10 +171,10 @@ mediaplayer$(EXEEXT): $(MEDIAPLAYER_OBJECTS) $(__mediaplayer___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.mediaplayer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/mediaplayer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/mediaplayer/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mediaplayer version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mediaplayer version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >mediaplayer.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index 7bfd94da273b..51ea78dad82e 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -164,10 +164,10 @@ memcheck$(EXEEXT): $(MEMCHECK_OBJECTS) $(__memcheck___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.memcheck/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/memcheck/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/memcheck/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/memcheck version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/memcheck version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >memcheck.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index 5596d0567d54..fa06bbe80009 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -164,10 +164,10 @@ menu$(EXEEXT): $(MENU_OBJECTS) $(__menu___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.menu/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/menu/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/menu/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/menu version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/menu version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >menu.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 4bd7eac690ae..63b4ac70fa52 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.7, (c) 2005-2024 wxWidgets + $(PRODUCT_NAME) version 3.2.7, (c) 2005-2025 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.7, (c) 2005-2024 wxWidgets + 3.2.7, (c) 2005-2025 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType @@ -25,7 +25,7 @@ CFBundleVersion 3.2.7 NSHumanReadableCopyright - Copyright 2005-2024 wxWidgets + Copyright 2005-2025 wxWidgets NSPrincipalClass wxNSApplication LSMinimumSystemVersion diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index 71c455b47437..a9afef3109b5 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -164,10 +164,10 @@ minimal$(EXEEXT): $(MINIMAL_OBJECTS) $(__minimal___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.minimal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/minimal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/minimal/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/minimal version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/minimal version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >minimal.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index 72cd0cb92da8..c0e9389b350e 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -164,10 +164,10 @@ nativdlg$(EXEEXT): $(NATIVDLG_OBJECTS) $(__nativdlg___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.nativdlg/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/nativdlg/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/nativdlg/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nativdlg version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nativdlg version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >nativdlg.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index 6e84263038f8..9618553c953e 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -167,10 +167,10 @@ notebook$(EXEEXT): $(NOTEBOOK_OBJECTS) $(__notebook___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.notebook/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/notebook/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/notebook/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/notebook version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/notebook version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >notebook.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index 57a4d823d65b..b41a20ed8a6a 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -164,10 +164,10 @@ oleauto$(EXEEXT): $(OLEAUTO_OBJECTS) $(__oleauto___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.oleauto/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/oleauto/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/oleauto/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/oleauto version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/oleauto version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >oleauto.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index dc8bd5987051..6afc4f6bd39b 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -167,10 +167,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.cube/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/cube/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/cube/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/cube version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/cube version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >cube.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index 41707ee3096c..c11cd215848b 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -168,10 +168,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.isosurf/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/isosurf/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/isosurf/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/isosurf version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/isosurf version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >isosurf.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index 4ce72cc5f479..2a34a8e241f1 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -179,10 +179,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.penguin/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/penguin/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/penguin/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/penguin version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/penguin version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >penguin.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index 6977826ad152..c76c601cd8c8 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -171,10 +171,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.pyramid/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/pyramid/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/pyramid/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/pyramid version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/pyramid version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >pyramid.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index 611f60345345..6184b257f9cb 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -164,10 +164,10 @@ ownerdrw$(EXEEXT): $(OWNERDRW_OBJECTS) $(__ownerdrw___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ownerdrw/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ownerdrw/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ownerdrw/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ownerdrw version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ownerdrw version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ownerdrw.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index 9f40dc3d2a6b..33c28d50a7bb 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -164,10 +164,10 @@ popup$(EXEEXT): $(POPUP_OBJECTS) $(__popup___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.popup/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/popup/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/popup/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/popup version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/popup version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >popup.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index f8b543e31dcc..1d9a16989a69 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -164,10 +164,10 @@ power$(EXEEXT): $(POWER_OBJECTS) $(__power___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.power/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/power/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/power/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/power version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/power version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >power.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index ab71cfeaa992..279372713c94 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -167,10 +167,10 @@ preferences$(EXEEXT): $(PREFERENCES_OBJECTS) $(__preferences___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.preferences/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/preferences/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/preferences/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/preferences version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/preferences version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >preferences.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index 2e40db6ea604..a3500ceb862e 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -164,10 +164,10 @@ printing$(EXEEXT): $(PRINTING_OBJECTS) $(__printing___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.printing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/printing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/printing/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/printing version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/printing version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >printing.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index 12778afe6fcf..131035058e8b 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -170,10 +170,10 @@ propgrid$(EXEEXT): $(PROPGRID_OBJECTS) $(__propgrid___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.propgrid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/propgrid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/propgrid/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/propgrid version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/propgrid version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >propgrid.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index df907ee12735..98f04d5c9588 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -164,10 +164,10 @@ regtest$(EXEEXT): $(REGTEST_OBJECTS) $(__regtest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.regtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/regtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/regtest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/regtest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/regtest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >regtest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index b2aebfc9151b..8bc5f32e6a9f 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -197,10 +197,10 @@ render$(EXEEXT): $(RENDER_OBJECTS) $(__render___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.render/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/render/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/render/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/render version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/render version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >render.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/ribbon/Makefile.in b/samples/ribbon/Makefile.in index 332029a9bbf2..6f1fcd388324 100644 --- a/samples/ribbon/Makefile.in +++ b/samples/ribbon/Makefile.in @@ -167,10 +167,10 @@ ribbon$(EXEEXT): $(RIBBON_OBJECTS) $(__ribbon___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ribbon/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ribbon/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ribbon/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ribbon version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ribbon version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ribbon.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/richtext/Makefile.in b/samples/richtext/Makefile.in index 7022ebfc3d86..4d7ea8f17ea7 100644 --- a/samples/richtext/Makefile.in +++ b/samples/richtext/Makefile.in @@ -174,10 +174,10 @@ richtext$(EXEEXT): $(RICHTEXT_OBJECTS) $(__richtext___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.richtext/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/richtext/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/richtext/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/richtext version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/richtext version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >richtext.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in index 2e8ab03155e3..6e3375cb4003 100644 --- a/samples/sashtest/Makefile.in +++ b/samples/sashtest/Makefile.in @@ -164,10 +164,10 @@ sashtest$(EXEEXT): $(SASHTEST_OBJECTS) $(__sashtest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.sashtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/sashtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/sashtest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sashtest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sashtest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >sashtest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/scroll/Makefile.in b/samples/scroll/Makefile.in index 72d8c009a249..4e7e5ec03eba 100644 --- a/samples/scroll/Makefile.in +++ b/samples/scroll/Makefile.in @@ -164,10 +164,10 @@ scroll$(EXEEXT): $(SCROLL_OBJECTS) $(__scroll___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.scroll/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/scroll/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/scroll/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/scroll version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/scroll version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >scroll.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/shaped/Makefile.in b/samples/shaped/Makefile.in index 2e1b627a9bce..de177ebce058 100644 --- a/samples/shaped/Makefile.in +++ b/samples/shaped/Makefile.in @@ -164,10 +164,10 @@ shaped$(EXEEXT): $(SHAPED_OBJECTS) $(__shaped___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.shaped/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/shaped/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/shaped/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/shaped version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/shaped version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >shaped.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/sockets/Makefile.in b/samples/sockets/Makefile.in index 2d998af4d86d..ffbd2464a68f 100644 --- a/samples/sockets/Makefile.in +++ b/samples/sockets/Makefile.in @@ -211,10 +211,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.client/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/client/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/client/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/client version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/client version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >client.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -242,10 +242,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.server/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/server/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/server/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/server version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/server version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >server.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/samples/sound/Makefile.in b/samples/sound/Makefile.in index 36e1eed47449..f86aa169e919 100644 --- a/samples/sound/Makefile.in +++ b/samples/sound/Makefile.in @@ -164,10 +164,10 @@ sound$(EXEEXT): $(SOUND_OBJECTS) $(__sound___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.sound/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/sound/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/sound/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sound version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sound version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >sound.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/splash/Makefile.in b/samples/splash/Makefile.in index 50136cdfba85..20db59c853fa 100644 --- a/samples/splash/Makefile.in +++ b/samples/splash/Makefile.in @@ -168,10 +168,10 @@ splash$(EXEEXT): $(SPLASH_OBJECTS) $(__splash___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.splash/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/splash/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/splash/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splash version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splash version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >splash.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index b4411bcf6b64..54645f68e271 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -164,10 +164,10 @@ splitter$(EXEEXT): $(SPLITTER_OBJECTS) $(__splitter___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.splitter/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/splitter/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/splitter/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splitter version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splitter version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >splitter.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/statbar/Makefile.in b/samples/statbar/Makefile.in index b2024f5e5803..8dff2dc704d9 100644 --- a/samples/statbar/Makefile.in +++ b/samples/statbar/Makefile.in @@ -164,10 +164,10 @@ statbar$(EXEEXT): $(STATBAR_OBJECTS) $(__statbar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.statbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/statbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/statbar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/statbar version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/statbar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >statbar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index 57cf36b21374..73448d8645ba 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -170,10 +170,10 @@ stctest$(EXEEXT): $(STCTEST_OBJECTS) $(__stctest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.stctest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/stctest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/stctest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/stctest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/stctest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >stctest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index 124fb42e33d1..885a3ddfa62b 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -164,10 +164,10 @@ svgtest$(EXEEXT): $(SVGTEST_OBJECTS) $(__svgtest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.svgtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/svgtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/svgtest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/svgtest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/svgtest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >svgtest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/taborder/Makefile.in b/samples/taborder/Makefile.in index 3d6c3607db9b..88696ab625b7 100644 --- a/samples/taborder/Makefile.in +++ b/samples/taborder/Makefile.in @@ -164,10 +164,10 @@ taborder$(EXEEXT): $(TABORDER_OBJECTS) $(__taborder___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.taborder/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/taborder/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/taborder/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taborder version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taborder version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >taborder.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/taskbar/Makefile.in b/samples/taskbar/Makefile.in index 8f3e20546cc3..d9f8d5892a5a 100644 --- a/samples/taskbar/Makefile.in +++ b/samples/taskbar/Makefile.in @@ -164,10 +164,10 @@ taskbar$(EXEEXT): $(TASKBAR_OBJECTS) $(__taskbar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.taskbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/taskbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/taskbar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbar version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >taskbar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/taskbarbutton/Makefile.in b/samples/taskbarbutton/Makefile.in index f08c60e465cf..ca189ffb387f 100644 --- a/samples/taskbarbutton/Makefile.in +++ b/samples/taskbarbutton/Makefile.in @@ -171,10 +171,10 @@ taskbarbutton$(EXEEXT): $(TASKBARBUTTON_OBJECTS) $(__taskbarbutton___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.taskbarbutton/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/taskbarbutton/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/taskbarbutton/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbarbutton version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbarbutton version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >taskbarbutton.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in index dbf14f3cd1d2..b054db7538d6 100644 --- a/samples/text/Makefile.in +++ b/samples/text/Makefile.in @@ -164,10 +164,10 @@ text$(EXEEXT): $(TEXT_OBJECTS) $(__text___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.text/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/text/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/text/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/text version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/text version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >text.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in index 5771ab60623a..b0394fc13525 100644 --- a/samples/thread/Makefile.in +++ b/samples/thread/Makefile.in @@ -164,10 +164,10 @@ thread$(EXEEXT): $(THREAD_OBJECTS) $(__thread___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.thread/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/thread/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/thread/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/thread version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/thread version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >thread.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in index 2ab7962b5f0e..2de3547f191c 100644 --- a/samples/toolbar/Makefile.in +++ b/samples/toolbar/Makefile.in @@ -164,10 +164,10 @@ toolbar$(EXEEXT): $(TOOLBAR_OBJECTS) $(__toolbar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.toolbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/toolbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/toolbar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/toolbar version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/toolbar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >toolbar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in index aaa96f214696..e0a15f9de213 100644 --- a/samples/treectrl/Makefile.in +++ b/samples/treectrl/Makefile.in @@ -164,10 +164,10 @@ treectrl$(EXEEXT): $(TREECTRL_OBJECTS) $(__treectrl___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.treectrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/treectrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/treectrl/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treectrl version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treectrl version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >treectrl.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/treelist/Makefile.in b/samples/treelist/Makefile.in index 5580f923337c..a8780c237129 100644 --- a/samples/treelist/Makefile.in +++ b/samples/treelist/Makefile.in @@ -164,10 +164,10 @@ treelist$(EXEEXT): $(TREELIST_OBJECTS) $(__treelist___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.treelist/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/treelist/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/treelist/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treelist version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treelist version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >treelist.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in index b8619ab8c961..ceec1351e8ac 100644 --- a/samples/typetest/Makefile.in +++ b/samples/typetest/Makefile.in @@ -164,10 +164,10 @@ typetest$(EXEEXT): $(TYPETEST_OBJECTS) $(__typetest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.typetest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/typetest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/typetest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/typetest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/typetest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >typetest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/uiaction/Makefile.in b/samples/uiaction/Makefile.in index 9be79e226774..15629f2aed83 100644 --- a/samples/uiaction/Makefile.in +++ b/samples/uiaction/Makefile.in @@ -164,10 +164,10 @@ uiaction$(EXEEXT): $(UIACTION_OBJECTS) $(__uiaction___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.uiaction/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/uiaction/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/uiaction/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/uiaction version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/uiaction version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >uiaction.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in index a459e55ae6d1..ac8241a10c8e 100644 --- a/samples/validate/Makefile.in +++ b/samples/validate/Makefile.in @@ -164,10 +164,10 @@ validate$(EXEEXT): $(VALIDATE_OBJECTS) $(__validate___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.validate/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/validate/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/validate/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/validate version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/validate version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >validate.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/vscroll/Makefile.in b/samples/vscroll/Makefile.in index e6ff7e4c54d9..bbb7e2be8f5b 100644 --- a/samples/vscroll/Makefile.in +++ b/samples/vscroll/Makefile.in @@ -164,10 +164,10 @@ vstest$(EXEEXT): $(VSTEST_OBJECTS) $(__vstest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.vstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/vstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/vstest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/vstest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/vstest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >vstest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/webrequest/Makefile.in b/samples/webrequest/Makefile.in index 1b459a9f04bb..147dc32d1383 100644 --- a/samples/webrequest/Makefile.in +++ b/samples/webrequest/Makefile.in @@ -167,10 +167,10 @@ webrequest$(EXEEXT): $(WEBREQUEST_OBJECTS) $(__webrequest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.webrequest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/webrequest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/webrequest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webrequest version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webrequest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >webrequest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/webview/Makefile.in b/samples/webview/Makefile.in index 04f90d6c237a..caf0dea73030 100644 --- a/samples/webview/Makefile.in +++ b/samples/webview/Makefile.in @@ -172,10 +172,10 @@ webview$(EXEEXT): $(WEBVIEW_OBJECTS) $(__webview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.webview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/webview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/webview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webview version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >webview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index 5336f26988fb..c1623a0ebcb9 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -203,10 +203,10 @@ widgets$(EXEEXT): $(WIDGETS_OBJECTS) $(__widgets___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.widgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/widgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/widgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widgets version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widgets version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >widgets.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/wizard/Makefile.in b/samples/wizard/Makefile.in index 6ad3f4bc025b..0819bd52c173 100644 --- a/samples/wizard/Makefile.in +++ b/samples/wizard/Makefile.in @@ -164,10 +164,10 @@ wizard$(EXEEXT): $(WIZARD_OBJECTS) $(__wizard___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wizard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wizard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wizard/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wizard version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wizard version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wizard.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/wrapsizer/Makefile.in b/samples/wrapsizer/Makefile.in index 517bbe74fa5f..24580f50989f 100644 --- a/samples/wrapsizer/Makefile.in +++ b/samples/wrapsizer/Makefile.in @@ -164,10 +164,10 @@ wrapsizer$(EXEEXT): $(WRAPSIZER_OBJECTS) $(__wrapsizer___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wrapsizer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wrapsizer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wrapsizer/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wrapsizer version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wrapsizer version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wrapsizer.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index 767ac557d971..89101cfee161 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -184,10 +184,10 @@ xrcdemo$(EXEEXT): $(XRCDEMO_OBJECTS) $(__xrcdemo___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.xrcdemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/xrcdemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/xrcdemo/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xrcdemo version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xrcdemo version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >xrcdemo.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/xti/Makefile.in b/samples/xti/Makefile.in index f13afb9f4502..53dd68ad7a4d 100644 --- a/samples/xti/Makefile.in +++ b/samples/xti/Makefile.in @@ -169,10 +169,10 @@ xti$(EXEEXT): $(XTI_OBJECTS) $(__xti___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.xti/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/xti/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/xti/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xti version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xti version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >xti.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index db679cf13626..b7ad4e444324 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -1445,7 +1445,7 @@ wxVersionInfo wxGetLibraryVersionInfo() wxMINOR_VERSION, wxRELEASE_NUMBER, msg, - wxS("Copyright (c) 1992-2024 wxWidgets team")); + wxS("Copyright (c) 1992-2025 wxWidgets team")); } void wxInfoMessageBox(wxWindow* parent) diff --git a/src/msw/version.rc b/src/msw/version.rc index 4a5390f124db..ca11aa6197e7 100644 --- a/src/msw/version.rc +++ b/src/msw/version.rc @@ -92,7 +92,7 @@ BEGIN VALUE "FileDescription", "wxWidgets " WXLIBDESC " library\0" VALUE "FileVersion", wxVERSION_NUM_DOT_STRING "\0" VALUE "InternalName", wxSTRINGIZE(WXDLLNAME) "\0" - VALUE "LegalCopyright", L"Copyright \xa9 1992-2024 wxWidgets development team\0" + VALUE "LegalCopyright", L"Copyright \xa9 1992-2025 wxWidgets development team\0" VALUE "OriginalFilename", wxSTRINGIZE(WXDLLNAME) ".dll\0" VALUE "ProductName", "wxWidgets\0" VALUE "ProductVersion", wxVERSION_NUM_DOT_STRING "\0" diff --git a/tests/Makefile.in b/tests/Makefile.in index 285e48002506..a6b9ea02ed22 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -497,10 +497,10 @@ test$(EXEEXT): $(TEST_OBJECTS) @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.test_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/test_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/test_gui/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_gui version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_gui version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >test_gui.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -530,10 +530,10 @@ test$(EXEEXT): $(TEST_OBJECTS) @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.test_allheaders/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/test_allheaders/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/test_allheaders/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_allheaders version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_allheaders version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >test_allheaders.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in index 69406bc291fa..c9dd744d58e7 100644 --- a/tests/benchmarks/Makefile.in +++ b/tests/benchmarks/Makefile.in @@ -229,10 +229,10 @@ data: @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.bench_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/bench_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/bench_gui/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_gui version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_gui version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >bench_gui.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -259,10 +259,10 @@ data: @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.bench_graphics/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/bench_graphics/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/bench_graphics/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_graphics version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_graphics version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >bench_graphics.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/utils/helpview/src/Makefile.in b/utils/helpview/src/Makefile.in index 9d362517eb9b..1bf6028f902e 100644 --- a/utils/helpview/src/Makefile.in +++ b/utils/helpview/src/Makefile.in @@ -175,10 +175,10 @@ helpview$(EXEEXT): $(HELPVIEW_OBJECTS) $(__helpview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/helpview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >helpview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/utils/screenshotgen/src/Makefile.in b/utils/screenshotgen/src/Makefile.in index d2d88cecb21c..82f94877e6e3 100644 --- a/utils/screenshotgen/src/Makefile.in +++ b/utils/screenshotgen/src/Makefile.in @@ -192,10 +192,10 @@ screenshotgen$(EXEEXT): $(SCREENSHOTGEN_OBJECTS) $(__screenshotgen___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.screenshotgen/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/screenshotgen/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/screenshotgen/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/screenshotgen version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/screenshotgen version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >screenshotgen.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ From 7d43d6b9c61a4057ecc7447b7241fc16060325a4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 21 Aug 2024 18:47:21 +0200 Subject: [PATCH 057/416] Allow setting the exit code when returning false from OnInit() Unfortunately returning false from the (overridden) wxApp::OnInit() has a side effect of exiting the application with inconsistent error code: 255 under Unix but 127 under MSW with MSVC. While changing the default exit code in this case is probably a bad idea because there are surely people relying on the current values, at least allow changing it by explicitly calling the new SetErrorExitCode() function. Unlike the version in master, this commit uses a global variable for the exit code value to avoid changing the ABI. (cherry picked from commit e2de7dc625d66cc1b3d336868a82c45ab8fa516f) --- docs/changes.txt | 1 + include/wx/app.h | 6 ++++++ interface/wx/app.h | 26 +++++++++++++++++++++++++- src/common/appbase.cpp | 14 ++++++++++++++ src/common/init.cpp | 2 +- version-script.in | 8 ++++++++ 6 files changed, 55 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 7d0d1fdc6d05..920a5f9a7435 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -260,6 +260,7 @@ All: - Fix compilation with clang 19 (Lauri Nurmi, #24922). - Fix crash in wxWebRequestCURL when connection was refused (#24885). - Fix build with libc++ v19 (#24959). +- Add wxApp::SetErrorExitCode() to customize exit code on initialization error. All (GUI): diff --git a/include/wx/app.h b/include/wx/app.h index a2ee46763637..7a134c5b8647 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -136,6 +136,12 @@ class WXDLLIMPEXP_BASE wxAppConsoleBase : public wxEvtHandler, // Called from wxExit() function, should terminate the application a.s.a.p. virtual void Exit(); + // Allows to set a custom process exit code if OnInit() returns false. +#if wxABI_VERSION >= 30207 + void SetErrorExitCode(int code); + int GetErrorExitCode() const; +#endif // wxABI_VERSION >= 3.2.7 + // application info: name, description, vendor // ------------------------------------------- diff --git a/interface/wx/app.h b/interface/wx/app.h index aab9429752e2..7b80f7b505f8 100644 --- a/interface/wx/app.h +++ b/interface/wx/app.h @@ -393,7 +393,8 @@ class wxAppConsole : public wxEvtHandler, OnInit(). Return @true to continue processing, @false to exit the application - immediately. + immediately. In the latter case, you may want to call SetErrorExitCode() + to set the process exit code to use when the application terminates. */ virtual bool OnInit(); @@ -761,6 +762,29 @@ class wxAppConsole : public wxEvtHandler, */ void SetCLocale(); + /** + Sets the error code to use in case of exit on error. + + This function is mostly useful to customize the error code returned by + the application when it exits due to OnInit() returning @false and can + be called from OnInit() itself or other virtual functions called from + it, for example OnCmdLineError(). + + By default, the exit code depends on the compiler being used, e.g. it + is @c 255 with typical Unix compilers (gcc, clang) and @c 127 with + MSVC, so it is recommended to call this function to set a consistent + exit code, e.g. @c 2 which is a de facto standard exit code if command + line parsing fails. + + SetErrorExitCode() can be overridden by the application to perform + additional actions, but the overridden version should call the base + class version to update the value returned by GetErrorExitCode() and + actually used when exiting the application. + + @since 3.2.7 + */ + void SetErrorExitCode(int code); + /** Number of command line arguments (after environment-specific processing). */ diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index 87a3f970ba38..40154b15167a 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -264,6 +264,20 @@ void wxAppConsoleBase::CleanUp() wxDELETE(m_mainLoop); } +// The error code to return if OnInit() fails: this is a wxApp member variable +// in 3.3, but this would break ABI in 3.2, so use a global for it instead. +static int gs_errorExitCode = -1; + +void wxAppConsoleBase::SetErrorExitCode(int code) +{ + gs_errorExitCode = code; +} + +int wxAppConsoleBase::GetErrorExitCode() const +{ + return gs_errorExitCode; +} + // ---------------------------------------------------------------------------- // OnXXX() callbacks // ---------------------------------------------------------------------------- diff --git a/src/common/init.cpp b/src/common/init.cpp index bf01c28a5bed..701447951fb6 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -481,7 +481,7 @@ int wxEntryReal(int& argc, wxChar **argv) if ( !wxTheApp->CallOnInit() ) { // don't call OnExit() if OnInit() failed - return -1; + return wxTheApp->GetErrorExitCode(); } // ensure that OnExit() is called if OnInit() had succeeded diff --git a/version-script.in b/version-script.in index 8cc5e7cd69ff..018ac7df1eb9 100644 --- a/version-script.in +++ b/version-script.in @@ -26,6 +26,14 @@ # build/bakefiles/version.bkl to indicate that new APIs have been added and # rebake! +# public symbols added in 3.2.7 (please keep in alphabetical order): +@WX_VERSION_TAG@.7 { + extern "C++" { + "wxAppConsoleBase::SetErrorExitCode"; + "wxAppConsoleBase::GetErrorExitCode"; + }; +}; + # public symbols added in 3.2.6 (please keep in alphabetical order): @WX_VERSION_TAG@.6 { extern "C++" { From ed7defadd299a649f08af2436db193d7bd5a4180 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 1 Jan 2025 23:55:50 +0100 Subject: [PATCH 058/416] Fix multiple errors in the version script Embarrassingly, almost none of the entries in the version script were taken into account due to the function specifications not matching anything in the generated library because they either omitted the function signature entirely (which is apparently not allowed in extern "C++" blocks) or specified it with the wrong "const" placement: "West const" convention must be used here to match anything. Fix the signatures to make things really work. Note that some of them still don't have any effect because they apply to inline functions, but it seems harmless to keep them. --- version-script.in | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/version-script.in b/version-script.in index 018ac7df1eb9..8f7468c90ae6 100644 --- a/version-script.in +++ b/version-script.in @@ -29,38 +29,39 @@ # public symbols added in 3.2.7 (please keep in alphabetical order): @WX_VERSION_TAG@.7 { extern "C++" { - "wxAppConsoleBase::SetErrorExitCode"; - "wxAppConsoleBase::GetErrorExitCode"; + "wxAppConsoleBase::SetErrorExitCode(int)"; + "wxAppConsoleBase::GetErrorExitCode() const"; }; }; # public symbols added in 3.2.6 (please keep in alphabetical order): @WX_VERSION_TAG@.6 { extern "C++" { - "AddAvailableCatalog(const wxString&, wxLanguage)"; - "wxEventTableEntry::wxEventTableEntry(const wxEventTableEntry&)"; - "wxSystemSettingsNative::SelectLightDark"; + "wxTranslations::AddAvailableCatalog(wxString const&, wxLanguage)"; + "wxEventTableEntry::wxEventTableEntry(wxEventTableEntry const&)"; + "wxSystemSettingsNative::SelectLightDark(wxColour, wxColour)"; }; }; # public symbols added in 3.2.3 (please keep in alphabetical order): @WX_VERSION_TAG@.3 { extern "C++" { - "wxGLCanvasEGL::CreateWaylandSubsurface"; - "wxGLCanvasEGL::DestroyWaylandSubsurface"; - "wxTranslations::AddAvailableCatalog"; - "wxTranslations::GetBestAvailableTranslation"; - "wxUILocale::GetMonthName"; - "wxUILocale::GetWeekDayName"; + "wxGLCanvasEGL::CreateWaylandSubsurface()"; + "wxGLCanvasEGL::DestroyWaylandSubsurface()"; + "wxTranslations::AddAvailableCatalog(wxString const&)"; + "wxTranslations::GetBestAvailableTranslation(wxString const&)"; + "wxUILocale::GetMonthName(wxDateTime::Month, wxDateTime::NameFlags) const"; + "wxUILocale::GetWeekDayName(wxDateTime::WeekDay, wxDateTime::NameFlags) const"; }; }; # public symbols added in 3.2.2 (please keep in alphabetical order): @WX_VERSION_TAG@.2 { extern "C++" { - "wxUILocale::GetSystemLocaleId"; - "wxWithImages::GetImageLogicalSize"; - "wxWithImages::GetImageBitmapFor"; + "wxUILocale::GetSystemLocaleId()"; + "wxWithImages::GetImageLogicalSize(wxWindow const*, int)"; + "wxWithImages::GetImageLogicalSize(wxWindow const*, int, int&, int&)"; + "wxWithImages::GetImageBitmapFor(wxWindow const*, int)"; }; }; @@ -68,7 +69,7 @@ @WX_VERSION_TAG@.1 { extern "C++" { "wxApp::GTKAllowDiagnosticsControl()"; - "wxFileDialog::AddShortcut(const wxString&, int)"; + "wxFileDialogBase::AddShortcut(wxString const&, int)"; }; }; From faca5106d15d3acce3053749c05d374092655d51 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 6 Jan 2025 22:18:10 +0100 Subject: [PATCH 059/416] Use PCRE2 function for counting the number of captures Don't try parsing the regex ourselves, which is not just slower but also more buggy: in particular, we didn't handle regexes with trailing backslash correctly and could keep reading after the end of the buffer in this case. See #25040. (cherry picked from commit c55ba785d3a86b9f15e30a59ab421128c6cfcf0d) --- docs/changes.txt | 1 + src/common/regex.cpp | 32 +------------------------------- tests/regex/wxregextest.cpp | 3 +++ 3 files changed, 5 insertions(+), 31 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 920a5f9a7435..78aac30acfdd 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -261,6 +261,7 @@ All: - Fix crash in wxWebRequestCURL when connection was refused (#24885). - Fix build with libc++ v19 (#24959). - Add wxApp::SetErrorExitCode() to customize exit code on initialization error. +- Fix buffer read overflow when compiling RE ending with backslash (#25040). All (GUI): diff --git a/src/common/regex.cpp b/src/common/regex.cpp index c30556e5fe4a..033b7a40c800 100644 --- a/src/common/regex.cpp +++ b/src/common/regex.cpp @@ -1109,37 +1109,7 @@ bool wxRegExImpl::Compile(wxString expr, int flags) { // we will alloc the array later (only if really needed) but count // the number of sub-expressions in the regex right now - - // there is always one for the whole expression - m_nMatches = 1; - - // and some more for bracketed subexperessions - for ( const wxChar *cptr = expr.c_str(); *cptr; cptr++ ) - { - if ( *cptr == wxT('\\') ) - { - // in basic RE syntax groups are inside \(...\) - if ( *++cptr == wxT('(') && (flags & wxRE_BASIC) ) - { - m_nMatches++; - } - } - else if ( *cptr == wxT('(') && !(flags & wxRE_BASIC) ) - { - // we know that the previous character is not an unquoted - // backslash because it would have been eaten above, so we - // have a bare '(' and this indicates a group start for the - // extended syntax. '(?' is used for extensions by perl- - // like REs (e.g. advanced), and is not valid for POSIX - // extended, so ignore them always. - if ( cptr[1] != wxT('?') -#if wxUSE_PCRE - && cptr[1] != wxT('*') -#endif - ) - m_nMatches++; - } - } + m_nMatches = pcre2_get_ovector_count(m_RegEx.match_data); } m_isCompiled = true; diff --git a/tests/regex/wxregextest.cpp b/tests/regex/wxregextest.cpp index 291ed7afb1ba..0ce1a27394e5 100644 --- a/tests/regex/wxregextest.cpp +++ b/tests/regex/wxregextest.cpp @@ -65,6 +65,9 @@ TEST_CASE("wxRegEx::Compile", "[regex][compile]") CHECK ( re.Compile("foo*") ); CHECK ( re.Compile("foo+") ); CHECK ( re.Compile("foo?") ); + + // Valid even if unusual, used to trigger a bug in wxRegEx::Compile(). + CHECK ( re.Compile("\\0\\Q\\") ); } static void From 2b4bfeef66142801fbee5c1eaa0e4bb1b43f6a28 Mon Sep 17 00:00:00 2001 From: PB Date: Fri, 3 Jan 2025 16:49:54 +0100 Subject: [PATCH 060/416] Improve window sizing documentation Fix the flag name in wxSizerFlags::Shaped() description. Add a reference to Windows Sizing Overview to Window Layout page and Sizers Overview. Add a reference to Sizers Overview to Window Sizing Overview. Closes #25044. (cherry picked from commit e0b055e53bbc5da9328844bb0fb2c3ac614d813f) --- docs/doxygen/groups/class_winlayout.h | 2 +- docs/doxygen/overviews/sizer.h | 2 +- docs/doxygen/overviews/windowsizing.h | 2 ++ interface/wx/sizer.h | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/doxygen/groups/class_winlayout.h b/docs/doxygen/groups/class_winlayout.h index da1a57cbb94b..b993141b8430 100644 --- a/docs/doxygen/groups/class_winlayout.h +++ b/docs/doxygen/groups/class_winlayout.h @@ -15,7 +15,7 @@ classes known as "sizers". Sizers allow for flexible window positioning and sizes that can help with automatically handling localization differences, as well as making it easy to write user resizable windows. -Related Overviews: @ref overview_sizer +Related Overviews: @ref overview_sizer, @ref overview_windowsizing */ diff --git a/docs/doxygen/overviews/sizer.h b/docs/doxygen/overviews/sizer.h index 3d80689da055..7e4e1163548f 100644 --- a/docs/doxygen/overviews/sizer.h +++ b/docs/doxygen/overviews/sizer.h @@ -25,7 +25,7 @@ For information about the wxWidgets resource system, which can describe sizer-based dialogs, see the @ref overview_xrc. @see wxSizer, wxBoxSizer, wxStaticBoxSizer, wxStdDialogButtonSizer, wxWrapSizer, - wxGridSizer, wxFlexGridSizer, wxGridBagSizer + wxGridSizer, wxFlexGridSizer, wxGridBagSizer, @ref overview_windowsizing diff --git a/docs/doxygen/overviews/windowsizing.h b/docs/doxygen/overviews/windowsizing.h index 940e51b8da65..022b6dd74fa6 100644 --- a/docs/doxygen/overviews/windowsizing.h +++ b/docs/doxygen/overviews/windowsizing.h @@ -121,4 +121,6 @@ some simple explanations of things. the only child of the top-level window to cover its entire client area if there is no sizer associated with the window. Note that this only happens if there is exactly one child. + +See also @ref overview_sizer */ diff --git a/interface/wx/sizer.h b/interface/wx/sizer.h index d14a038a6054..0b4e934d624e 100644 --- a/interface/wx/sizer.h +++ b/interface/wx/sizer.h @@ -1611,7 +1611,7 @@ class wxSizerFlags wxSizerFlags& Right(); /** - Set the @c wx_SHAPED flag which indicates that the elements should + Sets the @c wxSHAPED flag which indicates that the elements should always keep the fixed width to height ratio equal to its original value. */ wxSizerFlags& Shaped(); From c7e658e1ffeb96fea3c3560593f31267c8e463c8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 24 Nov 2024 02:35:46 +0100 Subject: [PATCH 061/416] Keep object potentially used by libcurl alive until after cleanup It is apparently possible to curl_multi_cleanup() to generate callbacks that could try to use wxWebSessionCURL::m_socketPoller, so we can't destroy this object before performing the cleanup. Just postpone deleting it until immediately afterwards. See #24969. (cherry picked from commit fef7f793da0b24a8627d0d7e566f55d86dcbe8f6) --- docs/changes.txt | 1 + src/common/webrequest_curl.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 78aac30acfdd..e16151ee2a42 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All: - Fix build with libc++ v19 (#24959). - Add wxApp::SetErrorExitCode() to customize exit code on initialization error. - Fix buffer read overflow when compiling RE ending with backslash (#25040). +- Fix crash in wxWebRequest::Close() with recent libcurl (#24969). All (GUI): diff --git a/src/common/webrequest_curl.cpp b/src/common/webrequest_curl.cpp index 64650ab6b45a..7dfe4c6bc31d 100644 --- a/src/common/webrequest_curl.cpp +++ b/src/common/webrequest_curl.cpp @@ -960,11 +960,13 @@ wxWebSessionCURL::wxWebSessionCURL() : wxWebSessionCURL::~wxWebSessionCURL() { - delete m_socketPoller; - if ( m_handle ) curl_multi_cleanup(m_handle); + // Note that this object could be used by curl_multi_cleanup(), so we can + // only destroy it after finishing with using libcurl. + delete m_socketPoller; + // Global CURL cleanup if this is the last session --ms_activeSessions; if ( ms_activeSessions == 0 ) From 2dfff4d036f396d9a5282161101aec0562d15f2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Tue, 22 Oct 2024 19:17:13 +0200 Subject: [PATCH 062/416] Fully disassociate HWND in OnEndSession It is important to also remove the HWND from HWND-to-wxWindow mapping, because ~wxWindow won't do it after setting its HWND to null. Otherwise wxWndProc may crash trying to access a window that was already deleted. Closes #24903. (cherry picked from commit 09b6dad2ce647dec0867b020f2d687bfef862774) --- docs/changes.txt | 1 + src/msw/app.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index e16151ee2a42..60b3ca62657d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -284,6 +284,7 @@ wxMSW: - Fix background colour of owner-drawn wxListBox items (#24917). - Fix handling pending events without an event loop (Stefan Battmer, #18109). - Fix indent of imageless wxTreeCtrl in high DPI (taler21, #24941). +- Fix possible crash during session termination (#24903). wxOSX: diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 8d98e0c77ff6..f79a9c9b152d 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -845,7 +845,7 @@ void wxApp::OnEndSession(wxCloseEvent& WXUNUSED(event)) // destroyed: this will result in a leak of a HWND, of course, but who // cares when the process is being killed anyhow if ( !wxTopLevelWindows.empty() ) - wxTopLevelWindows[0]->SetHWND(0); + wxTopLevelWindows[0]->DissociateHandle(); // Destroy all the remaining TLWs before calling OnExit() to have the same // sequence of events in this case as in case of the normal shutdown, From 65a0ca1b7a1b053aee43db02287c84a736439326 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 18 Oct 2024 19:37:49 +0200 Subject: [PATCH 063/416] Run macOS CI builds using macos-14 GitHub image "macos-12" one is deprecated and will be removed soon. (cherry picked from commit 8d234aa5e9de1e63d80dc9d230b7b53678e64f41) --- .github/workflows/ci_cmake.yml | 8 ++++---- .github/workflows/ci_mac.yml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci_cmake.yml b/.github/workflows/ci_cmake.yml index 7c4839ea7e2c..6a8323e29b80 100644 --- a/.github/workflows/ci_cmake.yml +++ b/.github/workflows/ci_cmake.yml @@ -59,12 +59,12 @@ jobs: runner: ubuntu-22.04 cmake_generator: Unix Makefiles cmake_samples: ALL - - name: macOS 12 wxOSX - runner: macos-12 + - name: macOS 14 wxOSX + runner: macos-14 cmake_generator: Xcode cmake_defines: -DCMAKE_CXX_STANDARD=11 - - name: macOS 12 wxIOS - runner: macos-12 + - name: macOS 14 wxIOS + runner: macos-14 cmake_generator: Xcode cmake_defines: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_FIND_ROOT_PATH=/usr/local -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO cmake_samples: OFF diff --git a/.github/workflows/ci_mac.yml b/.github/workflows/ci_mac.yml index 5f2e444119c1..f202cf6658f5 100644 --- a/.github/workflows/ci_mac.yml +++ b/.github/workflows/ci_mac.yml @@ -99,12 +99,12 @@ jobs: runner: self-hosted arch: arm64 configure_flags: --with-cxx=14 --enable-universal_binary=arm64,x86_64 --disable-shared --disable-debug --enable-optimise - - name: wxMac macOS 12 - runner: macos-12 + - name: wxMac macOS 14 + runner: macos-14 arch: x86_64 configure_flags: --disable-sys-libs - name: wxiOS - runner: macos-12 + runner: macos-14 arch: x86_64 configure_flags: --with-osx_iphone --enable-monolithic --disable-sys-libs --host=i686-apple-darwin_sim --build=x86_64-apple-darwin17.7.0 xcode_sdk: iphonesimulator From c82cec80e2983fa5ad0045640b90572752900023 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Wed, 8 Jan 2025 03:05:24 +0100 Subject: [PATCH 064/416] Backport miscellaneous CMake improvements from master - Add more configuration options for CMake installation. - Only install the headers of the used platform/toolkit. - Fix some bugs and warnings. See #24792. (cherry picked from commit 4eae795f7dd88cd94925e0c3bf56bb796904fca8) --- CMakeLists.txt | 4 +-- build/cmake/functions.cmake | 55 ++++++++++++++++++++++++----- build/cmake/install.cmake | 23 +++++++++--- build/cmake/lib/CMakeLists.txt | 1 + build/cmake/lib/base/CMakeLists.txt | 10 ++++-- build/cmake/lib/core/CMakeLists.txt | 2 ++ build/cmake/lib/net/CMakeLists.txt | 2 +- build/cmake/locale.cmake | 36 +++++++++++++++++++ build/cmake/main.cmake | 3 ++ build/cmake/options.cmake | 14 ++++++++ build/cmake/setup.cmake | 2 +- build/cmake/toolkit.cmake | 2 +- docs/changes.txt | 1 + samples/minimal/CMakeLists.txt | 2 +- 14 files changed, 134 insertions(+), 23 deletions(-) create mode 100644 build/cmake/locale.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index d994ba3dba0e..d6a4b49bc233 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ # Licence: wxWindows licence ############################################################################# -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.0...3.31) if(NOT CMAKE_CONFIGURATION_TYPES) get_property(HAVE_MULTI_CONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) @@ -17,8 +17,6 @@ if(NOT CMAKE_CONFIGURATION_TYPES) endif() endif() -file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX) - # https://blog.kitware.com/cmake-and-the-default-build-type/ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(default_build_type "Debug") diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 72a34f0b4f04..874ace0431a6 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -21,6 +21,12 @@ else() endif() +# List of libraries added via wx_add_library() to use for wx-config +# and headers added via wx_append_sources() to use for install. +set(wxLIB_TARGETS) +set(wxINSTALL_HEADERS) + + # This function adds a list of headers to a variable while prepending # include/ to the path macro(wx_add_headers src_var) @@ -52,6 +58,14 @@ macro(wx_append_sources src_var source_base_name) endif() if(DEFINED ${source_base_name}_HDR) wx_add_headers(${src_var} ${${source_base_name}_HDR}) + + list(APPEND wxINSTALL_HEADERS ${${source_base_name}_HDR}) + set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) + endif() + + if(DEFINED ${source_base_name}_RSC) + list(APPEND wxINSTALL_HEADERS ${${source_base_name}_RSC}) + set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) endif() endmacro() @@ -411,8 +425,21 @@ function(wx_set_target_properties target_name) wx_set_common_target_properties(${target_name}) endfunction() -# List of libraries added via wx_add_library() to use for wx-config -set(wxLIB_TARGETS) +macro(wx_get_install_dir artifact default) + string(TOUPPER ${artifact} artifact_upper) + if(wxBUILD_INSTALL_${artifact_upper}_DIR) + set(${artifact}_dir "${wxBUILD_INSTALL_${artifact_upper}_DIR}") + else() + set(${artifact}_dir ${default}) + endif() + if(wxBUILD_INSTALL_PLATFORM_SUBDIR) + if(${artifact}_dir) + wx_string_append(${artifact}_dir ${GEN_EXPR_DIR}) + endif() + wx_string_append(${artifact}_dir "${wxPLATFORM_LIB_DIR}") + endif() +endmacro() + # Add a wxWidgets library # wx_add_library( [IS_BASE;IS_PLUGIN;IS_MONO] ...) @@ -456,17 +483,27 @@ macro(wx_add_library name) # Setup install if(MSYS OR CYGWIN) # configure puts the .dll in the bin directory - set(runtime_dir "bin") + set(runtime_default_dir "bin") else() - set(runtime_dir "lib") + set(runtime_default_dir "lib") endif() + + wx_get_install_dir(library "lib") + wx_get_install_dir(archive "lib") + wx_get_install_dir(runtime "${runtime_default_dir}") + wx_install(TARGETS ${name} EXPORT wxWidgetsTargets - LIBRARY DESTINATION "lib${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" - ARCHIVE DESTINATION "lib${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" - RUNTIME DESTINATION "${runtime_dir}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" + LIBRARY DESTINATION "${library_dir}" + ARCHIVE DESTINATION "${archive_dir}" + RUNTIME DESTINATION "${runtime_dir}" BUNDLE DESTINATION Applications/wxWidgets - ) + ) + + if(wxBUILD_SHARED AND MSVC AND wxBUILD_INSTALL_PDB) + wx_install(FILES $ DESTINATION "${runtime_dir}") + endif() + wx_target_enable_precomp(${name} "${wxSOURCE_DIR}/include/wx/wxprec.h") endif() endmacro() @@ -867,7 +904,7 @@ function(wx_add name group) ${wxOUTPUT_DIR}/${wxPLATFORM_LIB_DIR}/${data_dst}) endforeach() add_custom_command( - TARGET ${target_name} ${cmds} + TARGET ${target_name} POST_BUILD ${cmds} COMMENT "Copying ${target_name} data files...") endif() diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake index 384c6837b814..202d0541af24 100644 --- a/build/cmake/install.cmake +++ b/build/cmake/install.cmake @@ -12,13 +12,28 @@ if(NOT wxBUILD_INSTALL) endif() install(CODE "message(STATUS \"Installing: Headers...\")") -install( - DIRECTORY "${wxSOURCE_DIR}/include/wx" - DESTINATION "${wxINSTALL_INCLUDE_DIR}") + +foreach(header ${wxINSTALL_HEADERS}) + get_filename_component(path "${header}" PATH) + install( + FILES "${wxSOURCE_DIR}/include/${header}" + DESTINATION "${wxINSTALL_INCLUDE_DIR}/${path}" + ) +endforeach() + if(MSVC) install( DIRECTORY "${wxSOURCE_DIR}/include/msvc" - DESTINATION "${wxINSTALL_INCLUDE_DIR}") + DESTINATION "${wxINSTALL_INCLUDE_DIR}" + ) + install( + FILES "${wxSOURCE_DIR}/wxwidgets.props" + DESTINATION "." + ) + install( + FILES "${wxSOURCE_DIR}/build/msw/wx_setup.props" + DESTINATION "build/msw" + ) endif() # setup header and wx-config diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 4b40d7652e58..7633062e03a8 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -103,3 +103,4 @@ endif() # Propagate variable(s) to parent scope set(wxLIB_TARGETS ${wxLIB_TARGETS} PARENT_SCOPE) +set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) diff --git a/build/cmake/lib/base/CMakeLists.txt b/build/cmake/lib/base/CMakeLists.txt index d8c587994bbd..7f60e93f5273 100644 --- a/build/cmake/lib/base/CMakeLists.txt +++ b/build/cmake/lib/base/CMakeLists.txt @@ -14,9 +14,13 @@ if(WIN32) wx_append_sources(BASE_FILES BASE_WIN32) wx_append_sources(BASE_FILES BASE_AND_GUI_WIN32) elseif(APPLE) - wx_append_sources(BASE_FILES BASE_OSX_SHARED) - if(WXOSX_COCOA) - wx_append_sources(BASE_FILES BASE_AND_GUI_OSX_COCOA) + if(WXOSX_COCOA OR WXOSX_IPHONE) + wx_append_sources(BASE_FILES BASE_OSX_SHARED) + if(WXOSX_COCOA) + wx_append_sources(BASE_FILES BASE_AND_GUI_OSX_COCOA) + endif() + else() + wx_append_sources(BASE_FILES BASE_OSX_NOTWXMAC) endif() elseif(UNIX) wx_append_sources(BASE_FILES BASE_UNIX) diff --git a/build/cmake/lib/core/CMakeLists.txt b/build/cmake/lib/core/CMakeLists.txt index 8031cc37309b..7c4683a328ef 100644 --- a/build/cmake/lib/core/CMakeLists.txt +++ b/build/cmake/lib/core/CMakeLists.txt @@ -28,6 +28,7 @@ if(WXMSW) endif() elseif(WXGTK) if(WXGTK2) + set(GTK2_LOWLEVEL_HDR ${GTK_LOWLEVEL_HDR}) wx_append_sources(CORE_SRC GTK2_LOWLEVEL) wx_append_sources(CORE_SRC GTK2) else() @@ -47,6 +48,7 @@ elseif(WXOSX_COCOA) wx_append_sources(CORE_SRC OSX_COCOA) elseif(WXOSX_IPHONE) wx_append_sources(CORE_SRC OSX_LOWLEVEL) + wx_append_sources(CORE_SRC OSX_SHARED) wx_append_sources(CORE_SRC OSX_IPHONE) elseif(WXQT) wx_append_sources(CORE_SRC QT) diff --git a/build/cmake/lib/net/CMakeLists.txt b/build/cmake/lib/net/CMakeLists.txt index 169c46b8adaa..d24e83570cad 100644 --- a/build/cmake/lib/net/CMakeLists.txt +++ b/build/cmake/lib/net/CMakeLists.txt @@ -31,5 +31,5 @@ endif() if (wxUSE_WEBREQUEST_CURL) wx_lib_include_directories(wxnet ${CURL_INCLUDE_DIRS}) - wx_lib_link_libraries(wxnet PRIVATE ${CURL_LIBRARIES}) + wx_lib_link_libraries(wxnet PUBLIC ${CURL_LIBRARIES}) endif() diff --git a/build/cmake/locale.cmake b/build/cmake/locale.cmake new file mode 100644 index 000000000000..1bac4c2fb3d1 --- /dev/null +++ b/build/cmake/locale.cmake @@ -0,0 +1,36 @@ +if(wxBUILD_LOCALES STREQUAL "AUTO") + find_package(Gettext QUIET) +elseif(wxBUILD_LOCALES) + find_package(Gettext REQUIRED) +endif() + +mark_as_advanced(GETTEXT_MSGMERGE_EXECUTABLE) +mark_as_advanced(GETTEXT_MSGFMT_EXECUTABLE) + +if(NOT GETTEXT_FOUND OR wxBUILD_LOCALES STREQUAL "OFF") + return() +endif() + +# list and process the po files +file(GLOB _po_files "${wxSOURCE_DIR}/locale/*.po") +foreach(_po_file ${_po_files}) + get_filename_component(name "${_po_file}" NAME) + string(REGEX REPLACE "\\.[^.]*$" "" lang ${name}) + + gettext_process_po_files(${lang} ALL PO_FILES "${_po_file}") + + wx_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${lang}.gmo" + DESTINATION "share/locale/${lang}/LC_MESSAGES" + RENAME "wxstd-${wxMAJOR_VERSION}.${wxMINOR_VERSION}.mo" + ) +endforeach() + +# put all pofiles targets in a group to not clutter visual studio +set(base_name "pofiles") +set(target_index 0) +set(target_name ${base_name}) +while(TARGET ${target_name}) + set_target_properties(${target_name} PROPERTIES FOLDER "Locales") + math(EXPR target_index "${target_index}+1") + set(target_name "${base_name}_${target_index}") +endwhile() diff --git a/build/cmake/main.cmake b/build/cmake/main.cmake index 9783d4563c0c..d40423ba91dd 100644 --- a/build/cmake/main.cmake +++ b/build/cmake/main.cmake @@ -9,6 +9,8 @@ list(APPEND CMAKE_MODULE_PATH "${wxSOURCE_DIR}/build/cmake/modules") +file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX) + include(build/cmake/files.cmake) # Files list include(build/cmake/source_groups.cmake) # Source group definitions include(build/cmake/functions.cmake) # wxWidgets functions @@ -16,6 +18,7 @@ include(build/cmake/toolkit.cmake) # Platform/toolkit settings include(build/cmake/options.cmake) # User options include(build/cmake/init.cmake) # Init various global build vars include(build/cmake/pch.cmake) # Precompiled header support +include(build/cmake/locale.cmake) # Locale files add_subdirectory(build/cmake/lib libs) add_subdirectory(build/cmake/utils utils) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 84a12331c481..3f75016b6610 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -16,6 +16,8 @@ wx_option(wxBUILD_TESTS "Build console tests (CONSOLE_ONLY) or ALL" OFF STRINGS CONSOLE_ONLY ALL OFF) wx_option(wxBUILD_DEMOS "Build demos" OFF) wx_option(wxBUILD_BENCHMARKS "Build benchmarks" OFF) +wx_option(wxBUILD_LOCALES "Build locales" AUTO STRINGS ON OFF AUTO) +mark_as_advanced(wxBUILD_LOCALES) wx_option(wxBUILD_PRECOMP "Use precompiled headers" ON STRINGS ON OFF COTIRE) mark_as_advanced(wxBUILD_PRECOMP) wx_option(wxBUILD_INSTALL "Create install/uninstall target for wxWidgets") @@ -78,6 +80,18 @@ wx_option(wxBUILD_PIC "Enable position independent code (PIC)." ON) mark_as_advanced(wxBUILD_PIC) wx_option(wxUSE_NO_RTTI "disable RTTI support" OFF) +set(wxBUILD_INSTALL_RUNTIME_DIR "" CACHE PATH "override default sub-directory to install runtime files") +mark_as_advanced(wxBUILD_INSTALL_RUNTIME_DIR) +set(wxBUILD_INSTALL_LIBRARY_DIR "" CACHE PATH "override default sub-directory to install library files") +mark_as_advanced(wxBUILD_INSTALL_LIBRARY_DIR) +set(wxBUILD_INSTALL_ARCHIVE_DIR "" CACHE PATH "override default sub-directory to install archive files") +mark_as_advanced(wxBUILD_INSTALL_ARCHIVE_DIR) +wx_option(wxBUILD_INSTALL_PLATFORM_SUBDIR "platform specific sub-directory (MSVC-naming)" ON) +mark_as_advanced(wxBUILD_INSTALL_PLATFORM_SUBDIR) +wx_option(wxBUILD_INSTALL_PDB "install pdb files in the runtime direcotry (MSVC)" OFF) +mark_as_advanced(wxBUILD_INSTALL_PDB) + + # STL options wx_option(wxUSE_STL "use standard C++ classes for everything" OFF) set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_STL "use C++ STL classes") diff --git a/build/cmake/setup.cmake b/build/cmake/setup.cmake index 97b33aee4a64..c9adf8c55c2f 100644 --- a/build/cmake/setup.cmake +++ b/build/cmake/setup.cmake @@ -461,7 +461,7 @@ if(UNIX) check_symbol_exists(inet_addr arpa/inet.h HAVE_INET_ADDR) endif(wxUSE_SOCKETS) - if(wxUSE_JOYSTICK AND NOT APPLE) + if(wxUSE_JOYSTICK AND WXGTK) check_include_files("linux/joystick.h" HAVE_JOYSTICK_H) if(NOT HAVE_JOYSTICK_H) message(WARNING "wxJoystick is not available") diff --git a/build/cmake/toolkit.cmake b/build/cmake/toolkit.cmake index c5febca32c00..89d8dcba43d0 100644 --- a/build/cmake/toolkit.cmake +++ b/build/cmake/toolkit.cmake @@ -136,7 +136,7 @@ if(WXQT) set(wxTOOLKIT_VERSION ${Qt5Core_VERSION}) endif() -if(APPLE) +if(wxBUILD_TOOLKIT MATCHES "osx_cocoa") list(APPEND wxTOOLKIT_DEFINITIONS __WXMAC__ __WXOSX__) endif() diff --git a/docs/changes.txt b/docs/changes.txt index 60b3ca62657d..1882736410b2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -263,6 +263,7 @@ All: - Add wxApp::SetErrorExitCode() to customize exit code on initialization error. - Fix buffer read overflow when compiling RE ending with backslash (#25040). - Fix crash in wxWebRequest::Close() with recent libcurl (#24969). +- Improve CMake install target and many other fixes (Maarten Bent, #24792). All (GUI): diff --git a/samples/minimal/CMakeLists.txt b/samples/minimal/CMakeLists.txt index 9bd86eae1bd1..dfecbaf92ec4 100644 --- a/samples/minimal/CMakeLists.txt +++ b/samples/minimal/CMakeLists.txt @@ -14,7 +14,7 @@ # # Declare the minimum required CMake version -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.0...3.31) if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET) # If no deployment target has been set default to the minimum supported From 97d6518f6db04012cf88bfb40da23e1dd70a8340 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Sep 2024 01:52:28 +0200 Subject: [PATCH 065/416] Allow wxDataViewCustomRenderer::GetSize() return 0 in wxGTK Returning 0 width even once from the overridden GetSize() function in wxDataViewCustomRenderer prevented the height returned by it from being taken into account at all by the GtkTreeView, probably due to some weird caching going on inside GTK. Work around this by ensuring that both size components are always strictly positive. See #24227, #24831. (cherry picked from commit d3d2620273cf535f096436d16a805114bda84fe2) --- docs/changes.txt | 1 + src/gtk/dataview.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 1882736410b2..5fd9713fdf50 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -275,6 +275,7 @@ wxGTK: - Fix copy-pasting text under more Wayland compositors (Weston, kwin) (#24701). - Fix unwanted "All pages" selection in the printing dialog (#24868). +- Fix size of wxDataViewCustomRenderer which was ignored in some cases (#24227). wxMSW: diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 7a2c687af4f6..7442989bb2b3 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -1557,6 +1557,15 @@ gtk_wx_cell_renderer_get_size (GtkCellRenderer *renderer, wxSize size = cell->GetSize(); + // Somehow returning 0 or negative width prevents the returned height from + // being taken into account at all, even if we return strictly positive + // width from later calls to GetSize(), meaning that it's enough to return + // 0 from it once to completely break the layout for the entire lifetime of + // the control. + // + // As this is completely unexpected, forcefully prevent this from happening + size.IncTo(wxSize(1, 1)); + wxDataViewCtrl * const ctrl = cell->GetOwner()->GetOwner(); // Uniform row height, if specified, overrides the value returned by the From ef1d91fb132e6d63d5ec3eceaff6fc15f7beb8a6 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sun, 5 Jan 2025 14:01:04 -0800 Subject: [PATCH 066/416] Fix border size for wxStaticBox with GTK3 The GtkFrame border was not being accounted for in GetBordersForSizer(). See #25045. (cherry picked from commit 12bb1123eb620c6541593465e3a628b2a4b2faa8) --- docs/changes.txt | 1 + src/gtk/statbox.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 5fd9713fdf50..162eabdb5727 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -274,6 +274,7 @@ All (GUI): wxGTK: - Fix copy-pasting text under more Wayland compositors (Weston, kwin) (#24701). +- Fix insufficient wxStaticBox borders size (#25045). - Fix unwanted "All pages" selection in the printing dialog (#24868). - Fix size of wxDataViewCustomRenderer which was ignored in some cases (#24227). diff --git a/src/gtk/statbox.cpp b/src/gtk/statbox.cpp index f5a69afa5f94..50f893eccdb1 100644 --- a/src/gtk/statbox.cpp +++ b/src/gtk/statbox.cpp @@ -15,6 +15,8 @@ #include "wx/gtk/private/wrapgtk.h" #include "wx/gtk/private/win_gtk.h" +#include "wx/gtk/private/stylecontext.h" +#include "wx/gtk/private/gtk3-compat.h" // constants taken from GTK sources #define LABEL_PAD 1 @@ -204,6 +206,22 @@ void wxStaticBox::GetBordersForSizer(int *borderTop, int *borderOther) const gtk_widget_get_preferred_width(label, NULL, &nat_width); gtk_widget_get_preferred_height_for_width(label, nat_width, borderTop, NULL); } + wxGtkStyleContext sc(GetContentScaleFactor()); + sc.Add(GTK_TYPE_FRAME, "frame", "frame", NULL); + if (wx_is_at_least_gtk3(20)) + sc.Add("border"); + else + { + *borderOther = gtk_container_get_border_width(GTK_CONTAINER(m_widget)); + *borderTop += *borderOther; + } + GtkBorder border; + gtk_style_context_get_border(sc, GTK_STATE_FLAG_NORMAL, &border); + *borderOther += border.left; + *borderTop += border.top; + gtk_style_context_get_padding(sc, GTK_STATE_FLAG_NORMAL, &border); + *borderOther += border.left; + *borderTop += border.top; #else gtk_widget_ensure_style(m_widget); const int border_width = GTK_CONTAINER(m_widget)->border_width; From ccb82d74985243bd2fa2a31ba7caea35d32e537b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Sep 2024 18:28:50 +0200 Subject: [PATCH 067/416] Revert "Wrap label if necessary in wxInfoBar in wxGTK" This reverts commit 32d8b5954a1e6ff07581f0e5b55d37cad0947b6c which was broken in both the generic and GTK version: generic one didn't work at all and GTK one didn't adjust the height of the infobar correctly. See #1443, #14121. (cherry picked from commit 42882760e5e3920575588eb0bb5583a395490bbd) --- samples/dialogs/dialogs.cpp | 7 ------- samples/dialogs/dialogs.h | 2 -- src/generic/infobar.cpp | 1 - src/gtk/infobar.cpp | 6 +----- 4 files changed, 1 insertion(+), 15 deletions(-) diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 21b39fb801ca..de9874e9b0c1 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -166,7 +166,6 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) #endif // wxUSE_LOG_DIALOG #if wxUSE_INFOBAR EVT_MENU(DIALOGS_INFOBAR_SIMPLE, MyFrame::InfoBarSimple) - EVT_MENU(DIALOGS_INFOBAR_SIMPLE_WRAPPED, MyFrame::InfoBarSimpleWrapped) EVT_MENU(DIALOGS_INFOBAR_ADVANCED, MyFrame::InfoBarAdvanced) #endif // wxUSE_INFOBAR @@ -580,7 +579,6 @@ bool MyApp::OnInit() #if wxUSE_INFOBAR info_menu->Append(DIALOGS_INFOBAR_SIMPLE, "Simple &info bar\tCtrl-I"); - info_menu->Append(DIALOGS_INFOBAR_SIMPLE_WRAPPED, "Simple info bar with wrapped text"); info_menu->Append(DIALOGS_INFOBAR_ADVANCED, "&Advanced info bar\tShift-Ctrl-I"); #endif // wxUSE_INFOBAR @@ -950,11 +948,6 @@ void MyFrame::InfoBarSimple(wxCommandEvent& WXUNUSED(event)) ); } -void MyFrame::InfoBarSimpleWrapped(wxCommandEvent &WXUNUSED(event)) -{ - m_infoBarSimple->ShowMessage( "This is very very long message to try the label wrapping on the info bar" ); -} - void MyFrame::InfoBarAdvanced(wxCommandEvent& WXUNUSED(event)) { m_infoBarAdvanced->ShowMessage("Sorry, it didn't work out.", wxICON_WARNING); diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h index 2c8cd705d519..935314124ea4 100644 --- a/samples/dialogs/dialogs.h +++ b/samples/dialogs/dialogs.h @@ -393,7 +393,6 @@ class MyFrame: public wxFrame #if wxUSE_INFOBAR void InfoBarSimple(wxCommandEvent& event); - void InfoBarSimpleWrapped(wxCommandEvent &event); void InfoBarAdvanced(wxCommandEvent& event); #endif // wxUSE_INFOBAR @@ -632,7 +631,6 @@ enum DIALOGS_NUM_ENTRY, DIALOGS_LOG_DIALOG, DIALOGS_INFOBAR_SIMPLE, - DIALOGS_INFOBAR_SIMPLE_WRAPPED, DIALOGS_INFOBAR_ADVANCED, DIALOGS_MODAL, DIALOGS_MODELESS, diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index 77053196268d..56e5b217ca9b 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -233,7 +233,6 @@ void wxInfoBarGeneric::ShowMessage(const wxString& msg, int flags) // notice the use of EscapeMnemonics() to ensure that "&" come through // correctly m_text->SetLabel(wxControl::EscapeMnemonics(msg)); - m_text->Wrap( GetClientSize().GetWidth() ); // then show this entire window if not done yet if ( !IsShown() ) diff --git a/src/gtk/infobar.cpp b/src/gtk/infobar.cpp index 5f9ba2e0c6a2..19eafd3e9fb9 100644 --- a/src/gtk/infobar.cpp +++ b/src/gtk/infobar.cpp @@ -193,11 +193,7 @@ void wxInfoBar::ShowMessage(const wxString& msg, int flags) if ( wxGTKImpl::ConvertMessageTypeFromWX(flags, &type) ) gtk_info_bar_set_message_type(GTK_INFO_BAR(m_widget), type); gtk_label_set_text(GTK_LABEL(m_impl->m_label), wxGTK_CONV(msg)); - gtk_label_set_line_wrap(GTK_LABEL(m_impl->m_label), TRUE ); -#if GTK_CHECK_VERSION(2,10,0) - if( wx_is_at_least_gtk2( 10 ) ) - gtk_label_set_line_wrap_mode(GTK_LABEL(m_impl->m_label), PANGO_WRAP_WORD); -#endif + if ( !IsShown() ) Show(); From d5e1182bd5871cf5238e9e5b597c3112b902e68f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Sep 2024 16:46:09 +0200 Subject: [PATCH 068/416] Simplify setting the label text in wxInfoBarGeneric No real changes, just use the existing SetLabelText() instead of reproducing it. (cherry picked from commit 57bde429f441ad7fcd2512cdd72bbb1535551091) --- src/generic/infobar.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index 56e5b217ca9b..8fc48da5481d 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -230,9 +230,8 @@ void wxInfoBarGeneric::ShowMessage(const wxString& msg, int flags) m_icon->Show(); } - // notice the use of EscapeMnemonics() to ensure that "&" come through - // correctly - m_text->SetLabel(wxControl::EscapeMnemonics(msg)); + // use SetLabelText() to ensure that "&" come through correctly + m_text->SetLabelText(msg); // then show this entire window if not done yet if ( !IsShown() ) From ef4874fc5d6d431d68a1ab5e16dc637bdfea2760 Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Wed, 25 Sep 2024 16:39:42 +0200 Subject: [PATCH 069/416] Fix wxInfoBar layout when there is not enough space for button Ensure that we always show the "Close" button, truncating the text if there is not enough space for both of them. (cherry picked from commit ec99e88dbc65e1acb0c056055e10ad63ec1961b0) --- src/generic/infobar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index 8fc48da5481d..e89d2c4c334f 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -87,8 +87,8 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid) // and being preceded by a spacer wxSizer * const sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(m_icon, wxSizerFlags().Centre().Border()); - sizer->Add(m_text, wxSizerFlags().Centre()); - sizer->AddStretchSpacer(); + sizer->Add(m_text, wxSizerFlags().Proportion(1).Centre()); + sizer->AddSpacer(0); // This spacer only exists for compatibility. sizer->Add(m_button, wxSizerFlags().Centre().Border()); SetSizer(sizer); From 9517c92a9f55103d84bbbd09414231022e363304 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Sep 2024 16:42:00 +0200 Subject: [PATCH 070/416] Ellipsize info bar text instead of truncating it If there is not enough space to show the text in full, prefer to ellipsize it in the middle instead of just truncating it. Also show some text too long to fit into the window in the dialogs sample to demonstrate that ellipsization really works. (cherry picked from commit 3f5bbe541b99725bc6be1c9fe6d88771a1cfe4df) --- samples/dialogs/dialogs.cpp | 22 ++++++++++++++++++---- src/generic/infobar.cpp | 4 +++- src/gtk/infobar.cpp | 1 + 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index de9874e9b0c1..3231e2782533 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -942,10 +942,24 @@ void MyFrame::LogDialog(wxCommandEvent& WXUNUSED(event)) void MyFrame::InfoBarSimple(wxCommandEvent& WXUNUSED(event)) { static int s_count = 0; - m_infoBarSimple->ShowMessage - ( - wxString::Format("Message #%d in the info bar.", ++s_count) - ); + + wxString msg; + if ( ++s_count % 2 ) + { + msg.Printf("Short message #%d in the info bar.", s_count); + } + else + { + msg.Printf("A very, very, very, very long message #%d showing what " + "happens when a message is too long to fit in the info bar " + "and has to be either wrapped or ellipsized because it's " + "just too long to fit in the available space (unless " + "you have a humongously wide monitor, in which case, " + "congratulations, you've managed to break this test).", + s_count); + } + + m_infoBarSimple->ShowMessage(msg); } void MyFrame::InfoBarAdvanced(wxCommandEvent& WXUNUSED(event)) diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index e89d2c4c334f..5586ac6d5e45 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -74,7 +74,9 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid) // the icon is not shown unless it's assigned a valid bitmap m_icon = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap); - m_text = new wxStaticText(this, wxID_ANY, wxString()); + m_text = new wxStaticText(this, wxID_ANY, wxString(), + wxDefaultPosition, wxDefaultSize, + wxST_ELLIPSIZE_MIDDLE); m_text->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT)); m_button = wxBitmapButton::NewCloseButton(this, wxID_ANY); diff --git a/src/gtk/infobar.cpp b/src/gtk/infobar.cpp index 19eafd3e9fb9..36a555912e89 100644 --- a/src/gtk/infobar.cpp +++ b/src/gtk/infobar.cpp @@ -193,6 +193,7 @@ void wxInfoBar::ShowMessage(const wxString& msg, int flags) if ( wxGTKImpl::ConvertMessageTypeFromWX(flags, &type) ) gtk_info_bar_set_message_type(GTK_INFO_BAR(m_widget), type); gtk_label_set_text(GTK_LABEL(m_impl->m_label), wxGTK_CONV(msg)); + gtk_label_set_ellipsize(GTK_LABEL(m_impl->m_label), PANGO_ELLIPSIZE_MIDDLE); if ( !IsShown() ) Show(); From 837928a7e3fbec843faf2ef3482fb897a6b8ed9a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Sep 2024 18:50:14 +0200 Subject: [PATCH 071/416] Also show the text of the infobar message in a tooltip This can be useful if the entire message doesn't fit into the available space in the infobar itself. (cherry picked from commit 06da2d255574d51623554222b829fc137c9bec63) --- src/generic/infobar.cpp | 3 +++ src/gtk/infobar.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index 5586ac6d5e45..dde75b77ae8b 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -235,6 +235,9 @@ void wxInfoBarGeneric::ShowMessage(const wxString& msg, int flags) // use SetLabelText() to ensure that "&" come through correctly m_text->SetLabelText(msg); + // in case it doesn't fit in the window, show the full message as a tooltip + m_text->SetToolTip(msg); + // then show this entire window if not done yet if ( !IsShown() ) { diff --git a/src/gtk/infobar.cpp b/src/gtk/infobar.cpp index 36a555912e89..00d9a2e0a6d8 100644 --- a/src/gtk/infobar.cpp +++ b/src/gtk/infobar.cpp @@ -28,6 +28,7 @@ #include "wx/vector.h" #include "wx/stockitem.h" +#include "wx/tooltip.h" #include "wx/gtk/private.h" #include "wx/gtk/private/messagetype.h" @@ -195,6 +196,10 @@ void wxInfoBar::ShowMessage(const wxString& msg, int flags) gtk_label_set_text(GTK_LABEL(m_impl->m_label), wxGTK_CONV(msg)); gtk_label_set_ellipsize(GTK_LABEL(m_impl->m_label), PANGO_ELLIPSIZE_MIDDLE); +#if wxUSE_TOOLTIPS + wxToolTip::GTKApply(m_impl->m_label, msg.utf8_str()); +#endif + if ( !IsShown() ) Show(); From b0806a7ae3cf47f316e457e59e9475c7272222bd Mon Sep 17 00:00:00 2001 From: Stefan Ziegler <33447587+sz5000@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:38:42 +0200 Subject: [PATCH 072/416] Allow setting wxInfoBar colours before creating it Don't override the colours if they had been already set. See #24902. (cherry picked from commit 247dbc57c64a1b62a85dd466a8553473d93daf24) --- src/generic/infobar.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index dde75b77ae8b..3c0219864c03 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -66,7 +66,8 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid) return false; // use special, easy to notice, colours - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK)); + if( !m_hasBgCol ) + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK)); // create the controls: icon, text and the button to dismiss the // message. @@ -77,7 +78,9 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid) m_text = new wxStaticText(this, wxID_ANY, wxString(), wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_MIDDLE); - m_text->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT)); + + if(!m_hasFgCol) + m_text->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT)); m_button = wxBitmapButton::NewCloseButton(this, wxID_ANY); m_button->SetToolTip(_("Hide this notification message.")); From 250ac64d9f6d304d7af0cc4d28076040cd4d9e2e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 7 Jan 2025 02:22:38 +0100 Subject: [PATCH 073/416] Use native GTK colours for wxInfoBarGeneric with GTK 3.24 This makes the generic implementation, which can be useful even in wxGTK, as it allows adding custom controls to the info bar, more similar to the native one in appearance and also avoids unfortunate clashes between the tooltip colours and the native colours of other controls, such as hyperlinks. See #25049, #25048. (cherry picked from commit 015ccc7018865adbadc603f8013669d6917816fc) --- src/generic/infobar.cpp | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/generic/infobar.cpp b/src/generic/infobar.cpp index 3c0219864c03..4e5032e1adeb 100644 --- a/src/generic/infobar.cpp +++ b/src/generic/infobar.cpp @@ -36,6 +36,13 @@ #include "wx/artprov.h" #include "wx/scopeguard.h" +#ifdef __WXGTK3__ + #include "wx/gtk/private/wrapgtk.h" + + #include "wx/gtk/private/gtk3-compat.h" + #include "wx/gtk/private/stylecontext.h" +#endif + wxBEGIN_EVENT_TABLE(wxInfoBarGeneric, wxInfoBarBase) EVT_BUTTON(wxID_ANY, wxInfoBarGeneric::OnButton) wxEND_EVENT_TABLE() @@ -66,8 +73,34 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid) return false; // use special, easy to notice, colours + wxColour colBg, colFg; + if ( !m_hasBgCol && !m_hasFgCol ) + { + // We want to use the native infobar colours for consistency with the + // native implementation under GTK, but only do it for 3.24, as both + // the CSS structure and the default colour values have changed in this + // version compared to all the previous ones and it seems safer to keep + // the old behaviour for the older GTK versions, see #25048. +#ifdef __WXGTK3__ + if ( wx_is_at_least_gtk3(24) ) + { + wxGtkStyleContext sc; + sc.Add(GTK_TYPE_INFO_BAR, "infobar", "info", NULL); + sc.Add("revealer"); + sc.Add("box"); + sc.Bg(colBg); + sc.Fg(colFg); + } + else +#endif // GTK 3 + { + colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK); + colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT); + } + } + if( !m_hasBgCol ) - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK)); + SetBackgroundColour(colBg); // create the controls: icon, text and the button to dismiss the // message. @@ -80,7 +113,7 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid) wxST_ELLIPSIZE_MIDDLE); if(!m_hasFgCol) - m_text->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT)); + m_text->SetForegroundColour(colFg); m_button = wxBitmapButton::NewCloseButton(this, wxID_ANY); m_button->SetToolTip(_("Hide this notification message.")); From c7bdc37840c7ab22a43ac091b30c5c39a4a26ecb Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 9 Jan 2025 18:45:49 +0100 Subject: [PATCH 074/416] Document recent wxInfoBar backports in the change log --- docs/changes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changes.txt b/docs/changes.txt index 162eabdb5727..57eef939d09b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -269,6 +269,7 @@ All (GUI): - Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). - Don't break AUI layout if Update() called when window is iconized (#24930). +- Improve wxInfoBar appearance (#24838, #24902, #25048). - Fix WX_GL_COMPAT_PROFILE spelling (#24964). wxGTK: From d8545cc61f94e37181dc5c6a1271fd67e3705b36 Mon Sep 17 00:00:00 2001 From: PB Date: Sat, 11 Jan 2025 20:18:03 +0100 Subject: [PATCH 075/416] Recognize Windows Server 2025 in wxGetOsDescription() Recognize Windows Server 2025 in wxGetOsDescription() and update Windows OS table in wxGetOsVersion() docs. See #25066. (cherry picked from commit c88c86ece9b5b29a8223c9799c20aa986b455b8d) --- docs/changes.txt | 1 + interface/wx/utils.h | 6 ++++++ src/msw/utils.cpp | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 57eef939d09b..d77123b1ebda 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -289,6 +289,7 @@ wxMSW: - Fix handling pending events without an event loop (Stefan Battmer, #18109). - Fix indent of imageless wxTreeCtrl in high DPI (taler21, #24941). - Fix possible crash during session termination (#24903). +- Recognize Windows Server 2025 in wxGetOsDescription() (PB, #25066). wxOSX: diff --git a/interface/wx/utils.h b/interface/wx/utils.h index 177e926d4b2a..7900349a4d0f 100644 --- a/interface/wx/utils.h +++ b/interface/wx/utils.h @@ -958,6 +958,12 @@ wxString wxGetOsDescription(); Minor version Build number + + Windows Server 2025 + 10 + 0 + 26100 + Windows 11 10 diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index fca57f720503..30bcf5aac0c1 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -1100,6 +1100,7 @@ int wxIsWindowsServer() static const int WINDOWS_SERVER2016_BUILD = 14393; static const int WINDOWS_SERVER2019_BUILD = 17763; static const int WINDOWS_SERVER2022_BUILD = 20348; +static const int WINDOWS_SERVER2025_BUILD = 26100; // Windows 11 uses the same version as Windows 10 but its build numbers start // from 22000, which provides a way to test for it. @@ -1182,6 +1183,9 @@ wxString wxGetOsDescription() case WINDOWS_SERVER2022_BUILD: str = "Windows Server 2022"; break; + case WINDOWS_SERVER2025_BUILD: + str = "Windows Server 2025"; + break; } } else From a262decd4ef1bfdb45a240d6e0ae5741efc3b5b7 Mon Sep 17 00:00:00 2001 From: Wolfgang Dautermann Date: Sun, 12 Jan 2025 15:47:00 +0100 Subject: [PATCH 076/416] Make wxKill(wxKILL_CHILDREN) kill children recursively in wxMSW We need to call wxKill() on children with the same wxKILL_CHILDREN flag to kill grandchildren etc too. See #25069, #25070. (cherry picked from commit f2762a79f0528e4985d8c843cb1bfe54e643239b) --- docs/changes.txt | 1 + src/msw/utils.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index d77123b1ebda..5f0bfc60bf14 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -289,6 +289,7 @@ wxMSW: - Fix handling pending events without an event loop (Stefan Battmer, #18109). - Fix indent of imageless wxTreeCtrl in high DPI (taler21, #24941). - Fix possible crash during session termination (#24903). +- Make wxKill(wxKILL_CHILDREN) work recursively (Wolfgang Dautermann, #25069). - Recognize Windows Server 2025 in wxGetOsDescription() (PB, #25066). wxOSX: diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 30bcf5aac0c1..596995ffb30b 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -615,12 +615,12 @@ BOOL CALLBACK wxEnumFindByPidProc(HWND hwnd, LPARAM lParam) return TRUE; } -int wxKillAllChildren(long pid, wxSignal sig, wxKillError *krc); +int wxKillAllChildren(long pid, wxSignal sig, wxKillError *krc, int flags); int wxKill(long pid, wxSignal sig, wxKillError *krc, int flags) { if (flags & wxKILL_CHILDREN) - wxKillAllChildren(pid, sig, krc); + wxKillAllChildren(pid, sig, krc, flags); // get the process handle to operate on DWORD dwAccess = PROCESS_QUERY_INFORMATION | SYNCHRONIZE; @@ -800,7 +800,7 @@ bool wxMSWActivatePID(long pid) } // By John Skiff -int wxKillAllChildren(long pid, wxSignal sig, wxKillError *krc) +int wxKillAllChildren(long pid, wxSignal sig, wxKillError *krc, int flags) { if (krc) *krc = wxKILL_OK; @@ -830,7 +830,7 @@ int wxKillAllChildren(long pid, wxSignal sig, wxKillError *krc) do { if (pe.th32ParentProcessID == (DWORD) pid) { - if (wxKill(pe.th32ProcessID, sig, krc)) + if (wxKill(pe.th32ProcessID, sig, krc, flags)) return -1; } } while (::Process32Next (hProcessSnap, &pe)); From feaa0b70d146a69a3ce5ceb95cfed1c7840fabea Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Sat, 11 Jan 2025 13:36:24 +0200 Subject: [PATCH 077/416] Fix warnings when using event table macros with Clang 19.1.6 Avoid warnings about incompatible casts: In file included from ../../tests/allheaders.cpp:369: In file included from ../../tests/testprec.h:5: In file included from ../../include/wx/evtloop.h:13: ../../include/wx/event.h:141:12: error: cast from 'void (wxEvtHandler::*)(wxFocusEvent &)' to 'wxEventFunction' (aka 'void (wxEvtHandler::*)(wxEvent &)') converts to incompatible function type [-Werror,-Wcast-function-type-mismatch] 141 | return reinterpret_cast(func); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This warning was already suppressed on GCC; just do the same thing for Clang also. See #25064. (cherry picked from commit 6561ca020048de57ec28fec5b27f80b00d445cdd) --- docs/changes.txt | 1 + include/wx/event.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 5f0bfc60bf14..0885b69af43c 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -255,6 +255,7 @@ All: - Avoid trailing space in `wx-config --c[xx]flags` (Tobiasz Laskowski, #24812). - Fix building using gcc 14 under Solaris (Alan Coopersmith, #24869). +- Avoid warnings in event table macros with clang 19 (Lauri Nurmi, #25064). - Add wxNO_UNUSED_VARIABLES to enable warnings about them (Lauri Nurmi, #24882). - Install all translations in "make install" (Scott Talbert, #24880). - Fix compilation with clang 19 (Lauri Nurmi, #24922). diff --git a/include/wx/event.h b/include/wx/event.h index 52c99d68b4a9..c2a0274ebf64 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -134,9 +134,11 @@ inline wxEventFunction wxEventFunctionCast(void (wxEvtHandler::*func)(T&)) // code using event table macros. wxGCC_WARNING_SUPPRESS_CAST_FUNCTION_TYPE() + wxCLANG_WARNING_SUPPRESS(cast-function-type) return reinterpret_cast(func); + wxCLANG_WARNING_RESTORE(cast-function-type) wxGCC_WARNING_RESTORE_CAST_FUNCTION_TYPE() } From 527f8b2d41d34e3d9d470c6d591f331f70cb4452 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 16 Jan 2025 17:58:38 +0100 Subject: [PATCH 078/416] Update copyright year in the dialogs sample too Add it to the list of files updated by inc_year script and also change the copyright to start at 1992 and not 1998 to make things simpler. See #25041. (cherry picked from commit 5252bd3ca9210edac6ae016b7fc66aa2b29896a4) --- misc/scripts/inc_year | 1 + samples/dialogs/dialogs.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/misc/scripts/inc_year b/misc/scripts/inc_year index 7e29c7fbd6e0..166c50b8c8cf 100755 --- a/misc/scripts/inc_year +++ b/misc/scripts/inc_year @@ -17,6 +17,7 @@ echo "Updating dates to use $new_year instead of $old_year:" # Update copyright to extend to the new year. for f in docs/doxygen/mainpages/copyright.h docs/doxygen/regen.sh \ interface/wx/aboutdlg.h interface/wx/generic/aboutdlgg.h \ + samples/dialogs/dialogs.cpp \ src/common/utilscmn.cpp src/msw/version.rc \ ; do run_sed $f "s/1992-$old_year/1992-$new_year/" diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 3231e2782533..99eddcaa24c0 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -3437,7 +3437,7 @@ static void InitAboutInfoMinimal(wxAboutDialogInfo& info) wxVERSION_NUM_DOT_STRING )); info.SetDescription("This sample shows different wxWidgets dialogs"); - info.SetCopyright("(C) 1998-2006 wxWidgets dev team"); + info.SetCopyright("(C) 1992-2025 wxWidgets dev team"); info.AddDeveloper("Vadim Zeitlin"); } From 103be7e28a2dd3e379bbc1c6939843dbdde2097a Mon Sep 17 00:00:00 2001 From: Dmitry Makarenko Date: Fri, 17 Jan 2025 09:52:00 +0300 Subject: [PATCH 079/416] Fix wxWindowDisabler not starting modal session under macOS If BeginModalSession() is called twice on a new window object located at the same address (i.e. allocated on stack), the second call takes a shortcut due to modal window being still set to the same value and does not start a modal session. Reset m_modalWindow once session is ended. See #25087. (cherry picked from commit e4285b4a35db3887347b60ce35e16a172df6c0a3) --- docs/changes.txt | 1 + src/osx/cocoa/evtloop.mm | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 0885b69af43c..22beb6d0be54 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -296,6 +296,7 @@ wxMSW: wxOSX: - Fix build with macOS 15 SDK (#24724, #24879). +- Fix not making dialogs modal in some circumstances (Dmitry Makarenko, #25087). - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). - Fix regression in GetPreferredUILanguage() in some cases (#24804). - Fix CMake build with PCH disabled (Maarten Bent, #24851). diff --git a/src/osx/cocoa/evtloop.mm b/src/osx/cocoa/evtloop.mm index 8820d597012f..1e333a7d9f37 100644 --- a/src/osx/cocoa/evtloop.mm +++ b/src/osx/cocoa/evtloop.mm @@ -514,7 +514,9 @@ static NSUInteger CalculateNSEventMaskFromEventCategory(wxEventCategory cat) wxASSERT_MSG(m_modalSession != NULL, "no modal session active"); wxASSERT_MSG(m_modalNestedLevel > 0, "incorrect modal nesting level"); - + + m_modalWindow = NULL; + --m_modalNestedLevel; if ( m_modalNestedLevel == 0 ) { From 7e9e4554f98a5610c0e1f06ed6287974d8f64a96 Mon Sep 17 00:00:00 2001 From: Kyriet Date: Sat, 11 Jan 2025 22:20:27 +0100 Subject: [PATCH 080/416] Prevent SDL from capturing SIGINT Let it behave in the usual way, e.g. terminating the application by default, instead of being effectively ignored due to being handled by SDL and turned into an SDL event which is never processed by wxWidgets. See #25067. (cherry picked from commit c48c6db96d68f3c11e9db905453ba33f3fd93b22) --- docs/changes.txt | 1 + src/unix/sound_sdl.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 22beb6d0be54..9e891862311f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -279,6 +279,7 @@ wxGTK: - Fix insufficient wxStaticBox borders size (#25045). - Fix unwanted "All pages" selection in the printing dialog (#24868). - Fix size of wxDataViewCustomRenderer which was ignored in some cases (#24227). +- Don't consume Ctrl-C when using SDL-based wxSound (Kyriet, #25067). wxMSW: diff --git a/src/unix/sound_sdl.cpp b/src/unix/sound_sdl.cpp index 7df8b5b9ed5e..46204187a8b6 100644 --- a/src/unix/sound_sdl.cpp +++ b/src/unix/sound_sdl.cpp @@ -131,6 +131,7 @@ bool wxSoundBackendSDL::IsAvailable() const return true; if (SDL_WasInit(SDL_INIT_AUDIO) != SDL_INIT_AUDIO) { + SDL_SetHint(SDL_HINT_NO_SIGNAL_HANDLERS, "1"); if (SDL_Init(SDL_INIT_AUDIO | SDL_INIT_NOPARACHUTE) == -1) return false; } From 4b60508d0388cfc0fd3ca3b97efcc156c316e8d6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 18 Jan 2025 19:24:24 +0100 Subject: [PATCH 081/416] Add mailmap entries for Wlodzimierz Skiba Map emails used for old (2007) and latest commits to the same identity. (cherry picked from commit 4a9383b9ae3b2a780894c393d1d4d4c850103a32) --- .mailmap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.mailmap b/.mailmap index 30f2ee46442c..12f6ba457979 100644 --- a/.mailmap +++ b/.mailmap @@ -68,6 +68,8 @@ Václav Slavík Václav Slavík Vadim Zeitlin +Włodzimierz Skiba +Wlodzimierz Skiba <57067108+Wlodzimierz-ABX-Skiba@users.noreply.github.com> Wolfgang Stöggl Xlord2 Iwbnwif Yiw From 9c240325a73e5b1fa97d6bcc65ebf051415ad703 Mon Sep 17 00:00:00 2001 From: Wlodzimierz-ABX-Skiba <57067108+Wlodzimierz-ABX-Skiba@users.noreply.github.com> Date: Fri, 17 Jan 2025 21:25:00 +0100 Subject: [PATCH 082/416] Make wxIMPLEMENT_WX_THEME_SUPPORT empty for wxUniv console apps This makes wxIMPLEMENT_APP() work for console applications too and fixes the build of "archive" sample when using wxUniv. Closes #25086. Closes #25090. (cherry picked from commit 73c2d44f3fadedf85c732abae3c949323d7a0338) --- include/wx/app.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/app.h b/include/wx/app.h index 7a134c5b8647..565510504127 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -872,7 +872,7 @@ class WXDLLIMPEXP_BASE wxAppInitializer #define wxIMPLEMENT_WXWIN_MAIN wxIMPLEMENT_WXWIN_MAIN_CONSOLE #endif // defined(wxIMPLEMENT_WXWIN_MAIN) -#ifdef __WXUNIVERSAL__ +#if defined(__WXUNIVERSAL__) && wxUSE_GUI #include "wx/univ/theme.h" #ifdef wxUNIV_DEFAULT_THEME From 6f23c6312eba7e3e6caec2628480a0ce22196a53 Mon Sep 17 00:00:00 2001 From: Wlodzimierz-ABX-Skiba <57067108+Wlodzimierz-ABX-Skiba@users.noreply.github.com> Date: Fri, 17 Jan 2025 22:54:36 +0100 Subject: [PATCH 083/416] Don't define wxHAS_NATIVE_WINDOW in wxUniv/MSW. wxNativeWindow is not implemented in wxUniv (even though it probably should be), so defining wxHAS_NATIVE_WINDOW resulted in link errors after just including this header. This fixes widgets sample build in wxUniv/MSW. Closes #25092. (cherry picked from commit 05618e7fe2408a3aad7b739e5dc01680dce1f477) --- include/wx/nativewin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/nativewin.h b/include/wx/nativewin.h index fc10767e2e17..372e5a85462c 100644 --- a/include/wx/nativewin.h +++ b/include/wx/nativewin.h @@ -31,7 +31,7 @@ // all platforms except GTK where we also can work with Window/XID) // // - wxNativeWindowHandle for child windows, i.e. HWND/GtkWidget*/NSControl -#if defined(__WXMSW__) +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) #include "wx/msw/wrapwin.h" typedef HWND wxNativeContainerWindowId; From a25b58d0b4e197d6daec61b8f11af9b11a7e4efe Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 17 Jan 2025 17:57:07 +0100 Subject: [PATCH 084/416] Use Win32 ReplaceFile() to implement wxRenameFile(overwrite=true) This function should be atomic, unlike our own code doing copy+remove if rename fails (as it always will under MSW if the destination exists). (cherry picked from commit 02e6ad25605b2f6e322c13a1895d2533afcb8ac3) --- docs/changes.txt | 1 + interface/wx/filefn.h | 4 ++++ src/common/filefn.cpp | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 9e891862311f..87a614eed169 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -292,6 +292,7 @@ wxMSW: - Fix indent of imageless wxTreeCtrl in high DPI (taler21, #24941). - Fix possible crash during session termination (#24903). - Make wxKill(wxKILL_CHILDREN) work recursively (Wolfgang Dautermann, #25069). +- Use ReplaceFile() in wxRenameFile() to make operation atomic (#25088). - Recognize Windows Server 2025 in wxGetOsDescription() (PB, #25066). wxOSX: diff --git a/interface/wx/filefn.h b/interface/wx/filefn.h index fe71a3c3608e..d87de6108197 100644 --- a/interface/wx/filefn.h +++ b/interface/wx/filefn.h @@ -232,6 +232,10 @@ time_t wxFileModificationTime(const wxString& filename); overwritten if @a overwrite is @true (default) and the function fails if @a overwrite is @false. + Since wxWidgets 3.2.7, if @a overwrite is @true `ReplaceFile()` function is + used under MSW which allows to preserve the file attributes while replacing + its contents. + @header{wx/filefn.h} */ bool wxRenameFile(const wxString& oldpath, diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 3548126287e4..b3828e5664b3 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -1005,6 +1005,31 @@ wxCopyFile (const wxString& file1, const wxString& file2, bool overwrite) bool wxRenameFile(const wxString& file1, const wxString& file2, bool overwrite) { +#ifdef __WINDOWS__ + // When overwriting, prefer using ReplaceFile() which allows to preserve + // the destination file attributes while replacing its contents. + if ( overwrite && wxFileExists(file2) ) + { + if ( ::ReplaceFile + ( + file2.t_str(), // File to replace. + file1.t_str(), // File to replace it with. + NULL, // No backup file. + REPLACEFILE_IGNORE_MERGE_ERRORS, + // Don't return error just because ACLs + // couldn't be preserved. + wxRESERVED_PARAM, + wxRESERVED_PARAM + ) ) + { + return true; + } + + // Continue with the normal rename logic if ReplaceFile() failed, it + // will probably fail as well but it shouldn't hurt to try. + } +#endif // __WINDOWS__ + if ( !overwrite && wxFileExists(file2) ) { wxLogSysError From dbd6758d8c9dc39bf985e4ee5801a8658bb0dd1d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 17 Jan 2025 15:30:29 +0100 Subject: [PATCH 085/416] Don't remove the old file before renaming new one to it Rename replaces the existing file, so it is not necessary to remove it before calling it and this is actually dangerous and may result in data loss if renaming fails, as the original file contents is just lost then. See #25088. (cherry picked from commit 6f861d376be2938285d6ec6fca710b5514e8459d) --- docs/changes.txt | 1 + src/common/file.cpp | 7 +------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 87a614eed169..cce43337dfa1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -264,6 +264,7 @@ All: - Add wxApp::SetErrorExitCode() to customize exit code on initialization error. - Fix buffer read overflow when compiling RE ending with backslash (#25040). - Fix crash in wxWebRequest::Close() with recent libcurl (#24969). +- Make wxTempFile::Commit() really atomic (#25088). - Improve CMake install target and many other fixes (Maarten Bent, #24792). All (GUI): diff --git a/src/common/file.cpp b/src/common/file.cpp index e231ca0c8d67..09a5bd17897e 100644 --- a/src/common/file.cpp +++ b/src/common/file.cpp @@ -592,12 +592,7 @@ bool wxTempFile::Commit() { m_file.Close(); - if ( wxFile::Exists(m_strName) && wxRemove(m_strName) != 0 ) { - wxLogSysError(_("can't remove file '%s'"), m_strName); - return false; - } - - if ( !wxRenameFile(m_strTemp, m_strName) ) { + if ( !wxRenameFile(m_strTemp, m_strName) ) { wxLogSysError(_("can't commit changes to file '%s'"), m_strName); return false; } From dae082c0309ca1e2f019107623f4a1668907dda2 Mon Sep 17 00:00:00 2001 From: taler21 <99262969+taler21@users.noreply.github.com> Date: Wed, 22 Jan 2025 10:27:19 +0100 Subject: [PATCH 086/416] Correct German translation of "Ctrl" in internat sample See #25110. (cherry picked from commit 66c8e32756107eb84988de306406838537d977d7) --- samples/internat/de/internat.mo | Bin 5802 -> 5804 bytes samples/internat/de/internat.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/internat/de/internat.mo b/samples/internat/de/internat.mo index d7d5e33497c0af7f15073bb0eb72d3ac49284126..cb25877c4406b01f4f3885dae449fbcfbcc8347a 100644 GIT binary patch delta 598 zcmXZZJuE{}6u|LQDJuFweMWqgR%m%`Uxh?f6N6x(38P3Vo{vSNsYE2wg_=yyA_hAh zBt^n#vS5%%Y$i)3EE1#tmAAa#Ip^JX-nsXlYenrcP?3MKiOf1h>O`c&E#k#6cHsn8 zVcK#X8_6@4`&dtYg3Wk=m3WVX_<$PzU=sZv5kgtUJ>2q0{(s>Yg=q@yOfiZE4&fQ9 zhA*fFd&64%!~y)pRtzvj9LKQ-chJC7>_;0P+cAVA7{LZy_2xwu2zDt%@fpWZy>&nW z)y^g{h>IA(f>pmkHNYeG;s++s$uX&un&HueOW27y>_!tqc%3IuJAOw$wy~O_C5Zt{ zS^2h=A0oFUMbz;YRl_pULR?H+jXjnj%NVL3#<33#R99PbM9@NTTngIf9Ijz4s%x>B zPmjiR-8^t!nXfLbWy;tzvguqV8~3F$#>z&{Hx$;xx|wnnOq;uGpU-92O5g6g>OZei BMZ5q2 delta 598 zcmXZZzb^w}7{Kv|l-7^7ezzgvT13&~PD3bRFfd^-h)57Ui3Clm5leH4U@>un82kam zAZZhc$z;J`vY9L-77`=AuiSE<=Xvtvx#xY~OZ`H>YAd!MibSR=MXE%kDIijVacsdc zEX76FRjec5aNWgf@)K;pb1cDIjN={Z_=Tew35pQP66P=+6#KvNgTf?*Mz$Ej6-?k6 zs)0|a7JJ4De8+D5#xO?NB8kHo#cj0k6l3^{9*i+$0ClXzRE;e%ORz)1z(*X$AM|08 zE_JeT?8JHO#XYxPK()X~U^&;MZfb&0JuYA~W-x+B*oAqUK%MvnTQN*G%gPA0 z;gp+ix%ocwT5^FVUZWcLhK!I3w)LXs8gn&J{csRFa0S)VmK_p=2#)ieo@t-o)XhHK zG&Ivln*GjxWg#@DPgt8)W;vVAB(<5em0HVci5|nr`45~SzwVR--aO;k%zFMaaO3?0 DmI_AY diff --git a/samples/internat/de/internat.po b/samples/internat/de/internat.po index 53e61c5582f7..7cc61ae69233 100644 --- a/samples/internat/de/internat.po +++ b/samples/internat/de/internat.po @@ -39,7 +39,7 @@ msgstr "Internationale wxWidgets-Anwendung" #: internat.cpp:295 msgid "&Test locale availability...\tCtrl-T" -msgstr "&Teste Gebietsschemaverfügbarkeit...\tCtrl-T" +msgstr "&Teste Gebietsschemaverfügbarkeit...\tStrg-T" #: internat.cpp:300 msgid "E&xit" From 7ab94474f3fa30f927312f574b3ca3ff13b95026 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 26 Jan 2025 20:52:32 +0100 Subject: [PATCH 087/416] Fix documentation of wxArrayString ctors taking C arrays Don't an unnecessary documentation group, this results in these ctors being documented in a separate documentation section from all the other ctors. See #25113. (cherry picked from commit d1aa0507210d0dfe9b005e552993579690a6f4e2) --- interface/wx/arrstr.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/interface/wx/arrstr.h b/interface/wx/arrstr.h index 6cb1b016db1c..7b4a3b98875b 100644 --- a/interface/wx/arrstr.h +++ b/interface/wx/arrstr.h @@ -76,13 +76,15 @@ class wxArrayString : public wxArray */ wxArrayString(const wxArrayString& array); - ///@{ /** Constructor from a C string array. Pass a size @a sz and an array @a arr. - **/ + */ wxArrayString(size_t sz, const char** arr); + + /** + Constructor from a C wide string array. Pass a size @a sz and an array @a arr. + */ wxArrayString(size_t sz, const wchar_t** arr); - ///@} /** Constructor from a wxString array. Pass a size @a sz and array @a arr. From 5508427b3e70d69bea8a20e2e52daac44b275bbe Mon Sep 17 00:00:00 2001 From: Steffen Olszewski Date: Fri, 24 Jan 2025 21:38:56 +0100 Subject: [PATCH 088/416] Add missing wxTextCtrl styles to its XRC handler Add support for wxTE_CENTER spelling to wxTextCtrl XRC handler, as well as wxTE_BESTWRAP and wxTE_CAPITALIZE. See #25118. (cherry picked from commit bcdf0de4773a024f89221017124c3fc4f343b8fd) --- src/xrc/xh_text.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/xrc/xh_text.cpp b/src/xrc/xh_text.cpp index ec7b638286b9..0b4da1c58441 100644 --- a/src/xrc/xh_text.cpp +++ b/src/xrc/xh_text.cpp @@ -35,11 +35,14 @@ wxTextCtrlXmlHandler::wxTextCtrlXmlHandler() : wxXmlResourceHandler() XRC_ADD_STYLE(wxTE_AUTO_URL); XRC_ADD_STYLE(wxTE_NOHIDESEL); XRC_ADD_STYLE(wxTE_LEFT); + XRC_ADD_STYLE(wxTE_CENTER); XRC_ADD_STYLE(wxTE_CENTRE); XRC_ADD_STYLE(wxTE_RIGHT); XRC_ADD_STYLE(wxTE_DONTWRAP); XRC_ADD_STYLE(wxTE_CHARWRAP); XRC_ADD_STYLE(wxTE_WORDWRAP); + XRC_ADD_STYLE(wxTE_BESTWRAP); + XRC_ADD_STYLE(wxTE_CAPITALIZE); // this style doesn't exist since wx 2.9.0 but we still support it (by // ignoring it silently) in XRC files to avoid unimportant warnings when From 7cef03e0cf8b2ee8a6160d960e916b87a28e6da3 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Sat, 25 Jan 2025 05:39:40 -0500 Subject: [PATCH 089/416] Minor wording improvements in wxTextCtrl documentation See #25119. (cherry picked from commit fc423ab47fd1d2ec343f8ec16cc8f43777aaba94) --- interface/wx/textctrl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/wx/textctrl.h b/interface/wx/textctrl.h index 20703b6f0836..d57f4435543f 100644 --- a/interface/wx/textctrl.h +++ b/interface/wx/textctrl.h @@ -1906,8 +1906,8 @@ class wxTextCtrl : public wxControl, void OSXEnableNewLineReplacement(bool enable); /** - Enables the automatic replacement of ASCII quotation marks and - apostrophes with their typographic symbols. + Enables the automatic replacement of straight (ASCII) quotation marks and + apostrophes with smart ("curly") quotes. This feature is enabled by default. @@ -1917,7 +1917,7 @@ class wxTextCtrl : public wxControl, void OSXEnableAutomaticQuoteSubstitution(bool enable); /** - Enables the automatic conversion of two ASCII hyphens into an m-dash. + Enables the automatic conversion of two ASCII hyphens into an em dash. This feature is enabled by default. From 89ba8f190b8011b195806c64e7eca4edb1df360b Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sun, 26 Jan 2025 14:52:56 -0500 Subject: [PATCH 090/416] Add missing documentation for wxBoxSizer::InformFirstDirection() See #25122. (cherry picked from commit 428f9b44b056f4a9b3ee3005cb5a55f707acf192) --- interface/wx/sizer.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/interface/wx/sizer.h b/interface/wx/sizer.h index 0b4e934d624e..03deddb6a2f0 100644 --- a/interface/wx/sizer.h +++ b/interface/wx/sizer.h @@ -2071,5 +2071,12 @@ class wxBoxSizer : public wxSizer arguments had to be overridden in the derived classes instead. */ virtual void RepositionChildren(const wxSize& minSize); + + /** + Inform sizer about the first direction that has been decided (by + parent item). Returns true if it made use of the information (and + recalculated min size). + */ + virtual bool InformFirstDirection(int direction, int size, int availableOtherDir); }; From 3482c835353533fc4d5d2cccb7261b4e70f2197c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 20 Jan 2025 02:37:45 +0100 Subject: [PATCH 091/416] Fix logic in wxTextWrapper::Wrap() The existing code behaved completely wrongly whenever a word longer than the maximal width was present as it just gave up and didn't wrap anything at all after it -- when it should have just let this word overflow but still wrap the rest. Fix this and add a unit test checking that this works correctly now (several of the tests would have failed before). See #23339, #25100. (cherry picked from commit 597273020037ed853e0864d5bc2c1478a3a51286) --- docs/changes.txt | 1 + src/common/stattextcmn.cpp | 22 +++-- tests/Makefile.in | 4 + tests/makefile.gcc | 4 + tests/makefile.vc | 4 + tests/misc/textwrap.cpp | 148 +++++++++++++++++++++++++++++++++ tests/test.bkl | 1 + tests/test_gui.vcxproj | 1 + tests/test_gui.vcxproj.filters | 3 + 9 files changed, 181 insertions(+), 7 deletions(-) create mode 100644 tests/misc/textwrap.cpp diff --git a/docs/changes.txt b/docs/changes.txt index cce43337dfa1..126d75e37435 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -272,6 +272,7 @@ All (GUI): - Improve wxPropGrid checkboxes in high DPI (Alex Shvartzkop, #24650, #24651). - Don't break AUI layout if Update() called when window is iconized (#24930). - Improve wxInfoBar appearance (#24838, #24902, #25048). +- Fix multiple bugs in wxStaticText::Wrap() (#23339). - Fix WX_GL_COMPAT_PROFILE spelling (#24964). wxGTK: diff --git a/src/common/stattextcmn.cpp b/src/common/stattextcmn.cpp index 74aa8aa9c250..8e23c6e0e229 100644 --- a/src/common/stattextcmn.cpp +++ b/src/common/stattextcmn.cpp @@ -142,19 +142,27 @@ void wxTextWrapper::Wrap(wxWindow *win, const wxString& text, int widthMax) } // Find the last word to chop off. - const size_t lastSpace = line.rfind(' ', posEnd); - if ( lastSpace == wxString::npos ) + size_t posSpace = line.rfind(' ', posEnd); + if ( posSpace == wxString::npos ) { - // No spaces, so can't wrap. - DoOutputLine(line); - break; + // No spaces, so can't wrap, output until the end of the word + // which is defined here as just a sequence of non-space chars. + // + // TODO: Implement real Unicode word break algorithm. + posSpace = line.find(' ', posEnd); + if ( posSpace == wxString::npos ) + { + // No more spaces at all, output the rest of the line. + DoOutputLine(line); + break; + } } // Output the part that fits. - DoOutputLine(line.substr(0, lastSpace)); + DoOutputLine(line.substr(0, posSpace)); // And redo the layout with the rest. - line = line.substr(lastSpace + 1); + line = line.substr(posSpace + 1); } } } diff --git a/tests/Makefile.in b/tests/Makefile.in index a6b9ea02ed22..ae1f56772e6a 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -265,6 +265,7 @@ TEST_GUI_OBJECTS = \ test_gui_garbage.o \ test_gui_safearrayconverttest.o \ test_gui_settings.o \ + test_gui_textwrap.o \ test_gui_socket.o \ test_gui_tlw.o \ test_gui_dataview.o \ @@ -1175,6 +1176,9 @@ test_gui_safearrayconverttest.o: $(srcdir)/misc/safearrayconverttest.cpp $(TEST_ test_gui_settings.o: $(srcdir)/misc/settings.cpp $(TEST_GUI_ODEP) $(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/misc/settings.cpp +test_gui_textwrap.o: $(srcdir)/misc/textwrap.cpp $(TEST_GUI_ODEP) + $(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/misc/textwrap.cpp + test_gui_socket.o: $(srcdir)/net/socket.cpp $(TEST_GUI_ODEP) $(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/net/socket.cpp diff --git a/tests/makefile.gcc b/tests/makefile.gcc index 6a0ee0cd7b73..a7eae3594f3d 100644 --- a/tests/makefile.gcc +++ b/tests/makefile.gcc @@ -239,6 +239,7 @@ TEST_GUI_OBJECTS = \ $(OBJS)\test_gui_garbage.o \ $(OBJS)\test_gui_safearrayconverttest.o \ $(OBJS)\test_gui_settings.o \ + $(OBJS)\test_gui_textwrap.o \ $(OBJS)\test_gui_socket.o \ $(OBJS)\test_gui_tlw.o \ $(OBJS)\test_gui_dataview.o \ @@ -1134,6 +1135,9 @@ $(OBJS)\test_gui_safearrayconverttest.o: ./misc/safearrayconverttest.cpp $(OBJS)\test_gui_settings.o: ./misc/settings.cpp $(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\test_gui_textwrap.o: ./misc/textwrap.cpp + $(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\test_gui_socket.o: ./net/socket.cpp $(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $< diff --git a/tests/makefile.vc b/tests/makefile.vc index 43ea60cd9b08..f75651dcfd46 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -255,6 +255,7 @@ TEST_GUI_OBJECTS = \ $(OBJS)\test_gui_garbage.obj \ $(OBJS)\test_gui_safearrayconverttest.obj \ $(OBJS)\test_gui_settings.obj \ + $(OBJS)\test_gui_textwrap.obj \ $(OBJS)\test_gui_socket.obj \ $(OBJS)\test_gui_tlw.obj \ $(OBJS)\test_gui_dataview.obj \ @@ -1432,6 +1433,9 @@ $(OBJS)\test_gui_safearrayconverttest.obj: .\misc\safearrayconverttest.cpp $(OBJS)\test_gui_settings.obj: .\misc\settings.cpp $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\misc\settings.cpp +$(OBJS)\test_gui_textwrap.obj: .\misc\textwrap.cpp + $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\misc\textwrap.cpp + $(OBJS)\test_gui_socket.obj: .\net\socket.cpp $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\net\socket.cpp diff --git a/tests/misc/textwrap.cpp b/tests/misc/textwrap.cpp new file mode 100644 index 000000000000..3369b76b3d15 --- /dev/null +++ b/tests/misc/textwrap.cpp @@ -0,0 +1,148 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: tests/misc/textwrap.cpp +// Purpose: wxTextWrapper unit test +// Author: Vadim Zeitlin +// Created: 2025-01-19 +// Copyright: (c) 2025 Vadim Zeitlin +/////////////////////////////////////////////////////////////////////////////// + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +#include "testprec.h" + +#ifndef WX_PRECOMP + #include "wx/app.h" +#endif // !PCH + +#include "wx/textwrapper.h" + +// ---------------------------------------------------------------------------- +// wrapper implementation for testing +// ---------------------------------------------------------------------------- + +namespace +{ + +class HardBreakWrapper : public wxTextWrapper +{ +public: + HardBreakWrapper() = default; + + // Return the window used for wrapping: for now, use the main frame because + // it doesn't really matter which one we use. + wxWindow* GetWindow() const + { + return wxTheApp->GetTopWindow(); + } + + // Helper function returning the width of the given text. + int GetExtent(const wxString& text) const + { + return GetWindow()->GetTextExtent(text).x; + } + + // Wrap and return the number of lines in the wrapped text. + size_t Do(const wxString& text, int width) + { + Wrap(GetWindow(), text, width); + + return m_lines.size(); + } + + const wxString& GetLine(size_t n) const + { + REQUIRE( n < m_lines.size() ); + + return m_lines[n]; + } + + wxString GetResult() const { return wxJoin(m_lines, '\n'); } + +protected: + void OnOutputLine(const wxString& line) override { m_lines.push_back(line); } + +private: + wxArrayString m_lines; +}; + +} // anonymous namespace + +// ---------------------------------------------------------------------------- +// the tests +// ---------------------------------------------------------------------------- + +TEST_CASE("wxTextWrapper::Wrap", "[text]") +{ + // Note that this text shouldn't contain line breaks. + const wxString text = + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + ; + + HardBreakWrapper w; + + // Check that not wrapping the text works. + SECTION("None") + { + REQUIRE( w.Do(text, -1) == 1 ); + CHECK( w.GetLine(0) == text ); + } + + SECTION("Wide") + { + REQUIRE( w.Do(text, 200*w.GetExtent("x")) == 1 ); + CHECK( w.GetLine(0) == text ); + } + + // Check that wrapping the text using reasonable width works. + SECTION("Normal") + { + const auto n = w.Do(text, 40*w.GetExtent("x")); + INFO("Wrapped text:\n" << w.GetResult() << "\n"); + CHECK( n >= 3 ); + } + + SECTION("Narrow") + { + const auto n = w.Do(text, 20*w.GetExtent("x")); + INFO("Wrapped text:\n" << w.GetResult() << "\n"); + CHECK( n >= 7 ); + } + + // Make the window too narrow to fit the word "consectetur" and check that + // the text is still wrapped reasonableness well. + SECTION("Thin") + { + const auto n = w.Do(text, w.GetExtent("Lorum")); + INFO("Wrapped text:\n" << w.GetResult() << "\n"); + CHECK( n > 10 ); + CHECK( w.GetLine(0) == "Lorem" ); + + // There should be just one line with the word "consectetur", longer + // than the wrap width. + bool found = false; + for ( size_t i = 1; i < n; ++i ) + { + if ( w.GetLine(i) == "consectetur" ) + { + found = true; + break; + } + } + + CHECK( found ); + } + + // Make the window too narrow to fit even a single character so that + // wrapped text has one word per line. + SECTION("Narrowest") + { + const auto n = w.Do(text, 1); + INFO("Wrapped text:\n" << w.GetResult() << "\n"); + REQUIRE( n == static_cast(text.Freq(' ')) + 1 ); + CHECK( w.GetLine(0) == "Lorem" ); + CHECK( w.GetLine(5) == "consectetur" ); + } +} diff --git a/tests/test.bkl b/tests/test.bkl index 2805f66c5f9f..b87d05759931 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -269,6 +269,7 @@ misc/garbage.cpp misc/safearrayconverttest.cpp misc/settings.cpp + misc/textwrap.cpp - 3 - 1 - 3 + 4 + 0 + 4 From d2528e28878a453e743deeefc6b3d34ec364b093 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 17 Mar 2025 17:52:18 +0100 Subject: [PATCH 137/416] Add new test file to manually maintained MSVS projects This add the file added in 3482c83535 (Fix logic in wxTextWrapper::Wrap(), 2025-01-20) to MSVS 2005 and 2008 projects too. --- tests/test_vc8_test_gui.vcproj | 4 ++++ tests/test_vc9_test_gui.vcproj | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/tests/test_vc8_test_gui.vcproj b/tests/test_vc8_test_gui.vcproj index 978ae06206b7..b06faf5701c9 100644 --- a/tests/test_vc8_test_gui.vcproj +++ b/tests/test_vc8_test_gui.vcproj @@ -1254,6 +1254,10 @@ RelativePath=".\controls\textentrytest.cpp" > + + diff --git a/tests/test_vc9_test_gui.vcproj b/tests/test_vc9_test_gui.vcproj index 0cf72dfaae42..ebe4e7b9f0d8 100644 --- a/tests/test_vc9_test_gui.vcproj +++ b/tests/test_vc9_test_gui.vcproj @@ -1226,6 +1226,10 @@ RelativePath=".\controls\textentrytest.cpp" > + + From d7717560919af475ccc7394ed1b76e6711e065ed Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 17 Mar 2025 18:28:45 +0100 Subject: [PATCH 138/416] Update release files for 3.2.7 Fix the release date, update the change log and announcements and the release notes. --- docs/changes.txt | 6 +- docs/doxygen/mainpages/manual.h | 2 +- docs/msw/binaries.md | 8 +- docs/publicity/announce.txt | 43 ++++++----- docs/readme.txt | 40 ++++++---- docs/release.md | 132 ++++++++++++++++---------------- 6 files changed, 122 insertions(+), 109 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index c12a0b99900e..52e292a6c5d5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -248,7 +248,7 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. -3.2.7: (released 2025-??-??) +3.2.7: (released 2025-03-20) ---------------------------- All: @@ -261,7 +261,7 @@ All: - Fix compilation with clang 19 (Lauri Nurmi, #24922). - Fix crash in wxWebRequestCURL when connection was refused (#24885). - Fix build with libc++ v19 (#24959). -- Add wxApp::SetErrorExitCode() to customize exit code on initialization error. +- Add wxApp::SetErrorExitCode() to better handle initialization errors (#24770). - Fix buffer read overflow when compiling RE ending with backslash (#25040). - Fix crash in wxWebRequest::Close() with recent libcurl (#24969). - Make wxTempFile::Commit() really atomic (#25088). @@ -319,7 +319,7 @@ wxOSX: - Fix not making dialogs modal in some circumstances (Dmitry Makarenko, #25087). - Fix missing mouse events in scrolled windows under macOS 14+ (#24790, #24809). - Fix regression in GetPreferredUILanguage() in some cases (#24804). -- Fix Z-order of auto-complete popup of wxStyledTextCtrl (##25202). +- Fix Z-order of auto-complete popup of wxStyledTextCtrl (#25202). - Fix CMake build with PCH disabled (Maarten Bent, #24851). - Fix truncating labels of newly added wxNotebook pages (#25194). - Fix truncating wxEvent time stamp after ~25 days (Artur Sochirca, #24960). diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h index 5e8f3d70b95e..51fa6f2b4e67 100644 --- a/docs/doxygen/mainpages/manual.h +++ b/docs/doxygen/mainpages/manual.h @@ -14,7 +14,7 @@ @author Julian Smart, Vadim Zeitlin, Robin Dunn, Stefan Csomor, Bryan Petty, Francesco Montorsi, Robert Roebling et al -@date September 09, 2024 +@date March 20, 2025 Welcome to wxWidgets, a stable and powerful open source framework for developing native cross-platform GUI applications in C++! diff --git a/docs/msw/binaries.md b/docs/msw/binaries.md index 2a3fb528171d..7aca97996b6f 100644 --- a/docs/msw/binaries.md +++ b/docs/msw/binaries.md @@ -17,7 +17,7 @@ Getting the files ----------------- First, you need to get the correct files. You will always need the -`wxWidgets-3.2.6-headers.7z` one but the rest depends on your compiler version +`wxWidgets-3.2.7-headers.7z` one but the rest depends on your compiler version and architecture: as different versions of MSVC compiler are not binary compatible, you should select the files with the correct `vc80`, `vc90`, `vc100`, `vc110`, `vc120`, or `vc14x` @@ -28,14 +28,14 @@ or the ones without this suffix for the still more common 32-bit builds. After determining the combination of suffixes you need, you should download the "Dev" and the "ReleaseDLL" files in addition to the "Headers" one above, e.g. for 32-bit MSVS 2017 development you need -`wxMSW-3.2.6_vc14x_Dev.7z` and `wxMSW-3.2.6_vc14x_ReleaseDLL.7z`. +`wxMSW-3.2.7_vc14x_Dev.7z` and `wxMSW-3.2.7_vc14x_ReleaseDLL.7z`. All binaries are available at: -https://www.wxwidgets.org/downloads#v3.2.6_msw +https://www.wxwidgets.org/downloads#v3.2.7_msw Once you have the files you need, unzip all of them into the same directory, for -example `c:\wx\3.2.6`. You should have `include` and `lib` subdirectories under +example `c:\wx\3.2.7`. You should have `include` and `lib` subdirectories under this directory, as well as files such as `wxwidgets.props`. Note: To avoid hard-coding this path into your projects, define `wxwin` diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt index dd6163a1675d..a2a3d198223f 100644 --- a/docs/publicity/announce.txt +++ b/docs/publicity/announce.txt @@ -1,40 +1,47 @@ -September 09, 2024 -- The wxWidgets team is pleased to announce a new +March 20, 2025 -- The wxWidgets team is pleased to announce a new stable release of our open source framework for the development of native cross-platform applications in C++. -wxWidgets 3.2.6 is part of the API and ABI-stable 3.2.x release series and is +wxWidgets 3.2.7 is part of the API and ABI-stable 3.2.x release series and is now available from https://www.wxwidgets.org/downloads/ and - https://github.com/wxWidgets/wxWidgets/releases/v3.2.6 + https://github.com/wxWidgets/wxWidgets/releases/v3.2.7 -This release contains relatively few changes compared to the previous one, -but they include important bug fixes, such as: +This release contains more than a hundred bug fixes and improvements. Some of +the most important fixes are: -- Fix resource leak in wxBitmapBundle in some circumstances (#24703). -- Fix crash when using static wx libraries in a Windows DLL (#24730). -- Fix possible crash during drag-and-drop in wxGTK (#24677). -- Fix wxDatePickerCtrl being unusable in some locales in wxGTK (#24533). -- Fix regression in focus handling under macOS 14+ (#24605, #24667). -- Fix regression in wxTranslations introduced in 3.2.3 (#24297). +- Build fixes for gcc 14 (#24248, #24869) and clang 19 (#24922, #24959, #25064). +- Fix build with macOS 15 SDK (#24724, #24879). +- Many fixes to key event generation in wxGTK (#25053, #25199, #25200). +- Avoid repaint problems when using wxWindow::Update() with Wayland (#25036). +- Fix crashes when using wxWebRequest with libcurl (#24885, #24969). + +New in this release: + +- Add wxNO_UNUSED_VARIABLES to opt-in into getting helpful warnings (#24882). +- Add wxApp::SetErrorExitCode() to better handle initialization errors (#24770). Other changes include: -- High DPI fixes for wxBitmapComboBox (#24563), wxDataViewCtrl (#24648), - wxNotebook (#24606), wxPropertyGrid (#24607), wxWizard (#24743). -- Improve wxSlider appearance under macOS (#24532, #24539). -- Correctly use current keyboard layout in key events in wxGTK (#24772). -- Fix handling of ligatures in wxStyledTextCtrl in wxGTK (#13168). +- More high DPI fixes in wxMSW (#24650, #24651, #24815, #24850, #24821, #24941). +- Improve wxInfoBar appearance (#24838, #24902, #25048). +- Fix possible crash during session termination in wxMSW (#24903). +- Wayland fixes to copy-pasting (#24701) and drag-and-drop (#25116) in wxGTK. +- Fix truncating labels of newly added wxNotebook pages in wxOSX (#25194). +- Fix Z-order of auto-complete popup of wxStyledTextCtrl in wxOSX (#25202). +- Fix buffer read overflow when compiling RE ending with backslash (#25040). +- Make wxTempFile::Commit() and wxRenameFile() really atomic (#25088). Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.6/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt -This release is API and ABI-compatible with the previous 3.2.x, so +This release is API and ABI-compatible with the previous 3.2.x, meaning that the existing applications don't even need to be rebuilt to profit from all the fixes above if they use shared/dynamic libraries. And if they do need to be recompiled, this can be done without any changes to the code. diff --git a/docs/readme.txt b/docs/readme.txt index 36688756040d..94874e69cb04 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -32,29 +32,35 @@ installation instructions. -Changes since 3.2.5 +Changes since 3.2.6 ------------------- -This release contains multiple bug fixes, including some regressions, as well -as improvements to the CMake build system. Some of the most important changes: +This release contains more than a hundred bug fixes and improvements. Some of +the most important fixes are: -- Fix resource leak in wxBitmapBundle in some circumstances (#24703). -- Fix crash when using static wx libraries in a Windows DLL (#24730). -- Fix possible crash during drag-and-drop in wxGTK (#24677). -- Fix wxDatePickerCtrl being unusable in some locales in wxGTK (#24533). -- Fix regression in focus handling under macOS 14+ (#24605, #24667). -- Fix regression in wxTranslations introduced in 3.2.3 (#24297). +- Build fixes for gcc 14 (#24248, #24869) and clang 19 (#24922, #24959, #25064). +- Fix build with macOS 15 SDK (#24724, #24879). +- Many fixes to key event generation in wxGTK (#25053, #25199, #25200). +- Avoid repaint problems when using wxWindow::Update() with Wayland (#25036). +- Fix crashes when using wxWebRequest with libcurl (#24885, #24969). -Other changes include: +New in this release: + +- Add wxNO_UNUSED_VARIABLES to opt-in into getting helpful warnings (#24882). +- Add wxApp::SetErrorExitCode() to better handle initialization errors (#24770). -- High DPI fixes for wxBitmapComboBox (#24563), wxDataViewCtrl (#24648), - wxNotebook (#24606), wxPropertyGrid (#24607), wxWizard (#24743). -- Improve wxSlider appearance under macOS (#24532, #24539). -- Correctly use current keyboard layout in key events in wxGTK (#24772). -- Fix handling of ligatures in wxStyledTextCtrl in wxGTK (#13168). +Other changes include: +- More high DPI fixes in wxMSW (#24650, #24651, #24815, #24850, #24821, #24941). +- Improve wxInfoBar appearance (#24838, #24902, #25048). +- Fix possible crash during session termination in wxMSW (#24903). +- Wayland fixes to copy-pasting (#24701) and drag-and-drop (#25116) in wxGTK. +- Fix truncating labels of newly added wxNotebook pages in wxOSX (#25194). +- Fix Z-order of auto-complete popup of wxStyledTextCtrl in wxOSX (#25202). +- Fix buffer read overflow when compiling RE ending with backslash (#25040). +- Make wxTempFile::Commit() and wxRenameFile() really atomic (#25088). -Please see the full change log for more details: +and more, please see the full change log for more details: https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt @@ -156,4 +162,4 @@ developed by its users and your contributions to it are always welcome! Have fun! -The wxWidgets Team, September 2024 +The wxWidgets Team, March 2025 diff --git a/docs/release.md b/docs/release.md index 528c51194e1b..cb158f65ba0c 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,32 +1,32 @@ Welcome to wxWidgets, a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. -wxWidgets 3.2.6 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.6 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. +wxWidgets 3.2.7 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.6 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. We recommend using this version for any new wxWidgets applications. Existing applications using wxWidgets 3.0 or 3.1 shouldn't require any special effort to upgrade to this version too, so please try upgrading them to it. -Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.6/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.6/docs/changes.txt) for more details of the changes in it. +Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt) for more details of the changes in it. ## Source Files and Documentation If you intend to build wxWidgets from sources (which is recommended), please do **NOT** download the files using the "Source code" links just above, which are automatically generated by GitHub and don't contain the submodules sources which are necessary for building wxWidgets. -Instead, download one of [wxWidgets-3.2.6.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.6/wxWidgets-3.2.6.zip) or [wxWidgets-3.2.6.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.6/wxWidgets-3.2.6.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.6.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.6/wxWidgets-3.2.6.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. +Instead, download one of [wxWidgets-3.2.7.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxWidgets-3.2.7.zip) or [wxWidgets-3.2.7.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxWidgets-3.2.7.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.7.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxWidgets-3.2.7.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. -In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.6). +In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.7). -Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.6/wxMSW-3.2.6-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. +Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxMSW-3.2.7-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.6-Setup.exe - 0000000000000000000000000000000000000000 wxWidgets-3.2.6-docs-chm.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.6-docs-html.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.6-docs-html.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.6-headers.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.6.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.6.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.6.zip + 0000000000000000000000000000000000000000 wxMSW-3.2.7-Setup.exe + 0000000000000000000000000000000000000000 wxWidgets-3.2.7-docs-chm.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.7-docs-html.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.7-docs-html.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.7-headers.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.7.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.7.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.7.zip ## Binaries @@ -39,7 +39,7 @@ We provide pre-built binary files for the following compilers: ### For Developers -For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.6_Headers.7z` file and one of `wxMSW-3.2.6-vcXXX_Dev.7z` or `wxMSW-3.2.6_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). +For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.7_Headers.7z` file and one of `wxMSW-3.2.7-vcXXX_Dev.7z` or `wxMSW-3.2.7_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols. @@ -47,67 +47,67 @@ Note that if you're setting up a new project using these binaries, the simplest ### For End Users -End users may download one of `wxMSW-3.2.6_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.6_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. +End users may download one of `wxMSW-3.2.7_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.7_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. ### For Debugging -* Microsoft Visual C++ users: Files `wxMSW-3.2.6_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. +* Microsoft Visual C++ users: Files `wxMSW-3.2.7_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. * MinGW-TDM users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contains the debug symbols). ### Binary File Download Verification To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc730_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc730_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc730_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc730_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc810_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc810_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc810_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc810_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1030TDM_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1030TDM_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1030TDM_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1030TDM_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1220_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1220_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1220_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1220_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1320_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1320_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1320_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_gcc1320_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc90_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc90_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc90_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc90_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc90_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc90_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc100_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc100_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc100_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc100_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc100_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc100_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc110_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc110_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc110_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc110_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc110_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc110_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc120_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc120_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc120_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc120_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc120_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc120_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc14x_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc14x_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc14x_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc14x_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc14x_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.6_vc14x_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_x64_ReleasePDB.7z ## Reporting Problems From d74ef99edca34d5b44b74875fcdf97cc236feb75 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 17 Mar 2025 23:14:26 +0100 Subject: [PATCH 139/416] Update the latest versions of supported compilers gcc 14 and clang 19 are known to work. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 56942ff615cb..e05586d65b33 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,8 @@ This version of wxWidgets supports the following primary platforms: Most popular C++ compilers are supported including but not limited to: - Microsoft Visual C++ 2005 or later (up to 2022). -- g++ 4 or later (up to 12), including MinGW/MinGW-64/TDM under Windows. -- Clang (up to 14). +- g++ 4 or later (up to 14), including MinGW/MinGW-64/TDM under Windows. +- Clang (up to 19). - Intel icc compiler. - Oracle (ex-Sun) CC. From a7d97b966993214a5ea8928aec6ed5fa6e32f939 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 18 Mar 2025 14:48:15 +0100 Subject: [PATCH 140/416] Don't use C++11 member initialization in wxToastEventHandler This fixes MSVS 2010 build after the changes of 669438636b (Fix events generated when toast-based notifications are dismissed, 2024-09-23). --- src/msw/rt/notifmsgrt.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/msw/rt/notifmsgrt.cpp b/src/msw/rt/notifmsgrt.cpp index 3079bdc93f41..2648468d3c48 100644 --- a/src/msw/rt/notifmsgrt.cpp +++ b/src/msw/rt/notifmsgrt.cpp @@ -51,7 +51,7 @@ class wxToastEventHandler : wxToastEventHandler(wxToastNotifMsgImpl* toastImpl) : m_impl(toastImpl) { - + m_cRef = 0; } void Detach() @@ -115,7 +115,7 @@ class wxToastEventHandler : } private: - ULONG m_cRef = 0; + ULONG m_cRef; wxToastNotifMsgImpl* m_impl; }; From a3e09d4e08753be36997f821fcdfc52909820b99 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 21 Mar 2025 23:05:04 +0100 Subject: [PATCH 141/416] Update checksums of the 3.2.7 release files --- docs/release.md | 120 +++++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 58 deletions(-) diff --git a/docs/release.md b/docs/release.md index cb158f65ba0c..28c9873a2726 100644 --- a/docs/release.md +++ b/docs/release.md @@ -19,14 +19,14 @@ Finally, Microsoft Windows users may download [Setup.exe file](https://github.co To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.7-Setup.exe - 0000000000000000000000000000000000000000 wxWidgets-3.2.7-docs-chm.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.7-docs-html.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.7-docs-html.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.7-headers.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.7.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.7.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.7.zip + 7afc92493fc4168f10c006f8deeb8554b93f5d49 wxMSW-3.2.7-Setup.exe + 803cef0f36e1d088642a16875e7d4b686786874c wxWidgets-3.2.7-docs-chm.zip + ec850721b37b2674ae146b2befdc838633346e1f wxWidgets-3.2.7-docs-html.tar.bz2 + 5f2ed919be688ea731b77a8bbae7755b021790d7 wxWidgets-3.2.7-docs-html.zip + af0c6ec737cc19a5ce666b315c47cb3dfd6aa75c wxWidgets-3.2.7-headers.7z + aadd566e5d9440adcb601a0e3672d41992ea8799 wxWidgets-3.2.7.7z + 744be271f9f5893c21c6c0b048cdf7f744a6ffe0 wxWidgets-3.2.7.tar.bz2 + 9c1906e8a7db0c27c88be8d531fed1b980d5e56b wxWidgets-3.2.7.zip ## Binaries @@ -58,56 +58,60 @@ End users may download one of `wxMSW-3.2.7_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.7_ To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc730_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc810_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1030TDM_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1220_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_gcc1320_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc90_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc100_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc110_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc120_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.7_vc14x_x64_ReleasePDB.7z + f5eb1e8b2abbac915be3ff49e0506502514340e1 wxMSW-3.2.7_gcc730_Dev.7z + 91119b7bdaa0e0ce51fe4cca54bc75657ed85501 wxMSW-3.2.7_gcc730_ReleaseDLL.7z + 89e6e28e8fa4ce42282bf229e85efdb9fc743550 wxMSW-3.2.7_gcc730_x64_Dev.7z + 6ea133f03dd858c93ef9283177ffc9e1fd22ad8c wxMSW-3.2.7_gcc730_x64_ReleaseDLL.7z + b218837540a1877d69903c09370bb59aecf798b1 wxMSW-3.2.7_gcc810_Dev.7z + b7a297036a076ea357aca4b05dacba401bba0dd2 wxMSW-3.2.7_gcc810_ReleaseDLL.7z + 1083f0b188cbd0196e04aa45df4e2cb43b05f7bd wxMSW-3.2.7_gcc810_x64_Dev.7z + 565e78fadbdf73c320d616f462a9d1e575a03bd7 wxMSW-3.2.7_gcc810_x64_ReleaseDLL.7z + f684bfafa6da060279b34805d6e2de08cd71a22a wxMSW-3.2.7_gcc1030TDM_Dev.7z + 5bf1e0b18b2cf373bb79ed348dc0e5f3a056e7cc wxMSW-3.2.7_gcc1030TDM_ReleaseDLL.7z + 003884d0a55c323b1912300585b4f4f7c181e09a wxMSW-3.2.7_gcc1030TDM_x64_Dev.7z + b8b7dce09c548906fdf7590b274e4db20a29d59c wxMSW-3.2.7_gcc1030TDM_x64_ReleaseDLL.7z + c68a1d40fe03561ac6b98052b6e2b9467840ca6e wxMSW-3.2.7_gcc1220_Dev.7z + 03fa15cada0b007f79b8496430bd058f264fdbf6 wxMSW-3.2.7_gcc1220_ReleaseDLL.7z + 86aadf1765019db81c94964f9d728cf91c065bb4 wxMSW-3.2.7_gcc1220_x64_Dev.7z + 9a69c99e9d327be48514885a03767dd676608255 wxMSW-3.2.7_gcc1220_x64_ReleaseDLL.7z + d2ed83360f62c13774b48be3477efa71768c91ac wxMSW-3.2.7_gcc1320_Dev.7z + 064413832f1c5b3d594a6d1721c23e3c4c09407e wxMSW-3.2.7_gcc1320_ReleaseDLL.7z + 1b94f9db4573a2c7aef4856f2528b7f581e56e27 wxMSW-3.2.7_gcc1320_x64_Dev.7z + 1d72982138390c23c26a87c8dac9b2479dc66f0a wxMSW-3.2.7_gcc1320_x64_ReleaseDLL.7z + 6dfd137b5dc762f391e03facd0b8367d22a41e4c wxMSW-3.2.7_gcc1420_Dev.7z + 346ee393f12de18f065e0a8fa22eb7b3cb3c30e8 wxMSW-3.2.7_gcc1420_ReleaseDLL.7z + 9eda21a05f8b147d9a8f61d3a943a16336920311 wxMSW-3.2.7_gcc1420_x64_Dev.7z + 5a9969c850e207c6ddfd442a497fc1c52922d858 wxMSW-3.2.7_gcc1420_x64_ReleaseDLL.7z + b07e77fdf37f40c7a92eaefc500b364fff2bc96a wxMSW-3.2.7_vc90_Dev.7z + 1818b2391b2c3f30ccbed737d3752569e914a07b wxMSW-3.2.7_vc90_ReleaseDLL.7z + cdc95c954d8bb3003ab8c6e95a7f098e0c22e7c2 wxMSW-3.2.7_vc90_ReleasePDB.7z + e7f27fa671e8ee4e6a7f8b428f4be92ab14c5433 wxMSW-3.2.7_vc90_x64_Dev.7z + 14ba139c9c8bbc2d79885338fd423dbc9065e637 wxMSW-3.2.7_vc90_x64_ReleaseDLL.7z + 44fa7c6d8fcb72d685430c24ee4d6f259dff7d8a wxMSW-3.2.7_vc90_x64_ReleasePDB.7z + 0d52de040bd04ca8438dc4badf5f42551dc67803 wxMSW-3.2.7_vc100_Dev.7z + 697dfd101663b150781c829db5377b6dbe5ed147 wxMSW-3.2.7_vc100_ReleaseDLL.7z + 10d5e83426dae8749d5697fdfda45a2169047f29 wxMSW-3.2.7_vc100_ReleasePDB.7z + 4a59e89e1b36cddee678b24e81a347b3263f3319 wxMSW-3.2.7_vc100_x64_Dev.7z + ea8355b8c533c93875872e2264beadada4610a18 wxMSW-3.2.7_vc100_x64_ReleaseDLL.7z + bd312abf637935f4785a89d2314f749d239631d0 wxMSW-3.2.7_vc100_x64_ReleasePDB.7z + 693caded6fbbeb1163b44b59556baa70ea71747f wxMSW-3.2.7_vc110_Dev.7z + a94e38210514335ef9af45d625060ea88750fb66 wxMSW-3.2.7_vc110_ReleaseDLL.7z + 53466c7f800718d035b8d859794ac4f6454b4bed wxMSW-3.2.7_vc110_ReleasePDB.7z + 781f4676f9ffac82d69e43fe6a4c8c488e275ba6 wxMSW-3.2.7_vc110_x64_Dev.7z + d9249f123458e4dd468cc5974b3009c1467ef20c wxMSW-3.2.7_vc110_x64_ReleaseDLL.7z + 30b62b4b87ae7f38722f50008d91db3b8b7d0e9e wxMSW-3.2.7_vc110_x64_ReleasePDB.7z + ec738a99c01991759b3ed1d6382c9589fe6a9759 wxMSW-3.2.7_vc120_Dev.7z + a8d393c70e71a0a41b10b6d8b5885e30ec142976 wxMSW-3.2.7_vc120_ReleaseDLL.7z + 990f5eb61cf4a379d7f6f00ae0c64356f02da386 wxMSW-3.2.7_vc120_ReleasePDB.7z + cbde331873a59b6a74fdf4c4696a8955817defcf wxMSW-3.2.7_vc120_x64_Dev.7z + 278b941b02f69f278ebd247eeb90a77cebfa0afd wxMSW-3.2.7_vc120_x64_ReleaseDLL.7z + 3b9e6754a2fbc18eb29b0df6e4bcd4f8aec5ae2c wxMSW-3.2.7_vc120_x64_ReleasePDB.7z + e5e36f95b09678160dc3067cc84e02bef3556a77 wxMSW-3.2.7_vc14x_Dev.7z + e68733415d0d8a0dd4ac8b73ccfdfdd66d552953 wxMSW-3.2.7_vc14x_ReleaseDLL.7z + 4d9228662f997d92dfd89749dbe8dbdcc2602f16 wxMSW-3.2.7_vc14x_ReleasePDB.7z + 2d6c1c17e440193dec582b68a5beea9282f9388e wxMSW-3.2.7_vc14x_x64_Dev.7z + a79cc9582869e35c02fe7b8607e7cc0a991f0334 wxMSW-3.2.7_vc14x_x64_ReleaseDLL.7z + b5f8b2948e7ad6f1008e7f307d0353790c16307b wxMSW-3.2.7_vc14x_x64_ReleasePDB.7z ## Reporting Problems From d66518388c1f72bdbd478cb57a2c9ff711521d3d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 21 Mar 2025 23:08:36 +0100 Subject: [PATCH 142/416] Update version to 3.2.8 Run misc/scripts/inc_release followed by bakefile_gen and autoconf. Also add a new section to the change log. --- Makefile.in | 8 ++++---- build/bakefiles/version.bkl | 2 +- build/msw/makefile.gcc | 2 +- build/msw/makefile.vc | 2 +- build/msw/wx_setup.props | 2 +- build/osx/wxvers.xcconfig | 2 +- build/tools/msvs/getversion.bat | 2 +- configure | 20 ++++++++++---------- configure.in | 4 ++-- demos/bombs/Makefile.in | 2 +- demos/forty/Makefile.in | 2 +- demos/fractal/Makefile.in | 2 +- demos/life/Makefile.in | 2 +- demos/poem/Makefile.in | 2 +- docs/changes.txt | 4 ++++ docs/doxygen/Doxyfile | 2 +- docs/readme.txt | 10 +++++----- include/wx/osx/config_xcode.h | 4 ++-- include/wx/version.h | 4 ++-- samples/access/Makefile.in | 2 +- samples/animate/Makefile.in | 2 +- samples/artprov/Makefile.in | 2 +- samples/aui/Makefile.in | 2 +- samples/calendar/Makefile.in | 2 +- samples/caret/Makefile.in | 2 +- samples/clipboard/Makefile.in | 2 +- samples/collpane/Makefile.in | 2 +- samples/combo/Makefile.in | 2 +- samples/config/Makefile.in | 2 +- samples/dataview/Makefile.in | 2 +- samples/debugrpt/Makefile.in | 2 +- samples/dialogs/Makefile.in | 2 +- samples/dialup/Makefile.in | 2 +- samples/display/Makefile.in | 2 +- samples/dll/Makefile.in | 2 +- samples/dnd/Makefile.in | 2 +- samples/docview/Makefile.in | 2 +- samples/dragimag/Makefile.in | 2 +- samples/drawing/Makefile.in | 2 +- samples/erase/Makefile.in | 2 +- samples/event/Makefile.in | 2 +- samples/except/Makefile.in | 2 +- samples/exec/Makefile.in | 2 +- samples/font/Makefile.in | 2 +- samples/fswatcher/Makefile.in | 2 +- samples/grid/Makefile.in | 2 +- samples/help/Makefile.in | 2 +- samples/htlbox/Makefile.in | 2 +- samples/html/about/Makefile.in | 2 +- samples/html/help/Makefile.in | 2 +- samples/html/helpview/Makefile.in | 2 +- samples/html/printing/Makefile.in | 2 +- samples/html/test/Makefile.in | 2 +- samples/html/virtual/Makefile.in | 2 +- samples/html/widget/Makefile.in | 2 +- samples/html/zip/Makefile.in | 2 +- samples/image/Makefile.in | 2 +- samples/internat/Makefile.in | 2 +- samples/ipc/Makefile.in | 2 +- samples/joytest/Makefile.in | 2 +- samples/keyboard/Makefile.in | 2 +- samples/layout/Makefile.in | 2 +- samples/listctrl/Makefile.in | 2 +- samples/mdi/Makefile.in | 2 +- samples/mediaplayer/Makefile.in | 2 +- samples/memcheck/Makefile.in | 2 +- samples/menu/Makefile.in | 2 +- samples/minimal/Info_cocoa.plist | 8 ++++---- samples/minimal/Makefile.in | 2 +- samples/nativdlg/Makefile.in | 2 +- samples/notebook/Makefile.in | 2 +- samples/oleauto/Makefile.in | 2 +- samples/opengl/cube/Makefile.in | 2 +- samples/opengl/isosurf/Makefile.in | 2 +- samples/opengl/penguin/Makefile.in | 2 +- samples/opengl/pyramid/Makefile.in | 2 +- samples/ownerdrw/Makefile.in | 2 +- samples/popup/Makefile.in | 2 +- samples/power/Makefile.in | 2 +- samples/preferences/Makefile.in | 2 +- samples/printing/Makefile.in | 2 +- samples/propgrid/Makefile.in | 2 +- samples/regtest/Makefile.in | 2 +- samples/render/Makefile.in | 2 +- samples/ribbon/Makefile.in | 2 +- samples/richtext/Makefile.in | 2 +- samples/sashtest/Makefile.in | 2 +- samples/scroll/Makefile.in | 2 +- samples/shaped/Makefile.in | 2 +- samples/sockets/Makefile.in | 2 +- samples/sound/Makefile.in | 2 +- samples/splash/Makefile.in | 2 +- samples/splitter/Makefile.in | 2 +- samples/statbar/Makefile.in | 2 +- samples/stc/Makefile.in | 2 +- samples/svg/Makefile.in | 2 +- samples/taborder/Makefile.in | 2 +- samples/taskbar/Makefile.in | 2 +- samples/taskbarbutton/Makefile.in | 2 +- samples/text/Makefile.in | 2 +- samples/thread/Makefile.in | 2 +- samples/toolbar/Makefile.in | 2 +- samples/treectrl/Makefile.in | 2 +- samples/treelist/Makefile.in | 2 +- samples/typetest/Makefile.in | 2 +- samples/uiaction/Makefile.in | 2 +- samples/validate/Makefile.in | 2 +- samples/vscroll/Makefile.in | 2 +- samples/webrequest/Makefile.in | 2 +- samples/webview/Makefile.in | 2 +- samples/widgets/Makefile.in | 2 +- samples/wizard/Makefile.in | 2 +- samples/wrapsizer/Makefile.in | 2 +- samples/xrc/Makefile.in | 2 +- samples/xti/Makefile.in | 2 +- tests/Makefile.in | 2 +- tests/benchmarks/Makefile.in | 2 +- utils/helpview/src/Makefile.in | 2 +- utils/screenshotgen/src/Makefile.in | 2 +- 119 files changed, 144 insertions(+), 140 deletions(-) diff --git a/Makefile.in b/Makefile.in index 4c69aae4c522..056bd470144a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -82,7 +82,7 @@ wxCFLAGS_C99 = @wxCFLAGS_C99@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WXREGEX_CFLAGS = $(WX_CPPFLAGS) -DNDEBUG \ -I$(wx_top_builddir)/3rdparty/pcre/src -D__WX__ -DHAVE_CONFIG_H \ @@ -2216,7 +2216,7 @@ LOCALE_LINGUAS = af an ar ca ca@valencia co cs da de el es eu fa_IR fi fr gl_ES @COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX) @COND_USE_PLUGINS_0@PLUGIN_ADV_EXTRALIBS = $(EXTRALIBS_SDL) @COND_PLATFORM_MACOSX_1@WXMACVERSION_CMD = \ -@COND_PLATFORM_MACOSX_1@ -compatibility_version 5.0 -current_version 5.0 +@COND_PLATFORM_MACOSX_1@ -compatibility_version 5.0 -current_version 5.1 @COND_USE_GUI_0@PORTNAME = base @COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION) @COND_TOOLKIT_MAC@WXBASEPORT = _carbon @@ -13978,9 +13978,9 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0 \ @COND_USE_SOVERSION_0@dll___targetsuf2 = .$(SO_SUFFIX) @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@dll___targetsuf3 \ @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \ -@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.4.0 +@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.4.1 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@dll___targetsuf3 \ -@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.4.0.$(SO_SUFFIX) +@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.4.1.$(SO_SUFFIX) @COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@dll___targetsuf3 = -0.$(SO_SUFFIX) @COND_USE_SOVERSION_0@dll___targetsuf3 = .$(SO_SUFFIX) @COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@dll___targetsuf3 = .$(SO_SUFFIX).0 diff --git a/build/bakefiles/version.bkl b/build/bakefiles/version.bkl index 868441c0aea9..7f85fc4aaf3a 100644 --- a/build/bakefiles/version.bkl +++ b/build/bakefiles/version.bkl @@ -23,7 +23,7 @@ changes, change C:R:A to C:R+1:A --> 4 - 0 + 1 4 diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index a4553ff31be8..a9973443dc85 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -5989,7 +5989,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=7 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=8 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index e97f95c0a37a..f1d20ad7f457 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -6456,7 +6456,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=7 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=8 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/wx_setup.props b/build/msw/wx_setup.props index 052eee4a2170..08da95c24d2a 100644 --- a/build/msw/wx_setup.props +++ b/build/msw/wx_setup.props @@ -5,7 +5,7 @@ - 327 + 328 32 msw vc diff --git a/build/osx/wxvers.xcconfig b/build/osx/wxvers.xcconfig index 7e85f1b20434..f1088d3fb4fb 100644 --- a/build/osx/wxvers.xcconfig +++ b/build/osx/wxvers.xcconfig @@ -1,4 +1,4 @@ // update this file with new version numbers DYLIB_COMPATIBILITY_VERSION = 3.2 -DYLIB_CURRENT_VERSION = 3.2.7 +DYLIB_CURRENT_VERSION = 3.2.8 diff --git a/build/tools/msvs/getversion.bat b/build/tools/msvs/getversion.bat index b936302a07be..7b0caa07bcba 100644 --- a/build/tools/msvs/getversion.bat +++ b/build/tools/msvs/getversion.bat @@ -1,3 +1,3 @@ set wxMAJOR_VERSION=3 set wxMINOR_VERSION=2 -set wxRELEASE_NUMBER=7 +set wxRELEASE_NUMBER=8 diff --git a/configure b/configure index 0941bafeb47c..1f86314de607 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.7. +# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.8. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='wxWidgets' PACKAGE_TARNAME='wxwidgets' -PACKAGE_VERSION='3.2.7' -PACKAGE_STRING='wxWidgets 3.2.7' +PACKAGE_VERSION='3.2.8' +PACKAGE_STRING='wxWidgets 3.2.8' PACKAGE_BUGREPORT='wx-dev@googlegroups.com' PACKAGE_URL='' @@ -2011,7 +2011,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wxWidgets 3.2.7 to adapt to many kinds of systems. +\`configure' configures wxWidgets 3.2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2081,7 +2081,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wxWidgets 3.2.7:";; + short | recursive ) echo "Configuration of wxWidgets 3.2.8:";; esac cat <<\_ACEOF @@ -2587,7 +2587,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wxWidgets configure 3.2.7 +wxWidgets configure 3.2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3404,7 +3404,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wxWidgets $as_me 3.2.7, which was +It was created by wxWidgets $as_me 3.2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3867,7 +3867,7 @@ fi wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=7 +wx_release_number=8 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number @@ -46846,7 +46846,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wxWidgets $as_me 3.2.7, which was +This file was extended by wxWidgets $as_me 3.2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -46912,7 +46912,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wxWidgets config.status 3.2.7 +wxWidgets config.status 3.2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 031c2ddc8b03..431f3c3a8f8c 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- -AC_INIT([wxWidgets], [3.2.7], [wx-dev@googlegroups.com]) +AC_INIT([wxWidgets], [3.2.8], [wx-dev@googlegroups.com]) dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package AC_CONFIG_SRCDIR([wx-config.in]) @@ -40,7 +40,7 @@ dnl wx_release_number += 1 wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=7 +wx_release_number=8 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index 29b2271e5483..85b9bf757565 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib BOMBS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index ab36f1fd881c..6aa776623aaa 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib FORTY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index e0d1e0d3a463..66a4f28830dd 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib FRACTAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index a192147dcfa3..a92fc3537d16 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib LIFE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index 1db8465138a8..823ed44ab826 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WXPOEM_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/docs/changes.txt b/docs/changes.txt index 52e292a6c5d5..edb02fe8f5a3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -248,6 +248,10 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. +3.2.8: (released 2025-??-??) +---------------------------- + + 3.2.7: (released 2025-03-20) ---------------------------- diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 5367cdf5126e..f27da780fb33 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = wxWidgets -PROJECT_NUMBER = 3.2.7 +PROJECT_NUMBER = 3.2.8 PROJECT_BRIEF = PROJECT_LOGO = logo.png OUTPUT_DIRECTORY = out diff --git a/docs/readme.txt b/docs/readme.txt index 94874e69cb04..514fb18d1680 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -wxWidgets 3.2.7 Release Notes +wxWidgets 3.2.8 Release Notes ============================= Welcome to the new stable release of wxWidgets, a free and open source @@ -16,7 +16,7 @@ more about wxWidgets at: Documentation is available online at: -* https://docs.wxwidgets.org/3.2.7/ +* https://docs.wxwidgets.org/3.2.8/ wxWidgets sources and binaries for the selected platforms are available for download from: @@ -25,9 +25,9 @@ download from: or, for a more more permanent but less convenient to use link, from -* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.7/ +* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.8/ -Please see https://docs.wxwidgets.org/3.2.7/overview_install.html for full +Please see https://docs.wxwidgets.org/3.2.8/overview_install.html for full installation instructions. @@ -62,7 +62,7 @@ Other changes include: and more, please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x releases, so the existing applications don't even need to be rebuilt to profit from all the diff --git a/include/wx/osx/config_xcode.h b/include/wx/osx/config_xcode.h index 2388b5eb531c..30d6e012db81 100644 --- a/include/wx/osx/config_xcode.h +++ b/include/wx/osx/config_xcode.h @@ -121,9 +121,9 @@ #define PACKAGE_BUGREPORT "wx-dev@googlegroups.com" #define PACKAGE_NAME "wxWidgets" -#define PACKAGE_STRING "wxWidgets 3.2.7" +#define PACKAGE_STRING "wxWidgets 3.2.8" #define PACKAGE_TARNAME "wxwidgets" -#define PACKAGE_VERSION "3.2.7" +#define PACKAGE_VERSION "3.2.8" // for jpeg diff --git a/include/wx/version.h b/include/wx/version.h index 140042aca471..ff10c56489f9 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -27,9 +27,9 @@ /* NB: this file is parsed by automatic tools so don't change its format! */ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 -#define wxRELEASE_NUMBER 7 +#define wxRELEASE_NUMBER 8 #define wxSUBRELEASE_NUMBER 0 -#define wxVERSION_STRING wxT("wxWidgets 3.2.7") +#define wxVERSION_STRING wxT("wxWidgets 3.2.8") /* nothing to update below this line when updating the version */ /* ---------------------------------------------------------------------------- */ diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index 895db6f3c1ff..42aba9ee336e 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ACCESSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index 9369bc523ed3..3f3e56aa2e5e 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ANITEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index 1b11bbb5aadf..3b4a0b50589d 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ARTTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index 55535f0d65aa..1b0d091b41a1 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib AUIDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index c632dfb155f7..674b8e1fd08e 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib CALENDAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index 347ffd60c6c5..2756407a5ae9 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib CARET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index 42fc9fe31693..63db49efd087 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib CLIPBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index 5c8264fd8494..09493c1f4d04 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib COLLPANE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index f111359cb4a7..5756864060f7 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib COMBO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index 1f8a651f478a..27e68822e226 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib CONFTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index 3ca224dcc66b..e840b6a822ab 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DATAVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index 64506d868f42..f34e94b9bf66 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DEBUGRPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index 094e40ddaa13..27e6c371d091 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DIALOGS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index 8a75e9ec7162..5a118411daa1 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib NETTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index c37c3ccb7c1f..6fdcdeec8579 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DISPLAY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index e8930e98ae06..85b2826f5b78 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -50,7 +50,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib MY_DLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index 3dedacdee2ec..4b427113fe4f 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index 8601dbdab929..d58ce55b6fc1 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DOCVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index 4b49f0f5e101..120298b82169 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DRAGIMAG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index e1a43f7231f2..f4b99a1271dc 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib DRAWING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index 2824a1bb694d..93265a9b42b1 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ERASE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index f24b285ac0a4..2d9c72350f52 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib EVENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index 32fa7bc2c61b..3401b773eb8e 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib EXCEPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index ed2bcdcff038..9a4f9a2e56ea 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib EXEC_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index aae4cbda79aa..aded18e96492 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib FONT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index 5c66669e76ed..086bf84d1362 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib FSWATCHER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index acda6f2b018e..2904d22c0aa2 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib GRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index a93d55c226f4..454446b71751 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib HELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index ccaf44ca830c..569b8b2f1852 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib HTLBOX_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index 182c3a28d539..aec56efcbb64 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ABOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index d336703fbc1f..87d087334e0b 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib HTMLHELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index 80e6c76ddb99..bfcc66fa0ede 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 22f9123f8d04..1ed475afbc1f 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib HTMLPRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index 395fee47bbb8..8ac048e83751 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index 3ed977241140..8f643e6064c7 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib VIRTUAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index b949ad34025f..cd0953c106ac 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WIDGET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index 165b0894859a..8996b7afcdef 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ZIP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index af18defc036a..6618dd27d144 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib IMAGE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index 3342fe5e7710..f090bd814338 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib INTERNAT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index f6ccfd289913..f8969d7ff438 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib IPCCLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index b46abb90626d..f6f8c99f132d 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib JOYTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index e7c2abdc99cc..550fa49b64d0 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib KEYBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index 17314fad3e14..6a08853043d0 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib LAYOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index 136ba9053c37..7d9c60775256 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib LISTCTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index 0aa62f270fda..a8d28ce35500 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib MDI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index 61d5b23c98e5..e21acfe1ef67 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib MEDIAPLAYER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index 51ea78dad82e..e2361b9ea6bf 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib MEMCHECK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index fa06bbe80009..dd307c083b08 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib MENU_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 63b4ac70fa52..7276bec979af 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.7, (c) 2005-2025 wxWidgets + $(PRODUCT_NAME) version 3.2.8, (c) 2005-2025 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,15 +15,15 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.7, (c) 2005-2025 wxWidgets + 3.2.8, (c) 2005-2025 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 3.2.7 + 3.2.8 CFBundleVersion - 3.2.7 + 3.2.8 NSHumanReadableCopyright Copyright 2005-2025 wxWidgets NSPrincipalClass diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index a9afef3109b5..a43473712655 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib MINIMAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index c0e9389b350e..3c01973b17b0 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib NATIVDLG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index 9618553c953e..ff6f03971cf5 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib NOTEBOOK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index b41a20ed8a6a..960f62c509fb 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib OLEAUTO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index 6afc4f6bd39b..be81e4ad4966 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib CUBE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index c11cd215848b..dc196b626fbd 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib ISOSURF_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index 2a34a8e241f1..f258207f72bf 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib PENGUIN_CFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index c76c601cd8c8..38b087c33c41 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib PYRAMID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index 6184b257f9cb..ad8966ba1c22 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib OWNERDRW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index 33c28d50a7bb..d7b1934d83f6 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib POPUP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index 1d9a16989a69..18b89b03b439 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib POWER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index 279372713c94..102342b80909 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib PREFERENCES_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index a3500ceb862e..f4e34024b0bd 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib PRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index 131035058e8b..8908eac6d089 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib PROPGRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index 98f04d5c9588..04e91e25ba99 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib REGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index 8bc5f32e6a9f..8c69a6d2ba01 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -53,7 +53,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0) RENDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ diff --git a/samples/ribbon/Makefile.in b/samples/ribbon/Makefile.in index 6f1fcd388324..bd85f58afea8 100644 --- a/samples/ribbon/Makefile.in +++ b/samples/ribbon/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib RIBBON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/richtext/Makefile.in b/samples/richtext/Makefile.in index 4d7ea8f17ea7..960a1dfdabdf 100644 --- a/samples/richtext/Makefile.in +++ b/samples/richtext/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib RICHTEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in index 6e3375cb4003..bb8e9bac8bfb 100644 --- a/samples/sashtest/Makefile.in +++ b/samples/sashtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SASHTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/scroll/Makefile.in b/samples/scroll/Makefile.in index 4e7e5ec03eba..1bd456e523f3 100644 --- a/samples/scroll/Makefile.in +++ b/samples/scroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SCROLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/shaped/Makefile.in b/samples/shaped/Makefile.in index de177ebce058..61602248584c 100644 --- a/samples/shaped/Makefile.in +++ b/samples/shaped/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SHAPED_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sockets/Makefile.in b/samples/sockets/Makefile.in index ffbd2464a68f..af74c0119c63 100644 --- a/samples/sockets/Makefile.in +++ b/samples/sockets/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib CLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sound/Makefile.in b/samples/sound/Makefile.in index f86aa169e919..eb189cf6fa3b 100644 --- a/samples/sound/Makefile.in +++ b/samples/sound/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SOUND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splash/Makefile.in b/samples/splash/Makefile.in index 20db59c853fa..a67d30a0d54f 100644 --- a/samples/splash/Makefile.in +++ b/samples/splash/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SPLASH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index 54645f68e271..8199e07c215c 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SPLITTER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/statbar/Makefile.in b/samples/statbar/Makefile.in index 8dff2dc704d9..e53caf1a80e2 100644 --- a/samples/statbar/Makefile.in +++ b/samples/statbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib STATBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index 73448d8645ba..14816c6d4b10 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib STCTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index 885a3ddfa62b..96cf1c50c545 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SVGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taborder/Makefile.in b/samples/taborder/Makefile.in index 88696ab625b7..ca98a11e9ab0 100644 --- a/samples/taborder/Makefile.in +++ b/samples/taborder/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TABORDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbar/Makefile.in b/samples/taskbar/Makefile.in index d9f8d5892a5a..10a15ae4b7ce 100644 --- a/samples/taskbar/Makefile.in +++ b/samples/taskbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TASKBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbarbutton/Makefile.in b/samples/taskbarbutton/Makefile.in index ca189ffb387f..a1cec1e6fcd1 100644 --- a/samples/taskbarbutton/Makefile.in +++ b/samples/taskbarbutton/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TASKBARBUTTON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in index b054db7538d6..fdddf7483fa2 100644 --- a/samples/text/Makefile.in +++ b/samples/text/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in index b0394fc13525..eecdb9bfdb2d 100644 --- a/samples/thread/Makefile.in +++ b/samples/thread/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib THREAD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in index 2de3547f191c..cc587a948d6e 100644 --- a/samples/toolbar/Makefile.in +++ b/samples/toolbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TOOLBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in index e0a15f9de213..f5d24cb20006 100644 --- a/samples/treectrl/Makefile.in +++ b/samples/treectrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TREECTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treelist/Makefile.in b/samples/treelist/Makefile.in index a8780c237129..f303d7791145 100644 --- a/samples/treelist/Makefile.in +++ b/samples/treelist/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TREELIST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in index ceec1351e8ac..9b6b98aaae0f 100644 --- a/samples/typetest/Makefile.in +++ b/samples/typetest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TYPETEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/uiaction/Makefile.in b/samples/uiaction/Makefile.in index 15629f2aed83..3e7d5edc4581 100644 --- a/samples/uiaction/Makefile.in +++ b/samples/uiaction/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib UIACTION_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in index ac8241a10c8e..5d95e2a20910 100644 --- a/samples/validate/Makefile.in +++ b/samples/validate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib VALIDATE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/vscroll/Makefile.in b/samples/vscroll/Makefile.in index bbb7e2be8f5b..ab3d6cada38d 100644 --- a/samples/vscroll/Makefile.in +++ b/samples/vscroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib VSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webrequest/Makefile.in b/samples/webrequest/Makefile.in index 147dc32d1383..e9a5d6e9aad2 100644 --- a/samples/webrequest/Makefile.in +++ b/samples/webrequest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WEBREQUEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webview/Makefile.in b/samples/webview/Makefile.in index caf0dea73030..ea6d78b5868a 100644 --- a/samples/webview/Makefile.in +++ b/samples/webview/Makefile.in @@ -46,7 +46,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WEBVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index c1623a0ebcb9..fe35b677e464 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WIDGETS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wizard/Makefile.in b/samples/wizard/Makefile.in index 0819bd52c173..ccc0a95ce386 100644 --- a/samples/wizard/Makefile.in +++ b/samples/wizard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WIZARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wrapsizer/Makefile.in b/samples/wrapsizer/Makefile.in index 24580f50989f..01c9786e2da2 100644 --- a/samples/wrapsizer/Makefile.in +++ b/samples/wrapsizer/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib WRAPSIZER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index 89101cfee161..8ee09ac9a1cd 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib XRCDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xti/Makefile.in b/samples/xti/Makefile.in index 53dd68ad7a4d..db149d9a95e1 100644 --- a/samples/xti/Makefile.in +++ b/samples/xti/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib XTI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/tests/Makefile.in b/tests/Makefile.in index ae1f56772e6a..b2ab47561eb1 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -52,7 +52,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(__test_PCH_INC) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in index c9dd744d58e7..4cbf6294748c 100644 --- a/tests/benchmarks/Makefile.in +++ b/tests/benchmarks/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib BENCH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/helpview/src/Makefile.in b/utils/helpview/src/Makefile.in index 1bf6028f902e..8bf6500e4efe 100644 --- a/utils/helpview/src/Makefile.in +++ b/utils/helpview/src/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/screenshotgen/src/Makefile.in b/utils/screenshotgen/src/Makefile.in index 82f94877e6e3..efab5923da69 100644 --- a/utils/screenshotgen/src/Makefile.in +++ b/utils/screenshotgen/src/Makefile.in @@ -49,7 +49,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).7 +WX_VERSION = $(WX_RELEASE).8 LIBDIRNAME = $(wx_top_builddir)/lib SCREENSHOTGEN_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ From df560d04de5371e69e06c029d5d7adf39099808e Mon Sep 17 00:00:00 2001 From: Felipe Date: Sun, 23 Mar 2025 15:28:54 +0100 Subject: [PATCH 143/416] Update Brazilian Portuguese translations for 3.2.7 --- docs/changes.txt | 4 + locale/pt_BR.po | 4631 ++++++++++++++++++++++++---------------------- 2 files changed, 2371 insertions(+), 2264 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index edb02fe8f5a3..43719a4cdf61 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -251,6 +251,10 @@ Changes in behaviour which may result in build errors 3.2.8: (released 2025-??-??) ---------------------------- +All: + +- Update Brazilian Portuguese translations (Felipe). + 3.2.7: (released 2025-03-20) ---------------------------- diff --git a/locale/pt_BR.po b/locale/pt_BR.po index d122a71ff714..d268221a83f4 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -4,10 +4,10 @@ # translation of pt_BR.po to msgid "" msgstr "" -"Project-Id-Version: wxWidgets 3.2.2.1\n" +"Project-Id-Version: wxWidgets 3.2.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-06 16:05+0100\n" -"PO-Revision-Date: 2023-03-27 12:18-0300\n" +"POT-Creation-Date: 2025-02-08 16:44+0100\n" +"PO-Revision-Date: 2025-03-23 09:08-0300\n" "Last-Translator: Felipe \n" "Language-Team: Felipe \n" "Language: pt_BR\n" @@ -15,14 +15,14 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" "X-Poedit-SourceCharset: UTF-8\n" -#: ../include/wx/defs.h:2592 +#: ../include/wx/defs.h:2596 msgid "All files (*.*)|*.*" msgstr "Todos os arquivos (*.*)|*.*" -#: ../include/wx/defs.h:2595 +#: ../include/wx/defs.h:2599 msgid "All files (*)|*" msgstr "Todos os arquivos (*)|*" @@ -38,33 +38,45 @@ msgstr "Tempo estimado:" msgid "Remaining time:" msgstr "Tempo restante:" -#: ../include/wx/msgdlg.h:278 ../src/common/stockitem.cpp:212 +#. TRANSLATORS: HTML printout default title. +#: ../include/wx/html/htmprint.h:121 ../include/wx/prntbase.h:273 +#: ../include/wx/richtext/richtextprint.h:109 ../src/common/docview.cpp:2166 +msgid "Printout" +msgstr "Imprimir" + +#. TRANSLATORS: HTML easy print default title. +#: ../include/wx/html/htmprint.h:234 ../include/wx/richtext/richtextprint.h:163 +#: ../src/common/prntbase.cpp:522 ../src/html/htmprint.cpp:289 +msgid "Printing" +msgstr "Imprimindo" + +#: ../include/wx/msgdlg.h:277 ../src/common/stockitem.cpp:211 msgid "Yes" msgstr "Sim" -#: ../include/wx/msgdlg.h:279 ../src/common/stockitem.cpp:183 +#: ../include/wx/msgdlg.h:278 ../src/common/stockitem.cpp:182 msgid "No" msgstr "Não" -#: ../include/wx/msgdlg.h:280 ../src/common/stockitem.cpp:184 -#: ../src/msw/msgdlg.cpp:447 ../src/msw/msgdlg.cpp:751 -#: ../src/richtext/richtextstyledlg.cpp:293 +#: ../include/wx/msgdlg.h:279 ../src/common/stockitem.cpp:183 +#: ../src/msw/msgdlg.cpp:430 ../src/msw/msgdlg.cpp:734 +#: ../src/richtext/richtextstyledlg.cpp:292 msgid "OK" msgstr "Ok" -#: ../include/wx/msgdlg.h:281 ../src/common/stockitem.cpp:151 -#: ../src/msw/msgdlg.cpp:447 ../src/msw/progdlg.cpp:884 -#: ../src/richtext/richtextstyledlg.cpp:296 +#: ../include/wx/msgdlg.h:280 ../src/common/stockitem.cpp:150 +#: ../src/msw/msgdlg.cpp:430 ../src/msw/progdlg.cpp:884 +#: ../src/richtext/richtextstyledlg.cpp:295 msgid "Cancel" msgstr "Cancelar" -#: ../include/wx/msgdlg.h:282 ../src/common/stockitem.cpp:169 +#: ../include/wx/msgdlg.h:281 ../src/common/stockitem.cpp:168 #: ../src/html/helpdlg.cpp:63 ../src/html/helpfrm.cpp:108 -#: ../src/osx/button_osx.cpp:39 +#: ../src/osx/button_osx.cpp:38 msgid "Help" msgstr "Ajuda" -#: ../include/wx/msw/ole/oleutils.h:51 +#: ../include/wx/msw/ole/oleutils.h:52 msgid "Cannot initialize OLE" msgstr "Não consegue inicializar o OLE" @@ -102,11 +114,6 @@ msgstr "Incapaz de tirar da fila o pacote do término" msgid "Unable to create I/O completion port" msgstr "Incapaz de criar a porta do término da E/S" -#: ../include/wx/prntbase.h:267 ../include/wx/richtext/richtextprint.h:109 -#: ../src/common/docview.cpp:2166 -msgid "Printout" -msgstr "Imprimir" - #: ../include/wx/richmsgdlg.h:29 msgid "&See details" msgstr "&Ver detalhes" @@ -115,19 +122,19 @@ msgstr "&Ver detalhes" msgid "&Hide details" msgstr "&Esconder detalhes" -#: ../include/wx/richtext/richtextbuffer.h:3865 +#: ../include/wx/richtext/richtextbuffer.h:3864 msgid "&Box" msgstr "&Caixa" -#: ../include/wx/richtext/richtextbuffer.h:5009 +#: ../include/wx/richtext/richtextbuffer.h:5008 msgid "&Picture" msgstr "&Foto" -#: ../include/wx/richtext/richtextbuffer.h:5959 +#: ../include/wx/richtext/richtextbuffer.h:5958 msgid "&Cell" msgstr "&Célula" -#: ../include/wx/richtext/richtextbuffer.h:6068 +#: ../include/wx/richtext/richtextbuffer.h:6067 msgid "&Table" msgstr "&Tabela" @@ -135,16 +142,11 @@ msgstr "&Tabela" msgid "Object Properties" msgstr "Propriedades do Objeto" -#: ../include/wx/richtext/richtextprint.h:163 ../src/common/prntbase.cpp:532 -#: ../src/html/htmprint.cpp:289 -msgid "Printing" -msgstr "Imprimindo" - -#: ../include/wx/richtext/richtextsymboldlg.h:40 +#: ../include/wx/richtext/richtextsymboldlg.h:39 msgid "Symbols" msgstr "Símbolos" -#: ../include/wx/unix/pipe.h:47 +#: ../include/wx/unix/pipe.h:46 msgid "Pipe creation failed" msgstr "A criação do pipe falhou" @@ -219,7 +221,6 @@ msgid "Delete" msgstr "Apagar" #: ../src/common/accelcmn.cpp:48 -#| msgid "Del" msgctxt "keyboard key" msgid "Del" msgstr "Del" @@ -230,25 +231,21 @@ msgid "Back" msgstr "Voltar" #: ../src/common/accelcmn.cpp:49 -#| msgid "Backspace" msgctxt "keyboard key" msgid "Backspace" msgstr "Backspace" #: ../src/common/accelcmn.cpp:50 -#| msgid "Insert" msgctxt "keyboard key" msgid "Insert" msgstr "Insert" #: ../src/common/accelcmn.cpp:51 -#| msgid "Ins" msgctxt "keyboard key" msgid "Ins" msgstr "Ins" #: ../src/common/accelcmn.cpp:52 -#| msgid "Enter" msgctxt "keyboard key" msgid "Enter" msgstr "Enter" @@ -259,37 +256,31 @@ msgid "Return" msgstr "Retornar" #: ../src/common/accelcmn.cpp:54 -#| msgid "PageUp" msgctxt "keyboard key" msgid "PageUp" msgstr "PageUp" #: ../src/common/accelcmn.cpp:54 -#| msgid "Page Up" msgctxt "keyboard key" msgid "Page Up" msgstr "Page Up" #: ../src/common/accelcmn.cpp:55 -#| msgid "PageDown" msgctxt "keyboard key" msgid "PageDown" msgstr "PageDown" #: ../src/common/accelcmn.cpp:55 -#| msgid "Page Down" msgctxt "keyboard key" msgid "Page Down" msgstr "Page Down" #: ../src/common/accelcmn.cpp:56 -#| msgid "PgUp" msgctxt "keyboard key" msgid "PgUp" msgstr "PgUp" #: ../src/common/accelcmn.cpp:57 -#| msgid "PgDn" msgctxt "keyboard key" msgid "PgDn" msgstr "PgDn" @@ -315,13 +306,11 @@ msgid "Down" msgstr "Pra baixo" #: ../src/common/accelcmn.cpp:62 -#| msgid "Home" msgctxt "keyboard key" msgid "Home" msgstr "Home" #: ../src/common/accelcmn.cpp:63 -#| msgid "End" msgctxt "keyboard key" msgid "End" msgstr "End" @@ -337,7 +326,6 @@ msgid "Tab" msgstr "Aba" #: ../src/common/accelcmn.cpp:66 -#| msgid "Esc" msgctxt "keyboard key" msgid "Esc" msgstr "Esc" @@ -358,7 +346,6 @@ msgid "Clear" msgstr "Limpar" #: ../src/common/accelcmn.cpp:70 -#| msgid "Menu" msgctxt "keyboard key" msgid "Menu" msgstr "Menu" @@ -429,25 +416,21 @@ msgid "Divide" msgstr "Dividir" #: ../src/common/accelcmn.cpp:84 -#| msgid "Num_lock" msgctxt "keyboard key" msgid "Num_lock" msgstr "Num_lock" #: ../src/common/accelcmn.cpp:84 -#| msgid "Num Lock" msgctxt "keyboard key" msgid "Num Lock" msgstr "Num Lock" #: ../src/common/accelcmn.cpp:85 -#| msgid "Scroll_lock" msgctxt "keyboard key" msgid "Scroll_lock" msgstr "Scroll_lock" #: ../src/common/accelcmn.cpp:85 -#| msgid "Scroll Lock" msgctxt "keyboard key" msgid "Scroll Lock" msgstr "Scroll Lock" @@ -473,25 +456,21 @@ msgid "Num Tab" msgstr "Num Aba" #: ../src/common/accelcmn.cpp:88 -#| msgid "KP_Enter" msgctxt "keyboard key" msgid "KP_Enter" msgstr "KP_Enter" #: ../src/common/accelcmn.cpp:88 -#| msgid "Num Enter" msgctxt "keyboard key" msgid "Num Enter" msgstr "Num Enter" #: ../src/common/accelcmn.cpp:89 -#| msgid "KP_Home" msgctxt "keyboard key" msgid "KP_Home" msgstr "KP_Home" #: ../src/common/accelcmn.cpp:89 -#| msgid "Num Home" msgctxt "keyboard key" msgid "Num Home" msgstr "Num Home" @@ -537,25 +516,21 @@ msgid "Num Down" msgstr "Num Pra Baixo" #: ../src/common/accelcmn.cpp:94 -#| msgid "KP_PageUp" msgctxt "keyboard key" msgid "KP_PageUp" msgstr "KP_PageUp" #: ../src/common/accelcmn.cpp:94 -#| msgid "Num Page Up" msgctxt "keyboard key" msgid "Num Page Up" msgstr "Num Page Up" #: ../src/common/accelcmn.cpp:95 -#| msgid "KP_PageDown" msgctxt "keyboard key" msgid "KP_PageDown" msgstr "KP_PageDown" #: ../src/common/accelcmn.cpp:95 -#| msgid "Num Page Down" msgctxt "keyboard key" msgid "Num Page Down" msgstr "Num Page Down" @@ -571,13 +546,11 @@ msgid "KP_Next" msgstr "KP_Próximo" #: ../src/common/accelcmn.cpp:98 -#| msgid "KP_End" msgctxt "keyboard key" msgid "KP_End" msgstr "KP_End" #: ../src/common/accelcmn.cpp:98 -#| msgid "Num End" msgctxt "keyboard key" msgid "Num End" msgstr "Num End" @@ -593,13 +566,11 @@ msgid "Num Begin" msgstr "Num Começar" #: ../src/common/accelcmn.cpp:100 -#| msgid "KP_Insert" msgctxt "keyboard key" msgid "KP_Insert" msgstr "KP_Insert" #: ../src/common/accelcmn.cpp:100 -#| msgid "Num Insert" msgctxt "keyboard key" msgid "Num Insert" msgstr "Num Insert" @@ -620,7 +591,6 @@ msgid "KP_Equal" msgstr "KP_Igual" #: ../src/common/accelcmn.cpp:102 -#| msgid "Num =" msgctxt "keyboard key" msgid "Num =" msgstr "Num =" @@ -631,7 +601,6 @@ msgid "KP_Multiply" msgstr "KP_Multiplicar" #: ../src/common/accelcmn.cpp:103 -#| msgid "Num *" msgctxt "keyboard key" msgid "Num *" msgstr "Num *" @@ -642,7 +611,6 @@ msgid "KP_Add" msgstr "KP_Adicionar" #: ../src/common/accelcmn.cpp:104 -#| msgid "Num +" msgctxt "keyboard key" msgid "Num +" msgstr "Num +" @@ -653,7 +621,6 @@ msgid "KP_Separator" msgstr "KP_Separador" #: ../src/common/accelcmn.cpp:105 -#| msgid "Num ," msgctxt "keyboard key" msgid "Num ," msgstr "Num ," @@ -664,7 +631,6 @@ msgid "KP_Subtract" msgstr "KP_Subtrair" #: ../src/common/accelcmn.cpp:106 -#| msgid "Num -" msgctxt "keyboard key" msgid "Num -" msgstr "Num -" @@ -675,7 +641,6 @@ msgid "KP_Decimal" msgstr "KP_Decimal" #: ../src/common/accelcmn.cpp:107 -#| msgid "Num ." msgctxt "keyboard key" msgid "Num ." msgstr "Num ." @@ -686,7 +651,6 @@ msgid "KP_Divide" msgstr "KP_Dividir" #: ../src/common/accelcmn.cpp:108 -#| msgid "Num /" msgctxt "keyboard key" msgid "Num /" msgstr "Num /" @@ -712,49 +676,42 @@ msgid "Command" msgstr "Comando" #: ../src/common/accelcmn.cpp:186 -#| msgid "ctrl" +#| msgctxt "keyboard key" +#| msgid "Ctrl+" msgctxt "keyboard key" -msgid "ctrl" -msgstr "ctrl" +msgid "Ctrl" +msgstr "Ctrl" #: ../src/common/accelcmn.cpp:188 -#| msgid "alt" +#| msgctxt "keyboard key" +#| msgid "Alt+" msgctxt "keyboard key" -msgid "alt" -msgstr "alt" +msgid "Alt" +msgstr "Alt" #: ../src/common/accelcmn.cpp:190 -#| msgid "shift" -msgctxt "keyboard key" -msgid "shift" -msgstr "shift" - -#: ../src/common/accelcmn.cpp:192 -#| msgid "rawctrl" +#| msgctxt "keyboard key" +#| msgid "Shift+" msgctxt "keyboard key" -msgid "rawctrl" -msgstr "rawctrl" +msgid "Shift" +msgstr "Shift" #: ../src/common/accelcmn.cpp:194 -#| msgid "num " msgctxt "keyboard key" msgid "num " msgstr "num " #: ../src/common/accelcmn.cpp:258 ../src/common/accelcmn.cpp:356 -#| msgid "F" msgctxt "keyboard key" msgid "F" msgstr "F" #: ../src/common/accelcmn.cpp:275 ../src/common/accelcmn.cpp:359 -#| msgid "KP_F" msgctxt "keyboard key" msgid "KP_F" msgstr "KP_F" #: ../src/common/accelcmn.cpp:278 ../src/common/accelcmn.cpp:362 -#| msgid "KP_" msgctxt "keyboard key" msgid "KP_" msgstr "KP_" @@ -765,166 +722,163 @@ msgid "SPECIAL" msgstr "ESPECIAL" #: ../src/common/accelcmn.cpp:343 -#| msgid "Alt+" msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #: ../src/common/accelcmn.cpp:345 -#| msgid "Ctrl+" msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: ../src/common/accelcmn.cpp:347 -#| msgid "Shift+" msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #: ../src/common/accelcmn.cpp:350 -#| msgid "RawCtrl+" msgctxt "keyboard key" msgid "RawCtrl+" msgstr "RawCtrl+" -#: ../src/common/appbase.cpp:733 +#: ../src/common/appbase.cpp:759 msgid "show this help message" msgstr "mostrar esta mensagem de ajuda" -#: ../src/common/appbase.cpp:743 +#: ../src/common/appbase.cpp:769 msgid "generate verbose log messages" msgstr "gerar mensagens de log prolixas" -#: ../src/common/appcmn.cpp:243 +#: ../src/common/appcmn.cpp:256 msgid "specify the theme to use" msgstr "especificar o tema a usar" -#: ../src/common/appcmn.cpp:257 +#: ../src/common/appcmn.cpp:270 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "especificar o modo de exibição a usar (ex: 640x480-16)" -#: ../src/common/appcmn.cpp:279 +#: ../src/common/appcmn.cpp:292 #, c-format msgid "Unsupported theme '%s'." msgstr "Tema não suportado '%s'." -#: ../src/common/appcmn.cpp:296 +#: ../src/common/appcmn.cpp:309 #, c-format msgid "Invalid display mode specification '%s'." msgstr "Especificação do modo de exibição '%s' inválida." -#: ../src/common/cmdline.cpp:885 +#: ../src/common/cmdline.cpp:875 #, c-format msgid "Option '%s' can't be negated" msgstr "A opção '%s' não pode ser negada" -#: ../src/common/cmdline.cpp:899 +#: ../src/common/cmdline.cpp:889 #, c-format msgid "Unknown long option '%s'" msgstr "Opção longa desconhecida '%s'" -#: ../src/common/cmdline.cpp:914 ../src/common/cmdline.cpp:936 +#: ../src/common/cmdline.cpp:904 ../src/common/cmdline.cpp:926 #, c-format msgid "Unknown option '%s'" msgstr "Opção desconhecida '%s'" -#: ../src/common/cmdline.cpp:1014 +#: ../src/common/cmdline.cpp:1004 #, c-format msgid "Unexpected characters following option '%s'." msgstr "Caracteres inesperados seguindo a opção '%s'." -#: ../src/common/cmdline.cpp:1049 +#: ../src/common/cmdline.cpp:1039 #, c-format msgid "Option '%s' requires a value." msgstr "A opção '%s' requer um valor." -#: ../src/common/cmdline.cpp:1068 +#: ../src/common/cmdline.cpp:1058 #, c-format msgid "Separator expected after the option '%s'." msgstr "Separador esperado após a opção '%s'." -#: ../src/common/cmdline.cpp:1098 ../src/common/cmdline.cpp:1116 +#: ../src/common/cmdline.cpp:1088 ../src/common/cmdline.cpp:1106 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' não é um valor numérico correto para a opção '%s'." -#: ../src/common/cmdline.cpp:1132 +#: ../src/common/cmdline.cpp:1122 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "A opção '%s': '%s' não pode ser convertida para uma data." -#: ../src/common/cmdline.cpp:1180 +#: ../src/common/cmdline.cpp:1170 #, c-format msgid "Unexpected parameter '%s'" msgstr "Parâmetro inesperado '%s'" -#: ../src/common/cmdline.cpp:1206 +#. TRANSLATORS: Short name and long name for a command line option +#: ../src/common/cmdline.cpp:1197 #, c-format msgid "%s (or %s)" msgstr "%s (ou %s)" -#: ../src/common/cmdline.cpp:1217 +#: ../src/common/cmdline.cpp:1208 #, c-format msgid "The value for the option '%s' must be specified." msgstr "O valor para a opção '%s' deve ser especificado." -#: ../src/common/cmdline.cpp:1239 +#: ../src/common/cmdline.cpp:1230 #, c-format msgid "The required parameter '%s' was not specified." msgstr "O parâmetro requerido '%s' não foi especificado." -#: ../src/common/cmdline.cpp:1311 +#: ../src/common/cmdline.cpp:1289 #, c-format msgid "Usage: %s" msgstr "Uso: %s" -#: ../src/common/cmdline.cpp:1472 +#: ../src/common/cmdline.cpp:1498 msgid "str" msgstr "str" -#: ../src/common/cmdline.cpp:1476 +#: ../src/common/cmdline.cpp:1502 msgid "num" msgstr "num" -#: ../src/common/cmdline.cpp:1480 +#: ../src/common/cmdline.cpp:1506 msgid "double" msgstr "duplo" -#: ../src/common/cmdline.cpp:1484 +#: ../src/common/cmdline.cpp:1510 msgid "date" msgstr "data" -#: ../src/common/cmdproc.cpp:255 ../src/common/cmdproc.cpp:281 -#: ../src/common/cmdproc.cpp:301 +#: ../src/common/cmdproc.cpp:250 ../src/common/cmdproc.cpp:276 +#: ../src/common/cmdproc.cpp:296 msgid "Unnamed command" msgstr "Comando sem nome" -#: ../src/common/cmdproc.cpp:258 +#: ../src/common/cmdproc.cpp:253 msgid "&Undo " msgstr "&Desfazer " -#: ../src/common/cmdproc.cpp:260 +#: ../src/common/cmdproc.cpp:255 msgid "Can't &Undo " msgstr "Não Consegue &Desfazer " -#: ../src/common/cmdproc.cpp:264 ../src/common/stockitem.cpp:209 -#: ../src/msw/textctrl.cpp:2705 ../src/osx/textctrl_osx.cpp:634 -#: ../src/richtext/richtextctrl.cpp:328 +#: ../src/common/cmdproc.cpp:259 ../src/common/stockitem.cpp:208 +#: ../src/msw/textctrl.cpp:2862 ../src/osx/textctrl_osx.cpp:649 +#: ../src/richtext/richtextctrl.cpp:327 msgid "&Undo" msgstr "&Desfazer" -#: ../src/common/cmdproc.cpp:282 ../src/common/cmdproc.cpp:302 +#: ../src/common/cmdproc.cpp:277 ../src/common/cmdproc.cpp:297 msgid "&Redo " msgstr "&Refazer " -#: ../src/common/cmdproc.cpp:286 ../src/common/cmdproc.cpp:293 -#: ../src/common/stockitem.cpp:191 ../src/msw/textctrl.cpp:2706 -#: ../src/osx/textctrl_osx.cpp:635 ../src/richtext/richtextctrl.cpp:329 +#: ../src/common/cmdproc.cpp:281 ../src/common/cmdproc.cpp:288 +#: ../src/common/stockitem.cpp:190 ../src/msw/textctrl.cpp:2863 +#: ../src/osx/textctrl_osx.cpp:650 ../src/richtext/richtextctrl.cpp:328 msgid "&Redo" msgstr "&Refazer" -#: ../src/common/colourcmn.cpp:42 +#: ../src/common/colourcmn.cpp:41 #, c-format msgid "String To Colour : Incorrect colour specification : %s" msgstr "String pra Cor: Especificação da cor incorreta: %s" @@ -942,158 +896,158 @@ msgstr "" "A expansão das variáveis do ambiente falhou: '%c' ausente na posição %u em " "'%s'." -#: ../src/common/config.cpp:576 ../src/msw/regconf.cpp:273 +#: ../src/common/config.cpp:576 ../src/msw/regconf.cpp:272 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' tem extras '..'; ignorados." #. TRANSLATORS: Checkbox state name -#: ../src/common/datavcmn.cpp:2165 ../src/generic/datavgen.cpp:1424 +#: ../src/common/datavcmn.cpp:2163 ../src/generic/datavgen.cpp:1424 msgid "checked" msgstr "verificado" #. TRANSLATORS: Checkbox state name -#: ../src/common/datavcmn.cpp:2169 ../src/generic/datavgen.cpp:1426 +#: ../src/common/datavcmn.cpp:2167 ../src/generic/datavgen.cpp:1426 msgid "unchecked" msgstr "não verificado" #. TRANSLATORS: Checkbox state name -#: ../src/common/datavcmn.cpp:2173 +#: ../src/common/datavcmn.cpp:2171 msgid "undetermined" msgstr "não determinado" -#: ../src/common/datetimefmt.cpp:1847 +#: ../src/common/datetimefmt.cpp:1875 msgid "today" msgstr "hoje" -#: ../src/common/datetimefmt.cpp:1848 +#: ../src/common/datetimefmt.cpp:1876 msgid "yesterday" msgstr "ontem" -#: ../src/common/datetimefmt.cpp:1849 +#: ../src/common/datetimefmt.cpp:1877 msgid "tomorrow" msgstr "amanhã" -#: ../src/common/datetimefmt.cpp:2043 +#: ../src/common/datetimefmt.cpp:2071 msgid "first" msgstr "primeiro" -#: ../src/common/datetimefmt.cpp:2044 +#: ../src/common/datetimefmt.cpp:2072 msgid "second" msgstr "segundo" -#: ../src/common/datetimefmt.cpp:2045 +#: ../src/common/datetimefmt.cpp:2073 msgid "third" msgstr "terceiro" -#: ../src/common/datetimefmt.cpp:2046 +#: ../src/common/datetimefmt.cpp:2074 msgid "fourth" msgstr "quarto" -#: ../src/common/datetimefmt.cpp:2047 +#: ../src/common/datetimefmt.cpp:2075 msgid "fifth" msgstr "quinto" -#: ../src/common/datetimefmt.cpp:2048 +#: ../src/common/datetimefmt.cpp:2076 msgid "sixth" msgstr "sexto" -#: ../src/common/datetimefmt.cpp:2049 +#: ../src/common/datetimefmt.cpp:2077 msgid "seventh" msgstr "sétimo" -#: ../src/common/datetimefmt.cpp:2050 +#: ../src/common/datetimefmt.cpp:2078 msgid "eighth" msgstr "oitavo" -#: ../src/common/datetimefmt.cpp:2051 +#: ../src/common/datetimefmt.cpp:2079 msgid "ninth" msgstr "nono" -#: ../src/common/datetimefmt.cpp:2052 +#: ../src/common/datetimefmt.cpp:2080 msgid "tenth" msgstr "décimo" -#: ../src/common/datetimefmt.cpp:2053 +#: ../src/common/datetimefmt.cpp:2081 msgid "eleventh" msgstr "décimo-primeiro" -#: ../src/common/datetimefmt.cpp:2054 +#: ../src/common/datetimefmt.cpp:2082 msgid "twelfth" msgstr "décimo-segundo" -#: ../src/common/datetimefmt.cpp:2055 +#: ../src/common/datetimefmt.cpp:2083 msgid "thirteenth" msgstr "décimo-terceiro" -#: ../src/common/datetimefmt.cpp:2056 +#: ../src/common/datetimefmt.cpp:2084 msgid "fourteenth" msgstr "décimo-quarto" -#: ../src/common/datetimefmt.cpp:2057 +#: ../src/common/datetimefmt.cpp:2085 msgid "fifteenth" msgstr "décimo-quinto" -#: ../src/common/datetimefmt.cpp:2058 +#: ../src/common/datetimefmt.cpp:2086 msgid "sixteenth" msgstr "décimo-sexto" -#: ../src/common/datetimefmt.cpp:2059 +#: ../src/common/datetimefmt.cpp:2087 msgid "seventeenth" msgstr "décimo-sétimo" -#: ../src/common/datetimefmt.cpp:2060 +#: ../src/common/datetimefmt.cpp:2088 msgid "eighteenth" msgstr "décimo-oitavo" -#: ../src/common/datetimefmt.cpp:2061 +#: ../src/common/datetimefmt.cpp:2089 msgid "nineteenth" msgstr "décimo-nono" -#: ../src/common/datetimefmt.cpp:2062 +#: ../src/common/datetimefmt.cpp:2090 msgid "twentieth" msgstr "vigésimo" -#: ../src/common/datetimefmt.cpp:2220 +#: ../src/common/datetimefmt.cpp:2248 msgid "noon" msgstr "meio-dia" -#: ../src/common/datetimefmt.cpp:2221 +#: ../src/common/datetimefmt.cpp:2249 msgid "midnight" msgstr "meia-noite" -#: ../src/common/debugrpt.cpp:210 +#: ../src/common/debugrpt.cpp:209 #, c-format msgid "Failed to create directory \"%s\"" msgstr "Falhou em criar o diretório \"%s\"" -#: ../src/common/debugrpt.cpp:211 +#: ../src/common/debugrpt.cpp:210 msgid "Debug report couldn't be created." msgstr "O relatório de debug não pôde ser criado." -#: ../src/common/debugrpt.cpp:228 +#: ../src/common/debugrpt.cpp:227 #, c-format msgid "Failed to remove debug report file \"%s\"" msgstr "Falhou em remover o arquivo do relatório do debug \"%s\"" -#: ../src/common/debugrpt.cpp:240 +#: ../src/common/debugrpt.cpp:239 #, c-format msgid "Failed to clean up debug report directory \"%s\"" msgstr "Falhou em limpar o diretório do relatório de debug \"%s\"" -#: ../src/common/debugrpt.cpp:515 +#: ../src/common/debugrpt.cpp:514 msgid "process context description" msgstr "descrição do contexto do processo" -#: ../src/common/debugrpt.cpp:539 +#: ../src/common/debugrpt.cpp:538 msgid "dump of the process state (binary)" msgstr "dump do estado do processo (binário)" -#: ../src/common/debugrpt.cpp:554 +#: ../src/common/debugrpt.cpp:553 msgid "Debug report generation has failed." msgstr "A geração do relatório de debug falhou." -#: ../src/common/debugrpt.cpp:561 +#: ../src/common/debugrpt.cpp:560 #, c-format msgid "" "Processing debug report has failed, leaving the files in \"%s\" directory." @@ -1101,15 +1055,15 @@ msgstr "" "O processamento do relatório do debug falhou, deixando os arquivos no " "diretório \"%s\"." -#: ../src/common/debugrpt.cpp:574 +#: ../src/common/debugrpt.cpp:573 msgid "A debug report has been generated. It can be found in" msgstr "Um relatório de debug foi gerado. Ele pode ser achado em" -#: ../src/common/debugrpt.cpp:577 +#: ../src/common/debugrpt.cpp:576 msgid "And includes the following files:\n" msgstr "E inclui os seguintes arquivos:\n" -#: ../src/common/debugrpt.cpp:587 +#: ../src/common/debugrpt.cpp:586 msgid "" "\n" "Please send this report to the program maintainer, thank you!\n" @@ -1117,11 +1071,11 @@ msgstr "" "\n" "Por favor envie este relatório ao mantedor do programa, obrigado!\n" -#: ../src/common/debugrpt.cpp:730 +#: ../src/common/debugrpt.cpp:729 msgid "Failed to execute curl, please install it in PATH." msgstr "Falhou em executar o curl, por favor instale-o no PATH." -#: ../src/common/debugrpt.cpp:743 +#: ../src/common/debugrpt.cpp:742 #, c-format msgid "Failed to upload the debug report (error code %d)." msgstr "Falhou em enviar o relatório de debug (código do erro %d)." @@ -1144,7 +1098,7 @@ msgid "Do you want to save changes to %s?" msgstr "Você quer salvar as mudanças em %s?" #: ../src/common/docview.cpp:522 ../src/common/docview.cpp:561 -#: ../src/common/stockitem.cpp:196 +#: ../src/common/stockitem.cpp:195 msgid "&Save" msgstr "&Salvar" @@ -1261,214 +1215,244 @@ msgstr "Selecione uma visualização do documento" msgid "Views" msgstr "Visualizações" -#: ../src/common/dynlib.cpp:86 +#: ../src/common/dynlib.cpp:81 #, c-format msgid "Failed to load shared library '%s'" msgstr "Falhou em carregar a biblioteca compartilhada '%s'" -#: ../src/common/dynlib.cpp:110 +#: ../src/common/dynlib.cpp:105 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Não pôde achar o símbolo '%s' em uma biblioteca dinâmica" -#: ../src/common/ffile.cpp:57 ../src/common/file.cpp:216 +#: ../src/common/ffile.cpp:56 ../src/common/file.cpp:215 #, c-format msgid "can't open file '%s'" msgstr "não pode abrir o arquivo '%s'" -#: ../src/common/ffile.cpp:73 +#: ../src/common/ffile.cpp:72 #, c-format msgid "can't close file '%s'" msgstr "não pode fechar o arquivo '%s'" -#: ../src/common/ffile.cpp:107 ../src/common/ffile.cpp:132 +#: ../src/common/ffile.cpp:106 ../src/common/ffile.cpp:131 #, c-format msgid "Read error on file '%s'" msgstr "Erro de leitura no arquivo '%s'" -#: ../src/common/ffile.cpp:149 +#: ../src/common/ffile.cpp:148 #, c-format msgid "Write error on file '%s'" msgstr "Erro de gravação no arquivo '%s'" -#: ../src/common/ffile.cpp:183 +#: ../src/common/ffile.cpp:182 #, c-format msgid "failed to flush the file '%s'" msgstr "falhou em limpar o arquivo '%s'" -#: ../src/common/ffile.cpp:223 +#: ../src/common/ffile.cpp:222 #, c-format msgid "Seek error on file '%s' (large files not supported by stdio)" msgstr "" "Erro de busca no arquivo '%s' (arquivos grandes não suportados pela stdio)" -#: ../src/common/ffile.cpp:233 +#: ../src/common/ffile.cpp:232 #, c-format msgid "Seek error on file '%s'" msgstr "Erro de busca no arquivo '%s'" -#: ../src/common/ffile.cpp:249 +#: ../src/common/ffile.cpp:248 #, c-format msgid "Can't find current position in file '%s'" msgstr "Não consegue achar a posição atual no arquivo '%s'" -#: ../src/common/ffile.cpp:350 ../src/common/file.cpp:570 +#: ../src/common/ffile.cpp:349 ../src/common/file.cpp:569 msgid "Failed to set temporary file permissions" msgstr "Falhou em definir as permissões do arquivo temporário" -#: ../src/common/ffile.cpp:372 ../src/common/file.cpp:592 +#: ../src/common/ffile.cpp:371 #, c-format msgid "can't remove file '%s'" msgstr "não consegue remover o arquivo '%s'" -#: ../src/common/ffile.cpp:377 ../src/common/file.cpp:597 +#: ../src/common/ffile.cpp:376 ../src/common/file.cpp:591 #, c-format msgid "can't commit changes to file '%s'" msgstr "não consegue fazer as mudanças no arquivo '%s'" -#: ../src/common/ffile.cpp:389 ../src/common/file.cpp:609 +#: ../src/common/ffile.cpp:388 ../src/common/file.cpp:603 #, c-format msgid "can't remove temporary file '%s'" msgstr "não consegue remover o arquivo temporário '%s'" -#: ../src/common/file.cpp:163 +#: ../src/common/file.cpp:162 #, c-format msgid "can't create file '%s'" msgstr "não consegue criar o arquivo '%s'" -#: ../src/common/file.cpp:230 +#: ../src/common/file.cpp:229 #, c-format msgid "can't close file descriptor %d" msgstr "não consegue fechar o descritor do arquivo %d" -#: ../src/common/file.cpp:333 +#: ../src/common/file.cpp:332 #, c-format msgid "can't read from file descriptor %d" msgstr "não consegue ler do descritor de arquivos %d" -#: ../src/common/file.cpp:352 +#: ../src/common/file.cpp:351 #, c-format msgid "can't write to file descriptor %d" msgstr "não consegue gravar no descritor de arquivos %d" -#: ../src/common/file.cpp:391 +#: ../src/common/file.cpp:390 #, c-format msgid "can't flush file descriptor %d" msgstr "não consegue limpar o descritor de arquivos %d" -#: ../src/common/file.cpp:433 +#: ../src/common/file.cpp:432 #, c-format msgid "can't seek on file descriptor %d" msgstr "não consegue procurar no descritor de arquivos %d" -#: ../src/common/file.cpp:447 +#: ../src/common/file.cpp:446 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "não consegue obter a posição da busca no descritor de arquivos %d" -#: ../src/common/file.cpp:476 +#: ../src/common/file.cpp:475 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "não consegue achar o tamanho do arquivo no descritor de arquivos %d" -#: ../src/common/file.cpp:506 +#: ../src/common/file.cpp:505 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "não consegue determinar se o final do arquivo é alcançado no descritor %d" -#: ../src/common/fileconf.cpp:314 +#: ../src/common/fileconf.cpp:352 +#, c-format +msgid "" +" and additionally, the existing configuration file was renamed to \"%s\" and " +"couldn't be renamed back, please rename it to its original path \"%s\"" +msgstr "" +" E adicionalmente, o arquivo de configuração existente foi renomeado pra " +"\"%s\" e não pôde ser renomeado de novo, por favor renomeie-o pro seu " +"caminho original \"%s\"" + +#: ../src/common/fileconf.cpp:389 +msgid " due to the following error:\n" +msgstr " devido ao seguinte erro:\n" + +#: ../src/common/fileconf.cpp:412 +msgid "failed to rename the existing file" +msgstr "Falhou em renomear o arquivo existente" + +#: ../src/common/fileconf.cpp:421 +msgid "failed to create the new file directory" +msgstr "Falhou em criar o novo diretório do arquivo" + +#: ../src/common/fileconf.cpp:428 +msgid "failed to move the file to the new location" +msgstr "Falhou em mover o arquivo para o novo local" + +#: ../src/common/fileconf.cpp:462 #, c-format msgid "can't open global configuration file '%s'." msgstr "não consegue abrir o arquivo de configuração global '%s'." -#: ../src/common/fileconf.cpp:330 +#: ../src/common/fileconf.cpp:478 #, c-format msgid "can't open user configuration file '%s'." msgstr "não consegue abrir o arquivo de configuração do usuário '%s'." -#: ../src/common/fileconf.cpp:335 +#: ../src/common/fileconf.cpp:483 #, c-format msgid "Changes won't be saved to avoid overwriting the existing file \"%s\"" msgstr "" "As mudanças não serão salvas pra evitar sobrescrever o arquivo existente " "\"%s\"" -#: ../src/common/fileconf.cpp:421 +#: ../src/common/fileconf.cpp:583 msgid "Error reading config options." msgstr "Erro ao ler as opções da config." -#: ../src/common/fileconf.cpp:431 +#: ../src/common/fileconf.cpp:593 msgid "Failed to read config options." msgstr "Falhou em ler as opções de config." -#: ../src/common/fileconf.cpp:538 +#: ../src/common/fileconf.cpp:700 #, c-format msgid "file '%s': unexpected character %c at line %zu." msgstr "arquivo '%s': caractere ineperado %c na linha %zu." -#: ../src/common/fileconf.cpp:574 +#: ../src/common/fileconf.cpp:736 #, c-format msgid "file '%s', line %zu: '%s' ignored after group header." msgstr "arquivo '%s', linha %zu: '%s' ignorado após o cabeçalho do grupo." -#: ../src/common/fileconf.cpp:603 +#: ../src/common/fileconf.cpp:765 #, c-format msgid "file '%s', line %zu: '=' expected." msgstr "arquivo '%s', linha %zu: '=' esperado." -#: ../src/common/fileconf.cpp:616 +#: ../src/common/fileconf.cpp:778 #, c-format msgid "file '%s', line %zu: value for immutable key '%s' ignored." msgstr "arquivo '%s', linha %zu: valor para a chave imutável '%s' ignorado." -#: ../src/common/fileconf.cpp:626 +#: ../src/common/fileconf.cpp:788 #, c-format msgid "file '%s', line %zu: key '%s' was first found at line %d." msgstr "arquivo '%s', linha %zu: chave '%s' foi achada primeiro na linha %d." -#: ../src/common/fileconf.cpp:929 +#: ../src/common/fileconf.cpp:1091 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "O nome da entrada da config não pode iniciar com '%c'." -#: ../src/common/fileconf.cpp:981 +#: ../src/common/fileconf.cpp:1146 +msgid "Failed to create configuration file directory." +msgstr "Falhou em criar o diretório do arquivo de configuração." + +#: ../src/common/fileconf.cpp:1158 msgid "can't open user configuration file." msgstr "não pode abrir o arquivo de configuração do usuário." -#: ../src/common/fileconf.cpp:995 +#: ../src/common/fileconf.cpp:1172 msgid "can't write user configuration file." msgstr "não pode gravar o arquivo de configuração do usuário." -#: ../src/common/fileconf.cpp:1001 +#: ../src/common/fileconf.cpp:1178 msgid "Failed to update user configuration file." msgstr "Falhou em atualizar o arquivo de configuração do usuário." -#: ../src/common/fileconf.cpp:1024 +#: ../src/common/fileconf.cpp:1201 msgid "Error saving user configuration data." msgstr "Erro ao salvar os dados de configuração do usuário." -#: ../src/common/fileconf.cpp:1136 +#: ../src/common/fileconf.cpp:1313 #, c-format msgid "can't delete user configuration file '%s'" msgstr "não pode apagar o arquivo de configuração do usuário '%s'" -#: ../src/common/fileconf.cpp:1830 +#: ../src/common/fileconf.cpp:2007 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "a entrada '%s' aparece mais do que uma vez no grupo '%s'" -#: ../src/common/fileconf.cpp:1844 +#: ../src/common/fileconf.cpp:2021 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "tentativa de mudar a chave imutável '%s' ignorada." -#: ../src/common/fileconf.cpp:1941 +#: ../src/common/fileconf.cpp:2118 #, c-format msgid "trailing backslash ignored in '%s'" msgstr "barra invertida do rastreamento ignorada em '%s'" -#: ../src/common/fileconf.cpp:1976 +#: ../src/common/fileconf.cpp:2153 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "inesperado \" na posição %d em '%s'." @@ -1498,7 +1482,7 @@ msgstr "Erro ao copiar o arquivo '%s' para '%s'." msgid "Impossible to set permissions for the file '%s'" msgstr "Impossível definir as permissões para o arquivo '%s'" -#: ../src/common/filefn.cpp:581 +#: ../src/common/filefn.cpp:606 #, c-format msgid "" "Failed to rename the file '%s' to '%s' because the destination file already " @@ -1507,564 +1491,565 @@ msgstr "" "Falhou em renomear o arquivo '%s' para '%s' porque o arquivo destino já " "existe." -#: ../src/common/filefn.cpp:598 +#: ../src/common/filefn.cpp:623 #, c-format msgid "File '%s' couldn't be renamed '%s'" msgstr "O arquivo '%s' não pôde ser renomeado '%s'" -#: ../src/common/filefn.cpp:614 +#: ../src/common/filefn.cpp:639 #, c-format msgid "File '%s' couldn't be removed" msgstr "O arquivo '%s' não pôde ser removido" -#: ../src/common/filefn.cpp:641 +#: ../src/common/filefn.cpp:666 #, c-format msgid "Directory '%s' couldn't be created" msgstr "O diretório '%s' não pôde ser criado" -#: ../src/common/filefn.cpp:655 +#: ../src/common/filefn.cpp:680 #, c-format msgid "Directory '%s' couldn't be deleted" msgstr "O diretório '%s' não pôde ser apagado" -#: ../src/common/filefn.cpp:687 +#: ../src/common/filefn.cpp:714 #, c-format msgid "Cannot enumerate files '%s'" msgstr "Não consegue enumerar os arquivos '%s'" -#: ../src/common/filefn.cpp:765 +#: ../src/common/filefn.cpp:798 msgid "Failed to get the working directory" msgstr "Falhou em obter o diretório de trabalho" -#: ../src/common/filefn.cpp:810 +#: ../src/common/filefn.cpp:843 msgid "Could not set current working directory" msgstr "Não pôde definir o diretório de trabalho atual" -#: ../src/common/filefn.cpp:941 +#: ../src/common/filefn.cpp:974 #, c-format msgid "Files (%s)" msgstr "Arquivos (%s)" -#: ../src/common/filename.cpp:183 +#: ../src/common/filename.cpp:182 #, c-format msgid "Failed to open '%s' for reading" msgstr "Falhou em abrir '%s' para leitura" -#: ../src/common/filename.cpp:188 +#: ../src/common/filename.cpp:187 #, c-format msgid "Failed to open '%s' for writing" msgstr "Falhou em abrir '%s' para gravação" -#: ../src/common/filename.cpp:200 +#: ../src/common/filename.cpp:199 msgid "Failed to close file handle" msgstr "Falhou em fechar o manejamento dos arquivos" -#: ../src/common/filename.cpp:1033 +#: ../src/common/filename.cpp:1046 msgid "Failed to create a temporary file name" msgstr "Falhou em criar um nome de arquivo temporário" -#: ../src/common/filename.cpp:1068 +#: ../src/common/filename.cpp:1081 msgid "Failed to open temporary file." msgstr "Falhou em abrir o arquivo temporário." -#: ../src/common/filename.cpp:2779 +#: ../src/common/filename.cpp:2862 #, c-format msgid "Failed to modify file times for '%s'" msgstr "Falhou em modificar as horas do arquivo para '%s'" -#: ../src/common/filename.cpp:2794 +#: ../src/common/filename.cpp:2877 #, c-format msgid "Failed to touch the file '%s'" msgstr "Falhou em tocar o arquivo '%s'" -#: ../src/common/filename.cpp:2875 +#: ../src/common/filename.cpp:2958 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Falhou em recuperar as horas do arquivo para '%s'" -#: ../src/common/filepickercmn.cpp:40 ../src/common/filepickercmn.cpp:41 +#: ../src/common/filepickercmn.cpp:39 ../src/common/filepickercmn.cpp:40 msgid "Browse" msgstr "Procurar" -#: ../src/common/fldlgcmn.cpp:785 ../src/generic/filectrlg.cpp:1185 +#: ../src/common/fldlgcmn.cpp:792 ../src/generic/filectrlg.cpp:1185 #, c-format msgid "All files (%s)|%s" msgstr "Todos os arquivos (%s)|%s" -#: ../src/common/fldlgcmn.cpp:802 +#. TRANSLATORS: %s are a file extension used to build a file wildcard string +#: ../src/common/fldlgcmn.cpp:810 #, c-format msgid "%s files (%s)|%s" msgstr "Arquivos %s (%s)|%s" -#: ../src/common/fldlgcmn.cpp:1064 +#: ../src/common/fldlgcmn.cpp:1072 #, c-format msgid "Load %s file" msgstr "Carrega o arquivo %s" -#: ../src/common/fldlgcmn.cpp:1066 +#: ../src/common/fldlgcmn.cpp:1074 #, c-format msgid "Save %s file" msgstr "Salvar arquivo %s" -#: ../src/common/fmapbase.cpp:145 +#: ../src/common/fmapbase.cpp:144 msgid "Western European (ISO-8859-1)" msgstr "Europeu Ocidental (ISO-8859-1)" -#: ../src/common/fmapbase.cpp:146 +#: ../src/common/fmapbase.cpp:145 msgid "Central European (ISO-8859-2)" msgstr "Europeu Central (ISO-8859-2)" -#: ../src/common/fmapbase.cpp:147 +#: ../src/common/fmapbase.cpp:146 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" -#: ../src/common/fmapbase.cpp:148 +#: ../src/common/fmapbase.cpp:147 msgid "Baltic (old) (ISO-8859-4)" msgstr "Báltico (antigo) (ISO-8859-4)" -#: ../src/common/fmapbase.cpp:149 +#: ../src/common/fmapbase.cpp:148 msgid "Cyrillic (ISO-8859-5)" msgstr "Cirílico (ISO-8859-5)" -#: ../src/common/fmapbase.cpp:150 +#: ../src/common/fmapbase.cpp:149 msgid "Arabic (ISO-8859-6)" msgstr "Árabe (ISO-8859-6)" -#: ../src/common/fmapbase.cpp:151 +#: ../src/common/fmapbase.cpp:150 msgid "Greek (ISO-8859-7)" msgstr "Grego (ISO-8859-7)" -#: ../src/common/fmapbase.cpp:152 +#: ../src/common/fmapbase.cpp:151 msgid "Hebrew (ISO-8859-8)" msgstr "Hebraico (ISO-8859-8)" -#: ../src/common/fmapbase.cpp:153 +#: ../src/common/fmapbase.cpp:152 msgid "Turkish (ISO-8859-9)" msgstr "Turco (ISO-8859-9)" -#: ../src/common/fmapbase.cpp:154 +#: ../src/common/fmapbase.cpp:153 msgid "Nordic (ISO-8859-10)" msgstr "Nórdico (ISO-8859-10)" -#: ../src/common/fmapbase.cpp:155 +#: ../src/common/fmapbase.cpp:154 msgid "Thai (ISO-8859-11)" msgstr "Tailandês (ISO-8859-11)" -#: ../src/common/fmapbase.cpp:156 +#: ../src/common/fmapbase.cpp:155 msgid "Indian (ISO-8859-12)" msgstr "Indiano (ISO-8859-12)" -#: ../src/common/fmapbase.cpp:157 +#: ../src/common/fmapbase.cpp:156 msgid "Baltic (ISO-8859-13)" msgstr "Báltico (ISO-8859-13)" -#: ../src/common/fmapbase.cpp:158 +#: ../src/common/fmapbase.cpp:157 msgid "Celtic (ISO-8859-14)" msgstr "Celta (ISO-8859-14)" -#: ../src/common/fmapbase.cpp:159 +#: ../src/common/fmapbase.cpp:158 msgid "Western European with Euro (ISO-8859-15)" msgstr "Europeu Ocidental com o Euro (ISO-8859-15)" -#: ../src/common/fmapbase.cpp:160 +#: ../src/common/fmapbase.cpp:159 msgid "KOI8-R" msgstr "KOI8-R" -#: ../src/common/fmapbase.cpp:161 +#: ../src/common/fmapbase.cpp:160 msgid "KOI8-U" msgstr "KOI8-U" -#: ../src/common/fmapbase.cpp:162 +#: ../src/common/fmapbase.cpp:161 msgid "Windows/DOS OEM Cyrillic (CP 866)" msgstr "Windows/DOS OEM Cirílico (CP 866)" -#: ../src/common/fmapbase.cpp:163 +#: ../src/common/fmapbase.cpp:162 msgid "Windows Thai (CP 874)" msgstr "Windows Tailandês (CP 874)" -#: ../src/common/fmapbase.cpp:164 +#: ../src/common/fmapbase.cpp:163 msgid "Windows Japanese (CP 932) or Shift-JIS" msgstr "Windows Japonês (CP 932) ou Shift-JIS" -#: ../src/common/fmapbase.cpp:165 +#: ../src/common/fmapbase.cpp:164 msgid "Windows Chinese Simplified (CP 936) or GB-2312" msgstr "Windows Chinês Simplificado (CP 936) ou GB-2312" -#: ../src/common/fmapbase.cpp:166 +#: ../src/common/fmapbase.cpp:165 msgid "Windows Korean (CP 949)" msgstr "Windows Coreano (CP 949)" -#: ../src/common/fmapbase.cpp:167 +#: ../src/common/fmapbase.cpp:166 msgid "Windows Chinese Traditional (CP 950) or Big-5" msgstr "Windows Chinês Tradicional (CP 950) ou Big-5" -#: ../src/common/fmapbase.cpp:168 +#: ../src/common/fmapbase.cpp:167 msgid "Windows Central European (CP 1250)" msgstr "Windows Europeu Central (CP 1250)" -#: ../src/common/fmapbase.cpp:169 +#: ../src/common/fmapbase.cpp:168 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cirílico (CP 1251)" -#: ../src/common/fmapbase.cpp:170 +#: ../src/common/fmapbase.cpp:169 msgid "Windows Western European (CP 1252)" msgstr "Windows Europeu Ocidental (CP 1252)" -#: ../src/common/fmapbase.cpp:171 +#: ../src/common/fmapbase.cpp:170 msgid "Windows Greek (CP 1253)" msgstr "Windows Grego (CP 1253)" -#: ../src/common/fmapbase.cpp:172 +#: ../src/common/fmapbase.cpp:171 msgid "Windows Turkish (CP 1254)" msgstr "Windows Turco (CP 1254)" -#: ../src/common/fmapbase.cpp:173 +#: ../src/common/fmapbase.cpp:172 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hebraico (CP 1255)" -#: ../src/common/fmapbase.cpp:174 +#: ../src/common/fmapbase.cpp:173 msgid "Windows Arabic (CP 1256)" msgstr "Windows Árabe (CP 1256)" -#: ../src/common/fmapbase.cpp:175 +#: ../src/common/fmapbase.cpp:174 msgid "Windows Baltic (CP 1257)" msgstr "Windows Báltico (CP 1257)" -#: ../src/common/fmapbase.cpp:176 +#: ../src/common/fmapbase.cpp:175 msgid "Windows Vietnamese (CP 1258)" msgstr "Windows Vietnamita (CP 1258)" -#: ../src/common/fmapbase.cpp:177 +#: ../src/common/fmapbase.cpp:176 msgid "Windows Johab (CP 1361)" msgstr "Windows Johab (CP 1361)" -#: ../src/common/fmapbase.cpp:178 +#: ../src/common/fmapbase.cpp:177 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" -#: ../src/common/fmapbase.cpp:179 +#: ../src/common/fmapbase.cpp:178 msgid "Unicode 7 bit (UTF-7)" msgstr "Unicode 7 bits (UTF-7)" -#: ../src/common/fmapbase.cpp:180 +#: ../src/common/fmapbase.cpp:179 msgid "Unicode 8 bit (UTF-8)" msgstr "Unicode 8 bits (UTF-8)" -#: ../src/common/fmapbase.cpp:182 ../src/common/fmapbase.cpp:188 +#: ../src/common/fmapbase.cpp:181 ../src/common/fmapbase.cpp:187 msgid "Unicode 16 bit (UTF-16)" msgstr "Unicode 16 bits (UTF-16)" -#: ../src/common/fmapbase.cpp:183 +#: ../src/common/fmapbase.cpp:182 msgid "Unicode 16 bit Little Endian (UTF-16LE)" msgstr "Unicode 16 bits Little Endian (UTF-16LE)" -#: ../src/common/fmapbase.cpp:184 ../src/common/fmapbase.cpp:190 +#: ../src/common/fmapbase.cpp:183 ../src/common/fmapbase.cpp:189 msgid "Unicode 32 bit (UTF-32)" msgstr "Unicode 32 bits (UTF-32)" -#: ../src/common/fmapbase.cpp:185 +#: ../src/common/fmapbase.cpp:184 msgid "Unicode 32 bit Little Endian (UTF-32LE)" msgstr "Unicode 32 bits Little Endian (UTF-32LE)" -#: ../src/common/fmapbase.cpp:187 +#: ../src/common/fmapbase.cpp:186 msgid "Unicode 16 bit Big Endian (UTF-16BE)" msgstr "Unicode 16 bits Big Endian (UTF-16BE)" -#: ../src/common/fmapbase.cpp:189 +#: ../src/common/fmapbase.cpp:188 msgid "Unicode 32 bit Big Endian (UTF-32BE)" msgstr "Unicode 32 bits Big Endian (UTF-32BE)" -#: ../src/common/fmapbase.cpp:192 +#: ../src/common/fmapbase.cpp:191 msgid "Extended Unix Codepage for Japanese (EUC-JP)" msgstr "Página do Código Unix Extendida pro Japonês (EUC-JP)" -#: ../src/common/fmapbase.cpp:193 +#: ../src/common/fmapbase.cpp:192 msgid "US-ASCII" msgstr "US-ASCII" -#: ../src/common/fmapbase.cpp:194 +#: ../src/common/fmapbase.cpp:193 msgid "ISO-2022-JP" msgstr "ISO-2022-JP" -#: ../src/common/fmapbase.cpp:196 +#: ../src/common/fmapbase.cpp:195 msgid "MacRoman" msgstr "MacRomano" -#: ../src/common/fmapbase.cpp:197 +#: ../src/common/fmapbase.cpp:196 msgid "MacJapanese" msgstr "MacJaponês" -#: ../src/common/fmapbase.cpp:198 +#: ../src/common/fmapbase.cpp:197 msgid "MacChineseTrad" msgstr "MacChinêsTradicional" -#: ../src/common/fmapbase.cpp:199 +#: ../src/common/fmapbase.cpp:198 msgid "MacKorean" msgstr "MacCoreano" -#: ../src/common/fmapbase.cpp:200 +#: ../src/common/fmapbase.cpp:199 msgid "MacArabic" msgstr "MacÁrabe" -#: ../src/common/fmapbase.cpp:201 +#: ../src/common/fmapbase.cpp:200 msgid "MacHebrew" msgstr "MacHebreu" -#: ../src/common/fmapbase.cpp:202 +#: ../src/common/fmapbase.cpp:201 msgid "MacGreek" msgstr "MacGrego" -#: ../src/common/fmapbase.cpp:203 +#: ../src/common/fmapbase.cpp:202 msgid "MacCyrillic" msgstr "MacCirílico" -#: ../src/common/fmapbase.cpp:204 +#: ../src/common/fmapbase.cpp:203 msgid "MacDevanagari" msgstr "MacDevanagari" -#: ../src/common/fmapbase.cpp:205 +#: ../src/common/fmapbase.cpp:204 msgid "MacGurmukhi" msgstr "MacGurmukhi" -#: ../src/common/fmapbase.cpp:206 +#: ../src/common/fmapbase.cpp:205 msgid "MacGujarati" msgstr "MacGuzerate" -#: ../src/common/fmapbase.cpp:207 +#: ../src/common/fmapbase.cpp:206 msgid "MacOriya" msgstr "MacOriá" -#: ../src/common/fmapbase.cpp:208 +#: ../src/common/fmapbase.cpp:207 msgid "MacBengali" msgstr "MacBengalês" -#: ../src/common/fmapbase.cpp:209 +#: ../src/common/fmapbase.cpp:208 msgid "MacTamil" msgstr "MacTâmil" -#: ../src/common/fmapbase.cpp:210 +#: ../src/common/fmapbase.cpp:209 msgid "MacTelugu" msgstr "MacTelugu" -#: ../src/common/fmapbase.cpp:211 +#: ../src/common/fmapbase.cpp:210 msgid "MacKannada" msgstr "MacKannada" -#: ../src/common/fmapbase.cpp:212 +#: ../src/common/fmapbase.cpp:211 msgid "MacMalayalam" msgstr "MacMalaio" -#: ../src/common/fmapbase.cpp:213 +#: ../src/common/fmapbase.cpp:212 msgid "MacSinhalese" msgstr "MacCingalês" -#: ../src/common/fmapbase.cpp:214 +#: ../src/common/fmapbase.cpp:213 msgid "MacBurmese" msgstr "MacBirmanês" -#: ../src/common/fmapbase.cpp:215 +#: ../src/common/fmapbase.cpp:214 msgid "MacKhmer" msgstr "MacKhmer" -#: ../src/common/fmapbase.cpp:216 +#: ../src/common/fmapbase.cpp:215 msgid "MacThai" msgstr "MacTailandês" -#: ../src/common/fmapbase.cpp:217 +#: ../src/common/fmapbase.cpp:216 msgid "MacLaotian" msgstr "MacLaociano" -#: ../src/common/fmapbase.cpp:218 +#: ../src/common/fmapbase.cpp:217 msgid "MacGeorgian" msgstr "MacGeorgiano" -#: ../src/common/fmapbase.cpp:219 +#: ../src/common/fmapbase.cpp:218 msgid "MacArmenian" msgstr "MacArmênio" -#: ../src/common/fmapbase.cpp:220 +#: ../src/common/fmapbase.cpp:219 msgid "MacChineseSimp" msgstr "MacChinêsSimplificado" -#: ../src/common/fmapbase.cpp:221 +#: ../src/common/fmapbase.cpp:220 msgid "MacTibetan" msgstr "MacTibetano" -#: ../src/common/fmapbase.cpp:222 +#: ../src/common/fmapbase.cpp:221 msgid "MacMongolian" msgstr "MacMongol" -#: ../src/common/fmapbase.cpp:223 +#: ../src/common/fmapbase.cpp:222 msgid "MacEthiopic" msgstr "MacEtíope" -#: ../src/common/fmapbase.cpp:224 +#: ../src/common/fmapbase.cpp:223 msgid "MacCentralEurRoman" msgstr "MacEuropeuCentralRomano" -#: ../src/common/fmapbase.cpp:225 +#: ../src/common/fmapbase.cpp:224 msgid "MacVietnamese" msgstr "MacVietnamita" -#: ../src/common/fmapbase.cpp:226 +#: ../src/common/fmapbase.cpp:225 msgid "MacExtArabic" msgstr "MacExtÁrabe" -#: ../src/common/fmapbase.cpp:227 +#: ../src/common/fmapbase.cpp:226 msgid "MacSymbol" msgstr "MacSímbolo" -#: ../src/common/fmapbase.cpp:228 +#: ../src/common/fmapbase.cpp:227 msgid "MacDingbats" msgstr "MacDingbats" -#: ../src/common/fmapbase.cpp:229 +#: ../src/common/fmapbase.cpp:228 msgid "MacTurkish" msgstr "MacTurco" -#: ../src/common/fmapbase.cpp:230 +#: ../src/common/fmapbase.cpp:229 msgid "MacCroatian" msgstr "MacCroata" -#: ../src/common/fmapbase.cpp:231 +#: ../src/common/fmapbase.cpp:230 msgid "MacIcelandic" msgstr "MacIslandês" -#: ../src/common/fmapbase.cpp:232 +#: ../src/common/fmapbase.cpp:231 msgid "MacRomanian" msgstr "MacRomeno" -#: ../src/common/fmapbase.cpp:233 +#: ../src/common/fmapbase.cpp:232 msgid "MacCeltic" msgstr "MacCelta" -#: ../src/common/fmapbase.cpp:234 +#: ../src/common/fmapbase.cpp:233 msgid "MacGaelic" msgstr "MacGaélico" -#: ../src/common/fmapbase.cpp:235 +#: ../src/common/fmapbase.cpp:234 msgid "MacKeyboardGlyphs" msgstr "MacGlifosdoTeclado" -#: ../src/common/fmapbase.cpp:792 +#: ../src/common/fmapbase.cpp:791 msgid "Default encoding" msgstr "Codificação padrão" -#: ../src/common/fmapbase.cpp:806 +#: ../src/common/fmapbase.cpp:805 #, c-format msgid "Unknown encoding (%d)" msgstr "Codificação desconhecida (%d)" -#: ../src/common/fmapbase.cpp:816 ../src/richtext/richtextstyles.cpp:777 +#: ../src/common/fmapbase.cpp:815 ../src/richtext/richtextstyles.cpp:776 msgid "default" msgstr "padrão" -#: ../src/common/fmapbase.cpp:830 +#: ../src/common/fmapbase.cpp:829 #, c-format msgid "unknown-%d" msgstr "desconhecido- %d" -#: ../src/common/fontcmn.cpp:930 ../src/common/fontcmn.cpp:1136 +#: ../src/common/fontcmn.cpp:924 ../src/common/fontcmn.cpp:1130 msgid "underlined" msgstr "sublinhado" -#: ../src/common/fontcmn.cpp:935 +#: ../src/common/fontcmn.cpp:929 msgid " strikethrough" msgstr " sublinhado" -#: ../src/common/fontcmn.cpp:948 +#: ../src/common/fontcmn.cpp:942 msgid " thin" msgstr " magro" -#: ../src/common/fontcmn.cpp:952 +#: ../src/common/fontcmn.cpp:946 msgid " extra light" msgstr " extra-leve" -#: ../src/common/fontcmn.cpp:956 +#: ../src/common/fontcmn.cpp:950 msgid " light" msgstr " leve" -#: ../src/common/fontcmn.cpp:960 +#: ../src/common/fontcmn.cpp:954 msgid " medium" msgstr " médio" -#: ../src/common/fontcmn.cpp:964 +#: ../src/common/fontcmn.cpp:958 msgid " semi bold" msgstr " semi-negrito" -#: ../src/common/fontcmn.cpp:968 +#: ../src/common/fontcmn.cpp:962 msgid " bold" msgstr " negrito" -#: ../src/common/fontcmn.cpp:972 +#: ../src/common/fontcmn.cpp:966 msgid " extra bold" msgstr " extra-negrito" -#: ../src/common/fontcmn.cpp:976 +#: ../src/common/fontcmn.cpp:970 msgid " heavy" msgstr " pesado" -#: ../src/common/fontcmn.cpp:980 +#: ../src/common/fontcmn.cpp:974 msgid " extra heavy" msgstr " extra-pesado" -#: ../src/common/fontcmn.cpp:996 +#: ../src/common/fontcmn.cpp:990 msgid " italic" msgstr " itálico" -#: ../src/common/fontcmn.cpp:1140 +#: ../src/common/fontcmn.cpp:1134 msgid "strikethrough" msgstr "riscar" -#: ../src/common/fontcmn.cpp:1149 +#: ../src/common/fontcmn.cpp:1143 msgid "thin" msgstr "magro" -#: ../src/common/fontcmn.cpp:1162 +#: ../src/common/fontcmn.cpp:1156 msgid "extralight" msgstr "extra-leve" -#: ../src/common/fontcmn.cpp:1167 +#: ../src/common/fontcmn.cpp:1161 msgid "light" msgstr "leve" -#: ../src/common/fontcmn.cpp:1175 ../src/richtext/richtextstyles.cpp:776 +#: ../src/common/fontcmn.cpp:1169 ../src/richtext/richtextstyles.cpp:775 msgid "normal" msgstr "normal" -#: ../src/common/fontcmn.cpp:1180 +#: ../src/common/fontcmn.cpp:1174 msgid "medium" msgstr "médio" -#: ../src/common/fontcmn.cpp:1185 ../src/common/fontcmn.cpp:1205 +#: ../src/common/fontcmn.cpp:1179 ../src/common/fontcmn.cpp:1199 msgid "semibold" msgstr "semi-negrito" -#: ../src/common/fontcmn.cpp:1190 +#: ../src/common/fontcmn.cpp:1184 msgid "bold" msgstr "negrito" -#: ../src/common/fontcmn.cpp:1200 +#: ../src/common/fontcmn.cpp:1194 msgid "extrabold" msgstr "extra-negrito" -#: ../src/common/fontcmn.cpp:1210 +#: ../src/common/fontcmn.cpp:1204 msgid "heavy" msgstr "pesado" -#: ../src/common/fontcmn.cpp:1218 +#: ../src/common/fontcmn.cpp:1212 msgid "extraheavy" msgstr "extra-pesado" -#: ../src/common/fontcmn.cpp:1223 +#: ../src/common/fontcmn.cpp:1217 msgid "italic" msgstr "itálico" -#: ../src/common/fontmap.cpp:196 +#: ../src/common/fontmap.cpp:195 msgid ": unknown charset" msgstr ": conjunto de caracteres desconhecido" -#: ../src/common/fontmap.cpp:200 +#: ../src/common/fontmap.cpp:199 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2075,20 +2060,20 @@ msgstr "" "outro conjunto de caracteres pra substituí-lo ou escolher\n" "[Cancelar] se ele não pode ser substituído" -#: ../src/common/fontmap.cpp:242 +#: ../src/common/fontmap.cpp:241 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Falhou em lembrar a codificação do conjunto de caracteres '%s'." -#: ../src/common/fontmap.cpp:322 +#: ../src/common/fontmap.cpp:321 msgid "can't load any font, aborting" msgstr "não pode carregar qualquer fonte, abortando" -#: ../src/common/fontmap.cpp:410 +#: ../src/common/fontmap.cpp:409 msgid ": unknown encoding" msgstr ": codificação desconhecida" -#: ../src/common/fontmap.cpp:418 +#: ../src/common/fontmap.cpp:417 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2100,7 +2085,7 @@ msgstr "" "mas uma codificação alternativa '%s' está disponível.\n" "Você quer usar esta codificação (de outro modo você terá que escolher outra)?" -#: ../src/common/fontmap.cpp:423 +#: ../src/common/fontmap.cpp:422 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2111,18 +2096,18 @@ msgstr "" "Você gostaria de selecionar a fonte a ser usada para esta codificação?\n" "(de outro modo o texto nesta codificação não será mostrado corretamente)" -#: ../src/common/fs_mem.cpp:170 +#: ../src/common/fs_mem.cpp:169 #, c-format msgid "Memory VFS already contains file '%s'!" msgstr "A memória VFS já contém o arquivo '%s'!" -#: ../src/common/fs_mem.cpp:227 +#: ../src/common/fs_mem.cpp:232 #, c-format msgid "Trying to remove file '%s' from memory VFS, but it is not loaded!" msgstr "" "Tentando remover o arquivo '%s' da memória VFS mas ele não está carregado!" -#: ../src/common/fs_mem.cpp:261 +#: ../src/common/fs_mem.cpp:262 #, c-format msgid "Failed to store image '%s' to memory VFS!" msgstr "Falhou em armazenar a imagem '%s' na memória VFS!" @@ -2138,7 +2123,7 @@ msgstr "" msgid "Failed to set FTP transfer mode to %s." msgstr "Falhou em definir o modo de transferência do FTP para %s." -#: ../src/common/ftp.cpp:400 ../src/richtext/richtextsymboldlg.cpp:433 +#: ../src/common/ftp.cpp:400 ../src/richtext/richtextsymboldlg.cpp:432 msgid "ASCII" msgstr "ASCII" @@ -2154,7 +2139,7 @@ msgstr "O servidor FTP não suporta o comando \"PORT\"." msgid "The FTP server doesn't support passive mode." msgstr "O servidor FTP não suporta o modo passivo." -#: ../src/common/gifdecod.cpp:826 +#: ../src/common/gifdecod.cpp:822 #, c-format msgid "Incorrect GIF frame size (%u, %d) for the frame #%u" msgstr "Tamanho do frame do GIF incorreto (%u, %d) para o frame #%u" @@ -2180,71 +2165,71 @@ msgstr "&Personalizar..." msgid "Failed to open URL \"%s\" in the default browser" msgstr "Falhou em abrir a URL '%s' no navegador padrão" -#: ../src/common/iconbndl.cpp:198 +#: ../src/common/iconbndl.cpp:195 #, c-format msgid "Failed to load image %%d from file '%s'." msgstr "Falhou em carregar a imagem %%d do arquivo '%s'." -#: ../src/common/iconbndl.cpp:206 +#: ../src/common/iconbndl.cpp:203 #, c-format msgid "Failed to load image %d from stream." msgstr "Falhou em carregar a imagem %d do fluxo." -#: ../src/common/iconbndl.cpp:224 +#: ../src/common/iconbndl.cpp:221 #, c-format msgid "Failed to load icons from resource '%s'." msgstr "Falhou em carregar os ícones do recurso '%s'." -#: ../src/common/imagbmp.cpp:96 +#: ../src/common/imagbmp.cpp:97 msgid "BMP: Couldn't save invalid image." msgstr "BMP: Não consegue salvar a imagem inválida." -#: ../src/common/imagbmp.cpp:136 +#: ../src/common/imagbmp.cpp:137 msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: o wxImage não tem uma wxPalette própria." -#: ../src/common/imagbmp.cpp:242 +#: ../src/common/imagbmp.cpp:243 msgid "BMP: Couldn't write the file (Bitmap) header." msgstr "BMP: Não consegue gravar o cabeçalho do arquivo (Bitmap)." -#: ../src/common/imagbmp.cpp:265 +#: ../src/common/imagbmp.cpp:266 msgid "BMP: Couldn't write the file (BitmapInfo) header." msgstr "BMP: Não consegue gravar o cabeçalho do arquivo (BitmapInfo)." -#: ../src/common/imagbmp.cpp:352 +#: ../src/common/imagbmp.cpp:353 msgid "BMP: Couldn't write RGB color map." msgstr "BMP: Não consegue gravar o mapa das cores RGB." -#: ../src/common/imagbmp.cpp:486 +#: ../src/common/imagbmp.cpp:487 msgid "BMP: Couldn't write data." msgstr "BMP: Não consegue gravar os dados." -#: ../src/common/imagbmp.cpp:556 ../src/common/imagbmp.cpp:571 +#: ../src/common/imagbmp.cpp:556 ../src/common/imagbmp.cpp:572 msgid "BMP: Couldn't allocate memory." msgstr "BMP: Não consegue distribuir a memória." -#: ../src/common/imagbmp.cpp:1055 +#: ../src/common/imagbmp.cpp:1046 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "Cabeçalho do DIB: Largura da imagem > 32767 pixels no arquivo." -#: ../src/common/imagbmp.cpp:1063 +#: ../src/common/imagbmp.cpp:1054 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "Cabeçalho do DIB: Altura da imagem > 32767 pixels no arquivo." -#: ../src/common/imagbmp.cpp:1093 +#: ../src/common/imagbmp.cpp:1086 msgid "DIB Header: Unknown bitdepth in file." msgstr "Cabeçalho do DIB: Profundidade dos bits desconhecida no arquivo." -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1160 msgid "DIB Header: Unknown encoding in file." msgstr "Cabeçalho do DIB: Codificação desconhecida no arquivo." -#: ../src/common/imagbmp.cpp:1176 +#: ../src/common/imagbmp.cpp:1169 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "" "Cabeçalho do DIB: A codificação não combina com a profundidade dos bits." -#: ../src/common/imagbmp.cpp:1192 +#: ../src/common/imagbmp.cpp:1185 #, c-format msgid "BMP: header has biClrUsed=%d when biBitCount=%d." msgstr "BMP: o cabeçalho tem biClrUsed=%d quando o biBitCount=%d." @@ -2277,92 +2262,92 @@ msgstr "ICO: Erro ao gravar o arquivo de imagem!" msgid "ICO: Invalid icon index." msgstr "ICO: Índice do ícone inválido ." -#: ../src/common/image.cpp:2330 +#: ../src/common/image.cpp:2358 msgid "Image and mask have different sizes." msgstr "Imagem e máscara tem tamanhos diferentes." -#: ../src/common/image.cpp:2338 ../src/common/image.cpp:2379 +#: ../src/common/image.cpp:2366 ../src/common/image.cpp:2407 msgid "No unused colour in image being masked." msgstr "Nenhuma côr sem uso na imagem sendo mascarada." -#: ../src/common/image.cpp:2562 +#: ../src/common/image.cpp:2589 #, c-format msgid "Failed to load bitmap \"%s\" from resources." msgstr "Falhou em carregar o bitmap \"%s\" dos recursos." -#: ../src/common/image.cpp:2571 +#: ../src/common/image.cpp:2598 #, c-format msgid "Failed to load icon \"%s\" from resources." msgstr "Falhou em carregar o ícone \"%s\" dos recursos." -#: ../src/common/image.cpp:2649 ../src/common/image.cpp:2668 +#: ../src/common/image.cpp:2676 ../src/common/image.cpp:2695 #, c-format msgid "Failed to load image from file \"%s\"." msgstr "Falhou em carregar a imagem do arquivo \"%s\"." -#: ../src/common/image.cpp:2682 +#: ../src/common/image.cpp:2709 #, c-format msgid "Can't save image to file '%s': unknown extension." msgstr "Nâo consegue salvar a imagem no arquivo '%s': extensão desconhecida." -#: ../src/common/image.cpp:2790 +#: ../src/common/image.cpp:2817 msgid "No handler found for image type." msgstr "Nenhum manipulador achado para o tipo de imagem." -#: ../src/common/image.cpp:2798 ../src/common/image.cpp:2921 -#: ../src/common/image.cpp:2987 +#: ../src/common/image.cpp:2825 ../src/common/image.cpp:2948 +#: ../src/common/image.cpp:3014 #, c-format msgid "No image handler for type %d defined." msgstr "Nenhum manipulador de imagem para o tipo %d definido." -#: ../src/common/image.cpp:2808 +#: ../src/common/image.cpp:2835 #, c-format msgid "Image file is not of type %d." msgstr "O arquivo de imagem não é do tipo %d." -#: ../src/common/image.cpp:2891 +#: ../src/common/image.cpp:2918 msgid "Can't automatically determine the image format for non-seekable input." msgstr "" "Não consegue determinar automaticamente o formato da imagem para entrada de " "dados não-procuráveis." -#: ../src/common/image.cpp:2909 +#: ../src/common/image.cpp:2936 msgid "Unknown image data format." msgstr "Formato desconhecido dos dados da imagem." -#: ../src/common/image.cpp:2930 +#: ../src/common/image.cpp:2957 #, c-format msgid "This is not a %s." msgstr "Isto não é um %s." -#: ../src/common/image.cpp:2953 ../src/common/image.cpp:3001 +#: ../src/common/image.cpp:2980 ../src/common/image.cpp:3028 #, c-format msgid "No image handler for type %s defined." msgstr "Nenhum manipulador de imagem para o tipo %s definido." -#: ../src/common/image.cpp:2962 +#: ../src/common/image.cpp:2989 #, c-format msgid "Image is not of type %s." msgstr "A imagem não é do tipo %s." -#: ../src/common/image.cpp:3430 +#: ../src/common/image.cpp:3457 #, c-format msgid "Failed to check format of image file \"%s\"." msgstr "Falhou em verificar o formato do arquivo de imagem \"%s\"." -#: ../src/common/imaggif.cpp:125 +#: ../src/common/imaggif.cpp:124 msgid "GIF: error in GIF image format." msgstr "GIF: erro no formato da imagem GIF." -#: ../src/common/imaggif.cpp:130 +#: ../src/common/imaggif.cpp:129 msgid "GIF: not enough memory." msgstr "GIF: memória insuficiente." -#: ../src/common/imaggif.cpp:135 +#: ../src/common/imaggif.cpp:134 msgid "GIF: data stream seems to be truncated." msgstr "GIF: fluxo de dados parece estar truncado." -#: ../src/common/imaggif.cpp:241 +#: ../src/common/imaggif.cpp:240 msgid "Couldn't initialize GIF hash table." msgstr "Não pôde inicializar a tabela de hashes do GIF." @@ -2391,43 +2376,43 @@ msgstr "" msgid "JPEG: Couldn't save image." msgstr "JPEG: Não pôde salvar a imagem." -#: ../src/common/imagpcx.cpp:441 +#: ../src/common/imagpcx.cpp:439 msgid "PCX: this is not a PCX file." msgstr "PCX: este não é um arquivo PCX." -#: ../src/common/imagpcx.cpp:455 +#: ../src/common/imagpcx.cpp:453 msgid "PCX: image format unsupported" msgstr "PCX: formato da imagem não suportado" -#: ../src/common/imagpcx.cpp:456 ../src/common/imagpcx.cpp:479 +#: ../src/common/imagpcx.cpp:454 ../src/common/imagpcx.cpp:477 msgid "PCX: couldn't allocate memory" msgstr "PCX: não pôde distribuir a memória" -#: ../src/common/imagpcx.cpp:457 +#: ../src/common/imagpcx.cpp:455 msgid "PCX: version number too low" msgstr "PCX: número de versão muito baixo" -#: ../src/common/imagpcx.cpp:458 ../src/common/imagpcx.cpp:480 +#: ../src/common/imagpcx.cpp:456 ../src/common/imagpcx.cpp:478 msgid "PCX: unknown error !!!" msgstr "PCX: erro desconhecido !!!" -#: ../src/common/imagpcx.cpp:478 +#: ../src/common/imagpcx.cpp:476 msgid "PCX: invalid image" msgstr "PCX: imagem inválida" -#: ../src/common/imagpng.cpp:383 +#: ../src/common/imagpng.cpp:385 #, c-format msgid "Unknown PNG resolution unit %d" msgstr "Unidade de resolução do PNG %d desconhecida" -#: ../src/common/imagpng.cpp:437 +#: ../src/common/imagpng.cpp:439 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Não pôde carregar uma imagem PNG - o arquivo está corrompido ou não tem " "memória o bastante." -#: ../src/common/imagpng.cpp:511 ../src/common/imagpng.cpp:522 -#: ../src/common/imagpng.cpp:532 +#: ../src/common/imagpng.cpp:513 ../src/common/imagpng.cpp:524 +#: ../src/common/imagpng.cpp:534 msgid "Couldn't save PNG image." msgstr "Não pôde salvar a imagem PNG." @@ -2462,7 +2447,7 @@ msgid "TIFF: Image size is abnormally big." msgstr "TiFF: O tamanho da imagem é anormalmente grande." #: ../src/common/imagtiff.cpp:372 ../src/common/imagtiff.cpp:385 -#: ../src/common/imagtiff.cpp:744 +#: ../src/common/imagtiff.cpp:769 msgid "TIFF: Couldn't allocate memory." msgstr "TIFF: Não pôde distribuir a memória." @@ -2479,11 +2464,15 @@ msgstr "Unidade de resolução do TIFF desconhecida %d ignorada" msgid "TIFF: Error saving image." msgstr "TIFF: Erro ao salvar a imagem." -#: ../src/common/imagtiff.cpp:849 +#: ../src/common/imagtiff.cpp:868 msgid "TIFF: Error writing image." msgstr "TIFF: Erro ao gravar a imagem." -#: ../src/common/init.cpp:186 +#: ../src/common/imagtiff.cpp:881 +msgid "TIFF: Error flushing data." +msgstr "TIFF: Erro ao limpar os dados." + +#: ../src/common/init.cpp:173 #, c-format msgid "" "Command line argument %d couldn't be converted to Unicode and will be " @@ -2492,35 +2481,35 @@ msgstr "" "O argumento da linha de comando %d não pôde ser convertido pro Unicode e " "será ignorado." -#: ../src/common/init.cpp:275 +#: ../src/common/init.cpp:343 msgid "Initialization failed in post init, aborting." msgstr "A inicialização falhou no post init, abortando." -#: ../src/common/intl.cpp:379 +#: ../src/common/intl.cpp:378 #, c-format msgid "Cannot set locale to language \"%s\"." msgstr "Não consegue definir o locale pro idioma \"%s\"." -#: ../src/common/log.cpp:240 +#: ../src/common/log.cpp:232 msgid "Error: " msgstr "Erro: " -#: ../src/common/log.cpp:244 +#: ../src/common/log.cpp:236 msgid "Warning: " msgstr "Aviso: " -#: ../src/common/log.cpp:292 +#: ../src/common/log.cpp:284 msgid "The previous message repeated once." msgstr "A mensagem anterior repetida uma vez." -#: ../src/common/log.cpp:299 +#: ../src/common/log.cpp:291 #, c-format msgid "The previous message repeated %u time." msgid_plural "The previous message repeated %u times." msgstr[0] "A mensagem anterior repetida %u vez." msgstr[1] "A mensagem anterior repetida %u vezes." -#: ../src/common/log.cpp:327 +#: ../src/common/log.cpp:319 #, c-format msgid "Last repeated message (\"%s\", %u time) wasn't output" msgid_plural "Last repeated message (\"%s\", %u times) wasn't output" @@ -2529,7 +2518,7 @@ msgstr[0] "" msgstr[1] "" "As últimas mensagens repetidas (\"%s\", %u vezes) não eram da saída de dados" -#: ../src/common/log.cpp:443 +#: ../src/common/log.cpp:435 #, c-format msgid " (error %ld: %s)" msgstr " (erro %ld: %s)" @@ -2592,499 +2581,499 @@ msgstr "Erro de compressão do LZMA: %s" msgid "LZMA compression error when flushing output: %s" msgstr "Erro de compressão do LZMA quando limpa a saída dos dados: %s" -#: ../src/common/mimecmn.cpp:172 +#: ../src/common/mimecmn.cpp:167 #, c-format msgid "Unmatched '{' in an entry for mime type %s." msgstr "'{' incomparável em uma entrada pro tipo mime %s." -#: ../src/common/module.cpp:78 +#: ../src/common/module.cpp:76 #, c-format msgid "Circular dependency involving module \"%s\" detected." msgstr "Dependência circular envolvendo o módulo \"%s\" detectada." -#: ../src/common/module.cpp:130 +#: ../src/common/module.cpp:128 #, c-format msgid "Dependency \"%s\" of module \"%s\" doesn't exist." msgstr "A dependência \"%s\" do módulo \"%s\" não existe." -#: ../src/common/module.cpp:139 +#: ../src/common/module.cpp:137 #, c-format msgid "Module \"%s\" initialization failed" msgstr "A inicialização do módulo \"%s\" falhou" -#: ../src/common/msgout.cpp:93 +#: ../src/common/msgout.cpp:96 msgid "Message" msgstr "Mensagem" -#: ../src/common/paper.cpp:92 +#: ../src/common/paper.cpp:70 msgid "Letter, 8 1/2 x 11 in" msgstr "Carta, 8 1/2 x 11 em" -#: ../src/common/paper.cpp:93 +#: ../src/common/paper.cpp:71 msgid "Legal, 8 1/2 x 14 in" msgstr "Legal, 8 1/2 x 14 em" -#: ../src/common/paper.cpp:94 +#: ../src/common/paper.cpp:72 msgid "A4 sheet, 210 x 297 mm" msgstr "Folha A4 210 x 297 mm" -#: ../src/common/paper.cpp:95 +#: ../src/common/paper.cpp:73 msgid "C sheet, 17 x 22 in" msgstr "Folha C, 17 x 22 em" -#: ../src/common/paper.cpp:96 +#: ../src/common/paper.cpp:74 msgid "D sheet, 22 x 34 in" msgstr "Folha D, 22 x 34 em" -#: ../src/common/paper.cpp:97 +#: ../src/common/paper.cpp:75 msgid "E sheet, 34 x 44 in" msgstr "Folha E, 34 x 44" -#: ../src/common/paper.cpp:98 +#: ../src/common/paper.cpp:76 msgid "Letter Small, 8 1/2 x 11 in" msgstr "Carta Pequena, 8 1/2 x 11 em" -#: ../src/common/paper.cpp:99 +#: ../src/common/paper.cpp:77 msgid "Tabloid, 11 x 17 in" msgstr "Tablóide, 11 x 17 em" -#: ../src/common/paper.cpp:100 +#: ../src/common/paper.cpp:78 msgid "Ledger, 17 x 11 in" msgstr "Ledger, 17 x 11 em" -#: ../src/common/paper.cpp:101 +#: ../src/common/paper.cpp:79 msgid "Statement, 5 1/2 x 8 1/2 in" msgstr "Declaração, 5 1/2 x 8 1/2 em" -#: ../src/common/paper.cpp:102 +#: ../src/common/paper.cpp:80 msgid "Executive, 7 1/4 x 10 1/2 in" msgstr "Executivo, 7 1/4 x 10 1/2 em" -#: ../src/common/paper.cpp:103 +#: ../src/common/paper.cpp:81 msgid "A3 sheet, 297 x 420 mm" msgstr "Folha A3, 297 x 420 mm" -#: ../src/common/paper.cpp:104 +#: ../src/common/paper.cpp:82 msgid "A4 small sheet, 210 x 297 mm" msgstr "Folha A4 pequena, 210 x 297 mm" -#: ../src/common/paper.cpp:105 +#: ../src/common/paper.cpp:83 msgid "A5 sheet, 148 x 210 mm" msgstr "Folha A5, 148 x 210 mm" -#: ../src/common/paper.cpp:106 +#: ../src/common/paper.cpp:84 msgid "B4 sheet, 250 x 354 mm" msgstr "Folha B4, 250 x 354 mm" -#: ../src/common/paper.cpp:107 +#: ../src/common/paper.cpp:85 msgid "B5 sheet, 182 x 257 millimeter" msgstr "Folha B5, 182 x 257 milímetros" -#: ../src/common/paper.cpp:108 +#: ../src/common/paper.cpp:86 msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 em" -#: ../src/common/paper.cpp:109 +#: ../src/common/paper.cpp:87 msgid "Quarto, 215 x 275 mm" msgstr "Quarto, 215 x 275 mm" -#: ../src/common/paper.cpp:110 +#: ../src/common/paper.cpp:88 msgid "10 x 14 in" msgstr "10 x 14 em" -#: ../src/common/paper.cpp:111 +#: ../src/common/paper.cpp:89 msgid "11 x 17 in" msgstr "11 x 17 em" -#: ../src/common/paper.cpp:112 +#: ../src/common/paper.cpp:90 msgid "Note, 8 1/2 x 11 in" msgstr "Nota, 8 1/2 x 11 em" -#: ../src/common/paper.cpp:113 +#: ../src/common/paper.cpp:91 msgid "#9 Envelope, 3 7/8 x 8 7/8 in" msgstr "#9 Envelope 3 7/8 x 8 7/8 em" -#: ../src/common/paper.cpp:114 +#: ../src/common/paper.cpp:92 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Envelope, 4 1/8 x 9 1/2 em" -#: ../src/common/paper.cpp:115 +#: ../src/common/paper.cpp:93 msgid "#11 Envelope, 4 1/2 x 10 3/8 in" msgstr "#11 Envelope 4 1/2 x 10 3/8 em" -#: ../src/common/paper.cpp:116 +#: ../src/common/paper.cpp:94 msgid "#12 Envelope, 4 3/4 x 11 in" msgstr "#12 Envelope 4 3/4 x 11 em" -#: ../src/common/paper.cpp:117 +#: ../src/common/paper.cpp:95 msgid "#14 Envelope, 5 x 11 1/2 in" msgstr "#14 Envelope 5 x 11 1/2 em" -#: ../src/common/paper.cpp:118 +#: ../src/common/paper.cpp:96 msgid "DL Envelope, 110 x 220 mm" msgstr "Envelope DL, 110 x 220 mm" -#: ../src/common/paper.cpp:119 +#: ../src/common/paper.cpp:97 msgid "C5 Envelope, 162 x 229 mm" msgstr "Envelope C5, 162 x 229 mm" -#: ../src/common/paper.cpp:120 +#: ../src/common/paper.cpp:98 msgid "C3 Envelope, 324 x 458 mm" msgstr "Envelope C3, 324 x 458 mm" -#: ../src/common/paper.cpp:121 +#: ../src/common/paper.cpp:99 msgid "C4 Envelope, 229 x 324 mm" msgstr "Envelope C4, 229 x 324 mm" -#: ../src/common/paper.cpp:122 +#: ../src/common/paper.cpp:100 msgid "C6 Envelope, 114 x 162 mm" msgstr "Envelope C6, 114 x 162 mm" -#: ../src/common/paper.cpp:123 +#: ../src/common/paper.cpp:101 msgid "C65 Envelope, 114 x 229 mm" msgstr "Envelope C65, 114 x 229 mm" -#: ../src/common/paper.cpp:124 +#: ../src/common/paper.cpp:102 msgid "B4 Envelope, 250 x 353 mm" msgstr "Envelope B4, 250 x 353 mm" -#: ../src/common/paper.cpp:125 +#: ../src/common/paper.cpp:103 msgid "B5 Envelope, 176 x 250 mm" msgstr "Envelope B5, 176 x 250 mm" -#: ../src/common/paper.cpp:126 +#: ../src/common/paper.cpp:104 msgid "B6 Envelope, 176 x 125 mm" msgstr "Envelope B6, 176 x 125 mm" -#: ../src/common/paper.cpp:127 +#: ../src/common/paper.cpp:105 msgid "Italy Envelope, 110 x 230 mm" msgstr "Envelope da Itália, 110 x 230 mm" -#: ../src/common/paper.cpp:128 +#: ../src/common/paper.cpp:106 msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Envelope Monarca, 3 7/8 x 7 1/2 em" -#: ../src/common/paper.cpp:129 +#: ../src/common/paper.cpp:107 msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "Envelope 6 3/4, 3 5/8 x 6 1/2 em" -#: ../src/common/paper.cpp:130 +#: ../src/common/paper.cpp:108 msgid "US Std Fanfold, 14 7/8 x 11 in" msgstr "Fanfold Std US, 14 7/8 x 11 em" -#: ../src/common/paper.cpp:131 +#: ../src/common/paper.cpp:109 msgid "German Std Fanfold, 8 1/2 x 12 in" msgstr "Fanfold Std Alemão, 8 1/2 x 12 em" -#: ../src/common/paper.cpp:132 +#: ../src/common/paper.cpp:110 msgid "German Legal Fanfold, 8 1/2 x 13 in" msgstr "Fanfold Legal Alemão, 8 1/2 x 13 em" -#: ../src/common/paper.cpp:134 +#: ../src/common/paper.cpp:112 msgid "B4 (ISO) 250 x 353 mm" msgstr "B4 (ISO) 250 x 353 mm" -#: ../src/common/paper.cpp:135 +#: ../src/common/paper.cpp:113 msgid "Japanese Postcard 100 x 148 mm" msgstr "Cartão Postal Japonês 100 x 148 mm" -#: ../src/common/paper.cpp:136 +#: ../src/common/paper.cpp:114 msgid "9 x 11 in" msgstr "9 x 11 em" -#: ../src/common/paper.cpp:137 +#: ../src/common/paper.cpp:115 msgid "10 x 11 in" msgstr "10 x 11 em" -#: ../src/common/paper.cpp:138 +#: ../src/common/paper.cpp:116 msgid "15 x 11 in" msgstr "15 x 11 em" -#: ../src/common/paper.cpp:139 +#: ../src/common/paper.cpp:117 msgid "Envelope Invite 220 x 220 mm" msgstr "Envelope de Convite 220 x 220 mm" -#: ../src/common/paper.cpp:140 +#: ../src/common/paper.cpp:118 msgid "Letter Extra 9 1/2 x 12 in" msgstr "Carta Extra 9 1/2 x 12 em" -#: ../src/common/paper.cpp:141 +#: ../src/common/paper.cpp:119 msgid "Legal Extra 9 1/2 x 15 in" msgstr "Extra Legal, 9 1/2 x 15 em" -#: ../src/common/paper.cpp:142 +#: ../src/common/paper.cpp:120 msgid "Tabloid Extra 11.69 x 18 in" msgstr "Tablóide Extra 11.69 x 18 em" -#: ../src/common/paper.cpp:143 +#: ../src/common/paper.cpp:121 msgid "A4 Extra 9.27 x 12.69 in" msgstr "A4 Extra 9.27 x 12.69 em" -#: ../src/common/paper.cpp:144 +#: ../src/common/paper.cpp:122 msgid "Letter Transverse 8 1/2 x 11 in" msgstr "Carta Transversal 8 1/2 x 11 em" -#: ../src/common/paper.cpp:145 +#: ../src/common/paper.cpp:123 msgid "A4 Transverse 210 x 297 mm" msgstr "A4 Transversal 210 x 297 mm" -#: ../src/common/paper.cpp:146 +#: ../src/common/paper.cpp:124 msgid "Letter Extra Transverse 9.275 x 12 in" msgstr "Carta Extra Transversal 9.275 x 12 em" -#: ../src/common/paper.cpp:147 +#: ../src/common/paper.cpp:125 msgid "SuperA/SuperA/A4 227 x 356 mm" msgstr "SuperA/SuperA/A4 227 x 356 mm" -#: ../src/common/paper.cpp:148 +#: ../src/common/paper.cpp:126 msgid "SuperB/SuperB/A3 305 x 487 mm" msgstr "SuperB/SuperB/A3 305 x 487 mm" -#: ../src/common/paper.cpp:149 +#: ../src/common/paper.cpp:127 msgid "Letter Plus 8 1/2 x 12.69 in" msgstr "Carta Plus, 8 1/2 x 12.69 em" -#: ../src/common/paper.cpp:150 +#: ../src/common/paper.cpp:128 msgid "A4 Plus 210 x 330 mm" msgstr "A4 Plus 210 x 330 mm" -#: ../src/common/paper.cpp:151 +#: ../src/common/paper.cpp:129 msgid "A5 Transverse 148 x 210 mm" msgstr "A5 Tranversal 148 x 210 mm" -#: ../src/common/paper.cpp:152 +#: ../src/common/paper.cpp:130 msgid "B5 (JIS) Transverse 182 x 257 mm" msgstr "B5 (JIS) Transversal 182 x 257 mm" -#: ../src/common/paper.cpp:153 +#: ../src/common/paper.cpp:131 msgid "A3 Extra 322 x 445 mm" msgstr "A3 Extra 322 x 445 mm" -#: ../src/common/paper.cpp:154 +#: ../src/common/paper.cpp:132 msgid "A5 Extra 174 x 235 mm" msgstr "A5 Extra 174 x 235 mm" -#: ../src/common/paper.cpp:155 +#: ../src/common/paper.cpp:133 msgid "B5 (ISO) Extra 201 x 276 mm" msgstr "B5 (ISO) Extra 201 x 276 mm" -#: ../src/common/paper.cpp:156 +#: ../src/common/paper.cpp:134 msgid "A2 420 x 594 mm" msgstr "A2 420 x 594 mm" -#: ../src/common/paper.cpp:157 +#: ../src/common/paper.cpp:135 msgid "A3 Transverse 297 x 420 mm" msgstr "A3 transversal 297 x 420 mm" -#: ../src/common/paper.cpp:158 +#: ../src/common/paper.cpp:136 msgid "A3 Extra Transverse 322 x 445 mm" msgstr "A3 Extra transversal 322 x 445 mm" -#: ../src/common/paper.cpp:160 +#: ../src/common/paper.cpp:138 msgid "Japanese Double Postcard 200 x 148 mm" msgstr "Cartão Postal Japonês Duplo 200 x 148 mm" -#: ../src/common/paper.cpp:161 +#: ../src/common/paper.cpp:139 msgid "A6 105 x 148 mm" msgstr "A6 105 x 148 mm" -#: ../src/common/paper.cpp:162 +#: ../src/common/paper.cpp:140 msgid "Japanese Envelope Kaku #2" msgstr "Envelope Japonês Kaku #2" -#: ../src/common/paper.cpp:163 +#: ../src/common/paper.cpp:141 msgid "Japanese Envelope Kaku #3" msgstr "Envelope Japonês Kaku #3" -#: ../src/common/paper.cpp:164 +#: ../src/common/paper.cpp:142 msgid "Japanese Envelope Chou #3" msgstr "Envelope Japonês Chou #3" -#: ../src/common/paper.cpp:165 +#: ../src/common/paper.cpp:143 msgid "Japanese Envelope Chou #4" msgstr "Envelope Japonês Chou #4" -#: ../src/common/paper.cpp:166 +#: ../src/common/paper.cpp:144 msgid "Letter Rotated 11 x 8 1/2 in" msgstr "Carta Rotacionada 11 x 8 1/2 em" -#: ../src/common/paper.cpp:167 +#: ../src/common/paper.cpp:145 msgid "A3 Rotated 420 x 297 mm" msgstr "A3 Rotacionada 420 x 297 mm" -#: ../src/common/paper.cpp:168 +#: ../src/common/paper.cpp:146 msgid "A4 Rotated 297 x 210 mm" msgstr "A4 Rotacionada 297 x 210 mm" -#: ../src/common/paper.cpp:169 +#: ../src/common/paper.cpp:147 msgid "A5 Rotated 210 x 148 mm" msgstr "A5 Rotacionada 210 x 148 mm" -#: ../src/common/paper.cpp:170 +#: ../src/common/paper.cpp:148 msgid "B4 (JIS) Rotated 364 x 257 mm" msgstr "B4 (JIS) Rotacionada 364 x 257 mm" -#: ../src/common/paper.cpp:171 +#: ../src/common/paper.cpp:149 msgid "B5 (JIS) Rotated 257 x 182 mm" msgstr "B5 (JIS) Rotacionada 257 x 182 mm" -#: ../src/common/paper.cpp:172 +#: ../src/common/paper.cpp:150 msgid "Japanese Postcard Rotated 148 x 100 mm" msgstr "Cartão Postal Japonês Rotacionado 148 x 100 mm" -#: ../src/common/paper.cpp:173 +#: ../src/common/paper.cpp:151 msgid "Double Japanese Postcard Rotated 148 x 200 mm" msgstr "Cartão Postal Japonês Duplo Rotacionado 148 x 200 mm" -#: ../src/common/paper.cpp:174 +#: ../src/common/paper.cpp:152 msgid "A6 Rotated 148 x 105 mm" msgstr "A6 Rotacionada 148 x 105 mm" -#: ../src/common/paper.cpp:175 +#: ../src/common/paper.cpp:153 msgid "Japanese Envelope Kaku #2 Rotated" msgstr "Envelope Japonês Kaku #2 Rotacionado" -#: ../src/common/paper.cpp:176 +#: ../src/common/paper.cpp:154 msgid "Japanese Envelope Kaku #3 Rotated" msgstr "Envelope Japonês Kaku #3 Rotacionado" -#: ../src/common/paper.cpp:177 +#: ../src/common/paper.cpp:155 msgid "Japanese Envelope Chou #3 Rotated" msgstr "Envelope Japonês Chou #3 Rotacionado" -#: ../src/common/paper.cpp:178 +#: ../src/common/paper.cpp:156 msgid "Japanese Envelope Chou #4 Rotated" msgstr "Envelope Japonês Chou #4 Rotacionado" -#: ../src/common/paper.cpp:179 +#: ../src/common/paper.cpp:157 msgid "B6 (JIS) 128 x 182 mm" msgstr "B6 (JIS) 128 x 182 mm" -#: ../src/common/paper.cpp:180 +#: ../src/common/paper.cpp:158 msgid "B6 (JIS) Rotated 182 x 128 mm" msgstr "B6 (JIS) Rotacionada 182 x 128 mm" -#: ../src/common/paper.cpp:181 +#: ../src/common/paper.cpp:159 msgid "12 x 11 in" msgstr "12 x 11 em" -#: ../src/common/paper.cpp:182 +#: ../src/common/paper.cpp:160 msgid "Japanese Envelope You #4" msgstr "Envelope Japonês You #4" -#: ../src/common/paper.cpp:183 +#: ../src/common/paper.cpp:161 msgid "Japanese Envelope You #4 Rotated" msgstr "Envelope Japonês You #4 Rotacionado" -#: ../src/common/paper.cpp:184 +#: ../src/common/paper.cpp:162 msgid "PRC 16K 146 x 215 mm" msgstr "PRC 16K 146 x 215 mm" -#: ../src/common/paper.cpp:185 +#: ../src/common/paper.cpp:163 msgid "PRC 32K 97 x 151 mm" msgstr "PRC 32K 97 x 151 mm" -#: ../src/common/paper.cpp:186 +#: ../src/common/paper.cpp:164 msgid "PRC 32K(Big) 97 x 151 mm" msgstr "PRC 32K (Grande) 97 x 151 mm" -#: ../src/common/paper.cpp:187 +#: ../src/common/paper.cpp:165 msgid "PRC Envelope #1 102 x 165 mm" msgstr "Envelope PRC #1 102 x 165 mm" -#: ../src/common/paper.cpp:188 +#: ../src/common/paper.cpp:166 msgid "PRC Envelope #2 102 x 176 mm" msgstr "Envelope PRC #2 102 x 176 mm" -#: ../src/common/paper.cpp:189 +#: ../src/common/paper.cpp:167 msgid "PRC Envelope #3 125 x 176 mm" msgstr "Envelope PRC #3 125 x 176 mm" -#: ../src/common/paper.cpp:190 +#: ../src/common/paper.cpp:168 msgid "PRC Envelope #4 110 x 208 mm" msgstr "Envelope PRC #4 110 x 208 mm" -#: ../src/common/paper.cpp:191 +#: ../src/common/paper.cpp:169 msgid "PRC Envelope #5 110 x 220 mm" msgstr "Envelope PRC #5 110 x 220 mm" -#: ../src/common/paper.cpp:192 +#: ../src/common/paper.cpp:170 msgid "PRC Envelope #6 120 x 230 mm" msgstr "Envelope PRC #6 120 x 230 mm" -#: ../src/common/paper.cpp:193 +#: ../src/common/paper.cpp:171 msgid "PRC Envelope #7 160 x 230 mm" msgstr "Envelope PRC #7 160 x 230 mm" -#: ../src/common/paper.cpp:194 +#: ../src/common/paper.cpp:172 msgid "PRC Envelope #8 120 x 309 mm" msgstr "Envelope PRC #8 120 x 309 mm" -#: ../src/common/paper.cpp:195 +#: ../src/common/paper.cpp:173 msgid "PRC Envelope #9 229 x 324 mm" msgstr "Envelope PRC #9 229 x 324 mm" -#: ../src/common/paper.cpp:196 +#: ../src/common/paper.cpp:174 msgid "PRC Envelope #10 324 x 458 mm" msgstr "Envelope PRC #10 324 x 458 mm" -#: ../src/common/paper.cpp:197 +#: ../src/common/paper.cpp:175 msgid "PRC 16K Rotated" msgstr "PRC 16K Rotacionado" -#: ../src/common/paper.cpp:198 +#: ../src/common/paper.cpp:176 msgid "PRC 32K Rotated" msgstr "PRC 32K Rotacionado" -#: ../src/common/paper.cpp:199 +#: ../src/common/paper.cpp:177 msgid "PRC 32K(Big) Rotated" msgstr "PRC 32K (Grande) Rotacionado" -#: ../src/common/paper.cpp:200 +#: ../src/common/paper.cpp:178 msgid "PRC Envelope #1 Rotated 165 x 102 mm" msgstr "Envelope PRC #1 Rotacionado 165 x 102 mm" -#: ../src/common/paper.cpp:201 +#: ../src/common/paper.cpp:179 msgid "PRC Envelope #2 Rotated 176 x 102 mm" msgstr "Envelope PRC #2 Rotacionado 176 x 102 mm" -#: ../src/common/paper.cpp:202 +#: ../src/common/paper.cpp:180 msgid "PRC Envelope #3 Rotated 176 x 125 mm" msgstr "Envelope B6 #3 Rotacionado 176 x 125 mm" -#: ../src/common/paper.cpp:203 +#: ../src/common/paper.cpp:181 msgid "PRC Envelope #4 Rotated 208 x 110 mm" msgstr "Envelope PRC #4 Rotacionado 208 x 110 mm" -#: ../src/common/paper.cpp:204 +#: ../src/common/paper.cpp:182 msgid "PRC Envelope #5 Rotated 220 x 110 mm" msgstr "Envelope PRC #5 Rotacionado 220 x 110 mm" -#: ../src/common/paper.cpp:205 +#: ../src/common/paper.cpp:183 msgid "PRC Envelope #6 Rotated 230 x 120 mm" msgstr "Envelope PRC #6 Rotacionado 230 x 120 mm" -#: ../src/common/paper.cpp:206 +#: ../src/common/paper.cpp:184 msgid "PRC Envelope #7 Rotated 230 x 160 mm" msgstr "Envelope PRC #7 Rotacionado 230 x 160 mm" -#: ../src/common/paper.cpp:207 +#: ../src/common/paper.cpp:185 msgid "PRC Envelope #8 Rotated 309 x 120 mm" msgstr "Envelope PRC #8 Rotacionado 309 x 120 mm" -#: ../src/common/paper.cpp:208 +#: ../src/common/paper.cpp:186 msgid "PRC Envelope #9 Rotated 324 x 229 mm" msgstr "Envelope PRC #9 Rotacionado 324 x 229 mm" -#: ../src/common/paper.cpp:209 +#: ../src/common/paper.cpp:187 msgid "PRC Envelope #10 Rotated 458 x 324 mm" msgstr "Envelope PRC #10 Rotacionado 458 x 324 mm" -#: ../src/common/paper.cpp:214 +#: ../src/common/paper.cpp:192 msgid "A0 sheet, 841 x 1189 mm" msgstr "Folha A0, 841 x 1189 mm" -#: ../src/common/paper.cpp:215 +#: ../src/common/paper.cpp:193 msgid "A1 sheet, 594 x 841 mm" msgstr "Folha A1, 594 x 841 mm" @@ -3096,126 +3085,126 @@ msgstr "Geral" msgid "Advanced" msgstr "Avançado" -#: ../src/common/prntbase.cpp:255 +#: ../src/common/prntbase.cpp:245 msgid "Generic PostScript" msgstr "PostScript Genérico" -#: ../src/common/prntbase.cpp:269 +#: ../src/common/prntbase.cpp:259 msgid "Ready" msgstr "Pronto" -#: ../src/common/prntbase.cpp:344 +#: ../src/common/prntbase.cpp:331 msgid "Printing Error" msgstr "Erro ao imprimir" -#: ../src/common/prntbase.cpp:423 ../src/common/prntbase.cpp:1575 -#: ../src/generic/prntdlgg.cpp:136 ../src/generic/prntdlgg.cpp:150 -#: ../src/gtk/print.cpp:622 ../src/gtk/print.cpp:640 +#: ../src/common/prntbase.cpp:413 ../src/common/prntbase.cpp:1591 +#: ../src/generic/prntdlgg.cpp:135 ../src/generic/prntdlgg.cpp:149 +#: ../src/gtk/print.cpp:625 ../src/gtk/print.cpp:643 msgid "Print" msgstr "Imprimir" -#: ../src/common/prntbase.cpp:481 ../src/generic/prntdlgg.cpp:810 +#: ../src/common/prntbase.cpp:471 ../src/generic/prntdlgg.cpp:809 msgid "Page setup" msgstr "Configuração da página" -#: ../src/common/prntbase.cpp:535 +#: ../src/common/prntbase.cpp:525 msgid "Please wait while printing..." msgstr "Por favor espere enquanto imprime..." -#: ../src/common/prntbase.cpp:539 +#: ../src/common/prntbase.cpp:529 msgid "Document:" msgstr "Documento:" -#: ../src/common/prntbase.cpp:542 +#: ../src/common/prntbase.cpp:532 msgid "Progress:" msgstr "Progresso:" -#: ../src/common/prntbase.cpp:543 +#: ../src/common/prntbase.cpp:533 msgid "Preparing" msgstr "Preparando" -#: ../src/common/prntbase.cpp:562 +#: ../src/common/prntbase.cpp:552 #, c-format msgid "Printing page %d" msgstr "Imprimindo a página %d" -#: ../src/common/prntbase.cpp:567 +#: ../src/common/prntbase.cpp:557 #, c-format msgid "Printing page %d of %d" msgstr "Imprimindo a página %d de %d" -#: ../src/common/prntbase.cpp:570 +#: ../src/common/prntbase.cpp:560 #, c-format msgid " (copy %d of %d)" msgstr " (cópia %d de %d)" -#: ../src/common/prntbase.cpp:1582 +#: ../src/common/prntbase.cpp:1598 msgid "First page" msgstr "Primeira página" -#: ../src/common/prntbase.cpp:1587 ../src/html/helpwnd.cpp:656 +#: ../src/common/prntbase.cpp:1603 ../src/html/helpwnd.cpp:659 msgid "Previous page" msgstr "Página anterior" -#: ../src/common/prntbase.cpp:1601 ../src/html/helpwnd.cpp:657 +#: ../src/common/prntbase.cpp:1617 ../src/html/helpwnd.cpp:660 msgid "Next page" msgstr "Próxima página" -#: ../src/common/prntbase.cpp:1606 +#: ../src/common/prntbase.cpp:1622 msgid "Last page" msgstr "Última página" -#: ../src/common/prntbase.cpp:1614 ../src/common/stockitem.cpp:216 +#: ../src/common/prntbase.cpp:1630 ../src/common/stockitem.cpp:215 msgid "Zoom Out" msgstr "Diminuir Zoom" -#: ../src/common/prntbase.cpp:1628 ../src/common/stockitem.cpp:215 +#: ../src/common/prntbase.cpp:1644 ../src/common/stockitem.cpp:214 msgid "Zoom In" msgstr "Aumentar Zoom" -#: ../src/common/prntbase.cpp:1634 ../src/common/stockitem.cpp:154 -#: ../src/generic/logg.cpp:513 ../src/univ/themes/win32.cpp:3753 +#: ../src/common/prntbase.cpp:1650 ../src/common/stockitem.cpp:153 +#: ../src/generic/logg.cpp:553 ../src/univ/themes/win32.cpp:3752 msgid "&Close" msgstr "&Fechar" -#: ../src/common/prntbase.cpp:2060 +#: ../src/common/prntbase.cpp:2079 msgid "Could not start document preview." msgstr "Não pôde iniciar a pré-visualização do documento." -#: ../src/common/prntbase.cpp:2060 ../src/common/prntbase.cpp:2102 -#: ../src/common/prntbase.cpp:2110 +#: ../src/common/prntbase.cpp:2079 ../src/common/prntbase.cpp:2123 +#: ../src/common/prntbase.cpp:2131 msgid "Print Preview Failure" msgstr "Falha ao Pré-Visualizar a Impressão" -#: ../src/common/prntbase.cpp:2102 ../src/common/prntbase.cpp:2110 +#: ../src/common/prntbase.cpp:2123 ../src/common/prntbase.cpp:2131 msgid "Sorry, not enough memory to create a preview." msgstr "Lamento, não há memória o bastante pra criar uma pré-visualização." -#: ../src/common/prntbase.cpp:2117 +#: ../src/common/prntbase.cpp:2138 #, c-format msgid "Page %d of %d" msgstr "Página %d de %d" -#: ../src/common/prntbase.cpp:2119 +#: ../src/common/prntbase.cpp:2140 #, c-format msgid "Page %d" msgstr "Página %d" -#: ../src/common/regex.cpp:383 ../src/html/chm.cpp:348 +#: ../src/common/regex.cpp:382 ../src/html/chm.cpp:348 msgid "unknown error" msgstr "erro desconhecido" -#: ../src/common/regex.cpp:996 +#: ../src/common/regex.cpp:995 #, c-format msgid "Invalid regular expression '%s': %s" msgstr "Expressão regular '%s' inválida: %s" -#: ../src/common/regex.cpp:1088 +#: ../src/common/regex.cpp:1059 #, c-format msgid "Failed to find match for regular expression: %s" msgstr "Falhou em achar a combinação para a expressão regular: %s" -#: ../src/common/rendcmn.cpp:190 +#: ../src/common/rendcmn.cpp:188 #, c-format msgid "Renderer \"%s\" has incompatible version %d.%d and couldn't be loaded." msgstr "" @@ -3241,634 +3230,633 @@ msgstr "Falhou em ler a senha do \"%s\": %s." msgid "Deleting password for \"%s\" failed: %s." msgstr "Falhou em apagar a senha do \"%s\": %s." -#: ../src/common/selectdispatcher.cpp:255 +#: ../src/common/selectdispatcher.cpp:254 msgid "Failed to monitor I/O channels" msgstr "Falhou em monitorar os canais de E/S" -#: ../src/common/sizer.cpp:3016 ../src/common/stockitem.cpp:196 +#: ../src/common/sizer.cpp:3054 ../src/common/stockitem.cpp:195 msgid "Save" msgstr "Salvar" -#: ../src/common/sizer.cpp:3018 +#: ../src/common/sizer.cpp:3056 msgid "Don't Save" msgstr "Não Salvar" -#: ../src/common/socket.cpp:850 +#: ../src/common/socket.cpp:870 msgid "Cannot initialize sockets" msgstr "Não consegue inicializar os sockets" -#: ../src/common/stockitem.cpp:128 +#: ../src/common/stockitem.cpp:127 msgctxt "standard Windows menu" msgid "&Help" msgstr "&Ajuda" -#: ../src/common/stockitem.cpp:145 +#: ../src/common/stockitem.cpp:144 msgid "&About" msgstr "&Sobre" -#: ../src/common/stockitem.cpp:145 +#: ../src/common/stockitem.cpp:144 msgid "About" msgstr "Sobre" -#: ../src/common/stockitem.cpp:146 +#: ../src/common/stockitem.cpp:145 msgid "Add" msgstr "Adicionar" -#: ../src/common/stockitem.cpp:147 +#: ../src/common/stockitem.cpp:146 msgid "&Apply" msgstr "&Aplicar" -#: ../src/common/stockitem.cpp:147 +#: ../src/common/stockitem.cpp:146 msgid "Apply" msgstr "Aplicar" -#: ../src/common/stockitem.cpp:148 +#: ../src/common/stockitem.cpp:147 msgid "&Back" msgstr "&Voltar" -#: ../src/common/stockitem.cpp:148 +#: ../src/common/stockitem.cpp:147 msgid "Back" msgstr "Voltar" -#: ../src/common/stockitem.cpp:149 +#: ../src/common/stockitem.cpp:148 msgid "&Bold" msgstr "&Negrito" -#: ../src/common/stockitem.cpp:149 ../src/generic/fontdlgg.cpp:329 -#: ../src/osx/carbon/fontdlg.cpp:350 ../src/richtext/richtextfontpage.cpp:355 +#: ../src/common/stockitem.cpp:148 ../src/generic/fontdlgg.cpp:326 +#: ../src/richtext/richtextfontpage.cpp:354 msgid "Bold" msgstr "Negrito" -#: ../src/common/stockitem.cpp:150 +#: ../src/common/stockitem.cpp:149 msgid "&Bottom" msgstr "&Fundo" -#: ../src/common/stockitem.cpp:150 ../src/richtext/richtextsizepage.cpp:288 +#: ../src/common/stockitem.cpp:149 ../src/richtext/richtextsizepage.cpp:287 msgid "Bottom" msgstr "Rodapé" -#: ../src/common/stockitem.cpp:151 ../src/generic/fontdlgg.cpp:465 -#: ../src/generic/fontdlgg.cpp:484 ../src/generic/wizard.cpp:435 -#: ../src/osx/carbon/fontdlg.cpp:398 ../src/osx/cocoa/button.mm:157 +#: ../src/common/stockitem.cpp:150 ../src/generic/fontdlgg.cpp:462 +#: ../src/generic/fontdlgg.cpp:481 ../src/generic/wizard.cpp:415 +#: ../src/osx/cocoa/button.mm:156 msgid "&Cancel" msgstr "&Cancelar" -#: ../src/common/stockitem.cpp:152 +#: ../src/common/stockitem.cpp:151 msgid "&CD-ROM" msgstr "&CD-ROM" -#: ../src/common/stockitem.cpp:152 +#: ../src/common/stockitem.cpp:151 msgid "CD-ROM" msgstr "CD-ROM" -#: ../src/common/stockitem.cpp:153 +#: ../src/common/stockitem.cpp:152 msgid "&Clear" msgstr "&Limpar" -#: ../src/common/stockitem.cpp:153 +#: ../src/common/stockitem.cpp:152 msgid "Clear" msgstr "Limpar" -#: ../src/common/stockitem.cpp:154 ../src/generic/dbgrptg.cpp:94 -#: ../src/generic/progdlgg.cpp:772 ../src/html/helpdlg.cpp:86 +#: ../src/common/stockitem.cpp:153 ../src/generic/dbgrptg.cpp:93 +#: ../src/generic/progdlgg.cpp:778 ../src/html/helpdlg.cpp:86 #: ../src/msw/progdlg.cpp:209 ../src/msw/progdlg.cpp:890 -#: ../src/richtext/richtextstyledlg.cpp:273 -#: ../src/richtext/richtextsymboldlg.cpp:449 +#: ../src/richtext/richtextstyledlg.cpp:272 +#: ../src/richtext/richtextsymboldlg.cpp:448 msgid "Close" msgstr "Fechar" -#: ../src/common/stockitem.cpp:155 +#: ../src/common/stockitem.cpp:154 msgid "&Convert" msgstr "&Converter" -#: ../src/common/stockitem.cpp:155 +#: ../src/common/stockitem.cpp:154 msgid "Convert" msgstr "Converter" -#: ../src/common/stockitem.cpp:156 ../src/msw/textctrl.cpp:2709 -#: ../src/osx/textctrl_osx.cpp:638 ../src/richtext/richtextctrl.cpp:332 +#: ../src/common/stockitem.cpp:155 ../src/msw/textctrl.cpp:2866 +#: ../src/osx/textctrl_osx.cpp:653 ../src/richtext/richtextctrl.cpp:331 msgid "&Copy" msgstr "&Copiar" -#: ../src/common/stockitem.cpp:156 ../src/stc/stc_i18n.cpp:18 +#: ../src/common/stockitem.cpp:155 ../src/stc/stc_i18n.cpp:18 msgid "Copy" msgstr "Copiar" -#: ../src/common/stockitem.cpp:157 ../src/msw/textctrl.cpp:2708 -#: ../src/osx/textctrl_osx.cpp:637 ../src/richtext/richtextctrl.cpp:331 +#: ../src/common/stockitem.cpp:156 ../src/msw/textctrl.cpp:2865 +#: ../src/osx/textctrl_osx.cpp:652 ../src/richtext/richtextctrl.cpp:330 msgid "Cu&t" msgstr "Co&rtar" -#: ../src/common/stockitem.cpp:157 ../src/stc/stc_i18n.cpp:17 +#: ../src/common/stockitem.cpp:156 ../src/stc/stc_i18n.cpp:17 msgid "Cut" msgstr "Cortar" -#: ../src/common/stockitem.cpp:158 ../src/msw/textctrl.cpp:2711 -#: ../src/osx/textctrl_osx.cpp:640 ../src/richtext/richtextctrl.cpp:334 -#: ../src/richtext/richtexttabspage.cpp:138 +#: ../src/common/stockitem.cpp:157 ../src/msw/textctrl.cpp:2868 +#: ../src/osx/textctrl_osx.cpp:655 ../src/richtext/richtextctrl.cpp:333 +#: ../src/richtext/richtexttabspage.cpp:137 msgid "&Delete" msgstr "&Apagar" -#: ../src/common/stockitem.cpp:158 ../src/richtext/richtextbuffer.cpp:8267 +#: ../src/common/stockitem.cpp:157 ../src/richtext/richtextbuffer.cpp:8266 #: ../src/stc/stc_i18n.cpp:20 msgid "Delete" msgstr "Apagar" -#: ../src/common/stockitem.cpp:159 +#: ../src/common/stockitem.cpp:158 msgid "&Down" msgstr "&Pra baixo" -#: ../src/common/stockitem.cpp:159 ../src/generic/fdrepdlg.cpp:149 +#: ../src/common/stockitem.cpp:158 ../src/generic/fdrepdlg.cpp:148 msgid "Down" msgstr "Pra baixo" -#: ../src/common/stockitem.cpp:160 +#: ../src/common/stockitem.cpp:159 msgid "&Edit" msgstr "&Editar" -#: ../src/common/stockitem.cpp:160 +#: ../src/common/stockitem.cpp:159 msgid "Edit" msgstr "Editar" -#: ../src/common/stockitem.cpp:161 +#: ../src/common/stockitem.cpp:160 msgid "&Execute" msgstr "&Executar" -#: ../src/common/stockitem.cpp:161 +#: ../src/common/stockitem.cpp:160 msgid "Execute" msgstr "Executar" -#: ../src/common/stockitem.cpp:162 +#: ../src/common/stockitem.cpp:161 msgid "&Quit" msgstr "&Sair" -#: ../src/common/stockitem.cpp:162 +#: ../src/common/stockitem.cpp:161 msgid "Quit" msgstr "Sair" -#: ../src/common/stockitem.cpp:163 +#: ../src/common/stockitem.cpp:162 msgid "&File" msgstr "&Arquivo" -#: ../src/common/stockitem.cpp:163 +#: ../src/common/stockitem.cpp:162 msgid "File" msgstr "Arquivo" -#: ../src/common/stockitem.cpp:164 +#: ../src/common/stockitem.cpp:163 msgid "&Find..." msgstr "&Achar..." -#: ../src/common/stockitem.cpp:164 +#: ../src/common/stockitem.cpp:163 msgid "Find..." msgstr "Achar..." -#: ../src/common/stockitem.cpp:165 +#: ../src/common/stockitem.cpp:164 msgid "&First" msgstr "&Primeiro" -#: ../src/common/stockitem.cpp:165 +#: ../src/common/stockitem.cpp:164 msgid "First" msgstr "Primeiro" -#: ../src/common/stockitem.cpp:166 +#: ../src/common/stockitem.cpp:165 msgid "&Floppy" msgstr "&Disquete" -#: ../src/common/stockitem.cpp:166 +#: ../src/common/stockitem.cpp:165 msgid "Floppy" msgstr "Disquete" -#: ../src/common/stockitem.cpp:167 +#: ../src/common/stockitem.cpp:166 msgid "&Forward" msgstr "&Pra frente" -#: ../src/common/stockitem.cpp:167 +#: ../src/common/stockitem.cpp:166 msgid "Forward" msgstr "Pra frente" -#: ../src/common/stockitem.cpp:168 +#: ../src/common/stockitem.cpp:167 msgid "&Harddisk" msgstr "&Disco rígido" -#: ../src/common/stockitem.cpp:168 +#: ../src/common/stockitem.cpp:167 msgid "Harddisk" msgstr "Disco rígido" -#: ../src/common/stockitem.cpp:169 ../src/generic/wizard.cpp:438 -#: ../src/osx/cocoa/menu.mm:226 ../src/richtext/richtextstyledlg.cpp:299 -#: ../src/richtext/richtextsymboldlg.cpp:452 +#: ../src/common/stockitem.cpp:168 ../src/generic/wizard.cpp:418 +#: ../src/osx/cocoa/menu.mm:225 ../src/richtext/richtextstyledlg.cpp:298 +#: ../src/richtext/richtextsymboldlg.cpp:451 msgid "&Help" msgstr "&Ajuda" -#: ../src/common/stockitem.cpp:170 +#: ../src/common/stockitem.cpp:169 msgid "&Home" msgstr "&Home" -#: ../src/common/stockitem.cpp:170 +#: ../src/common/stockitem.cpp:169 msgid "Home" msgstr "Home" -#: ../src/common/stockitem.cpp:171 +#: ../src/common/stockitem.cpp:170 msgid "Indent" msgstr "Recuo" -#: ../src/common/stockitem.cpp:172 +#: ../src/common/stockitem.cpp:171 msgid "&Index" msgstr "&Índice" -#: ../src/common/stockitem.cpp:172 ../src/html/helpwnd.cpp:507 +#: ../src/common/stockitem.cpp:171 ../src/html/helpwnd.cpp:510 msgid "Index" msgstr "Índice" -#: ../src/common/stockitem.cpp:173 +#: ../src/common/stockitem.cpp:172 msgid "&Info" msgstr "&Info" -#: ../src/common/stockitem.cpp:173 +#: ../src/common/stockitem.cpp:172 msgid "Info" msgstr "Info" -#: ../src/common/stockitem.cpp:174 +#: ../src/common/stockitem.cpp:173 msgid "&Italic" msgstr "&Itálico" -#: ../src/common/stockitem.cpp:174 ../src/generic/fontdlgg.cpp:325 -#: ../src/osx/carbon/fontdlg.cpp:357 ../src/richtext/richtextfontpage.cpp:351 +#: ../src/common/stockitem.cpp:173 ../src/generic/fontdlgg.cpp:322 +#: ../src/richtext/richtextfontpage.cpp:350 msgid "Italic" msgstr "Itálico" -#: ../src/common/stockitem.cpp:175 +#: ../src/common/stockitem.cpp:174 msgid "&Jump to" msgstr "&Pular para" -#: ../src/common/stockitem.cpp:175 +#: ../src/common/stockitem.cpp:174 msgid "Jump to" msgstr "Pular para" -#: ../src/common/stockitem.cpp:176 +#: ../src/common/stockitem.cpp:175 msgid "Centered" msgstr "Centralizado" -#: ../src/common/stockitem.cpp:177 +#: ../src/common/stockitem.cpp:176 msgid "Justified" msgstr "Justificado" -#: ../src/common/stockitem.cpp:178 +#: ../src/common/stockitem.cpp:177 msgid "Align Left" msgstr "Alinhar a Esquerda" -#: ../src/common/stockitem.cpp:179 +#: ../src/common/stockitem.cpp:178 msgid "Align Right" msgstr "Alinhar a Direita" -#: ../src/common/stockitem.cpp:180 +#: ../src/common/stockitem.cpp:179 msgid "&Last" msgstr "&Último" -#: ../src/common/stockitem.cpp:180 +#: ../src/common/stockitem.cpp:179 msgid "Last" msgstr "Último" -#: ../src/common/stockitem.cpp:181 +#: ../src/common/stockitem.cpp:180 msgid "&Network" msgstr "&Rede" -#: ../src/common/stockitem.cpp:181 +#: ../src/common/stockitem.cpp:180 msgid "Network" msgstr "Rede" -#: ../src/common/stockitem.cpp:182 ../src/richtext/richtexttabspage.cpp:132 +#: ../src/common/stockitem.cpp:181 ../src/richtext/richtexttabspage.cpp:131 msgid "&New" msgstr "&Novo" -#: ../src/common/stockitem.cpp:182 +#: ../src/common/stockitem.cpp:181 msgid "New" msgstr "Novo" -#: ../src/common/stockitem.cpp:183 ../src/msw/msgdlg.cpp:434 +#: ../src/common/stockitem.cpp:182 ../src/msw/msgdlg.cpp:417 msgid "&No" msgstr "&Não" -#: ../src/common/stockitem.cpp:184 ../src/generic/fontdlgg.cpp:470 -#: ../src/generic/fontdlgg.cpp:477 ../src/osx/carbon/fontdlg.cpp:404 +#: ../src/common/stockitem.cpp:183 ../src/generic/fontdlgg.cpp:467 +#: ../src/generic/fontdlgg.cpp:474 msgid "&OK" msgstr "&OK" -#: ../src/common/stockitem.cpp:185 ../src/generic/dbgrptg.cpp:342 +#: ../src/common/stockitem.cpp:184 ../src/generic/dbgrptg.cpp:341 msgid "&Open..." msgstr "&Abrir..." -#: ../src/common/stockitem.cpp:185 +#: ../src/common/stockitem.cpp:184 msgid "Open..." msgstr "Abrir..." -#: ../src/common/stockitem.cpp:186 ../src/msw/textctrl.cpp:2710 -#: ../src/osx/textctrl_osx.cpp:639 ../src/richtext/richtextctrl.cpp:333 +#: ../src/common/stockitem.cpp:185 ../src/msw/textctrl.cpp:2867 +#: ../src/osx/textctrl_osx.cpp:654 ../src/richtext/richtextctrl.cpp:332 msgid "&Paste" msgstr "&Colar" -#: ../src/common/stockitem.cpp:186 ../src/richtext/richtextctrl.cpp:3490 +#: ../src/common/stockitem.cpp:185 ../src/richtext/richtextctrl.cpp:3484 #: ../src/stc/stc_i18n.cpp:19 msgid "Paste" msgstr "Colar" -#: ../src/common/stockitem.cpp:187 +#: ../src/common/stockitem.cpp:186 msgid "&Preferences" msgstr "&Preferências" -#: ../src/common/stockitem.cpp:187 ../src/osx/cocoa/preferences.mm:304 +#: ../src/common/stockitem.cpp:186 ../src/osx/cocoa/preferences.mm:304 msgid "Preferences" msgstr "Preferências" -#: ../src/common/stockitem.cpp:188 +#: ../src/common/stockitem.cpp:187 msgid "Print previe&w..." msgstr "Pré-visualização da impressã&o..." -#: ../src/common/stockitem.cpp:188 +#: ../src/common/stockitem.cpp:187 msgid "Print preview..." msgstr "Pré-visualização da impressão..." -#: ../src/common/stockitem.cpp:189 +#: ../src/common/stockitem.cpp:188 msgid "&Print..." msgstr "&Imprimir..." -#: ../src/common/stockitem.cpp:189 +#: ../src/common/stockitem.cpp:188 msgid "Print..." msgstr "Imprimir..." -#: ../src/common/stockitem.cpp:190 ../src/richtext/richtextctrl.cpp:338 -#: ../src/richtext/richtextctrl.cpp:5488 +#: ../src/common/stockitem.cpp:189 ../src/richtext/richtextctrl.cpp:337 +#: ../src/richtext/richtextctrl.cpp:5479 msgid "&Properties" msgstr "&Propriedades" -#: ../src/common/stockitem.cpp:190 +#: ../src/common/stockitem.cpp:189 msgid "Properties" msgstr "Propriedades" -#: ../src/common/stockitem.cpp:191 ../src/stc/stc_i18n.cpp:16 +#: ../src/common/stockitem.cpp:190 ../src/stc/stc_i18n.cpp:16 msgid "Redo" msgstr "Refazer" -#: ../src/common/stockitem.cpp:192 +#: ../src/common/stockitem.cpp:191 msgid "Refresh" msgstr "Atualizar" -#: ../src/common/stockitem.cpp:193 +#: ../src/common/stockitem.cpp:192 msgid "Remove" msgstr "Remover" -#: ../src/common/stockitem.cpp:194 +#: ../src/common/stockitem.cpp:193 msgid "Rep&lace..." msgstr "Sub&stituir..." -#: ../src/common/stockitem.cpp:194 +#: ../src/common/stockitem.cpp:193 msgid "Replace..." msgstr "Substituir..." -#: ../src/common/stockitem.cpp:195 +#: ../src/common/stockitem.cpp:194 msgid "Revert to Saved" msgstr "Reverter pro Salvo" -#: ../src/common/stockitem.cpp:197 ../src/generic/logg.cpp:509 +#: ../src/common/stockitem.cpp:196 ../src/generic/logg.cpp:549 msgid "Save &As..." msgstr "Salvar &Como..." -#: ../src/common/stockitem.cpp:197 +#: ../src/common/stockitem.cpp:196 msgid "Save As..." msgstr "Salvar Como..." -#: ../src/common/stockitem.cpp:198 ../src/msw/textctrl.cpp:2713 -#: ../src/osx/textctrl_osx.cpp:642 ../src/richtext/richtextctrl.cpp:336 +#: ../src/common/stockitem.cpp:197 ../src/msw/textctrl.cpp:2870 +#: ../src/osx/textctrl_osx.cpp:657 ../src/richtext/richtextctrl.cpp:335 msgid "Select &All" msgstr "Selecionar &Tudo" -#: ../src/common/stockitem.cpp:198 ../src/stc/stc_i18n.cpp:21 +#: ../src/common/stockitem.cpp:197 ../src/stc/stc_i18n.cpp:21 msgid "Select All" msgstr "Selecionar Tudo" -#: ../src/common/stockitem.cpp:199 +#: ../src/common/stockitem.cpp:198 msgid "&Color" msgstr "&Côr" -#: ../src/common/stockitem.cpp:199 +#: ../src/common/stockitem.cpp:198 msgid "Color" msgstr "Côr" -#: ../src/common/stockitem.cpp:200 +#: ../src/common/stockitem.cpp:199 msgid "&Font" msgstr "&Fonte" -#: ../src/common/stockitem.cpp:200 ../src/osx/carbon/fontdlg.cpp:284 -#: ../src/richtext/richtextformatdlg.cpp:337 +#: ../src/common/stockitem.cpp:199 ../src/richtext/richtextformatdlg.cpp:336 msgid "Font" msgstr "Fonte" -#: ../src/common/stockitem.cpp:201 +#: ../src/common/stockitem.cpp:200 msgid "&Ascending" msgstr "&Ascendente" -#: ../src/common/stockitem.cpp:201 +#: ../src/common/stockitem.cpp:200 msgid "Ascending" msgstr "Ascendente" -#: ../src/common/stockitem.cpp:202 +#: ../src/common/stockitem.cpp:201 msgid "&Descending" msgstr "&Descendente" -#: ../src/common/stockitem.cpp:202 +#: ../src/common/stockitem.cpp:201 msgid "Descending" msgstr "Descendente" -#: ../src/common/stockitem.cpp:203 +#: ../src/common/stockitem.cpp:202 msgid "&Spell Check" msgstr "&Verificação da Ortografia" -#: ../src/common/stockitem.cpp:203 +#: ../src/common/stockitem.cpp:202 msgid "Spell Check" msgstr "&Verificação da Ortografia" -#: ../src/common/stockitem.cpp:204 +#: ../src/common/stockitem.cpp:203 msgid "&Stop" msgstr "&Parar" -#: ../src/common/stockitem.cpp:204 +#: ../src/common/stockitem.cpp:203 msgid "Stop" msgstr "Parar" -#: ../src/common/stockitem.cpp:205 ../src/richtext/richtextfontpage.cpp:275 +#: ../src/common/stockitem.cpp:204 ../src/richtext/richtextfontpage.cpp:274 msgid "&Strikethrough" msgstr "&Sublinhado" -#: ../src/common/stockitem.cpp:205 +#: ../src/common/stockitem.cpp:204 msgid "Strikethrough" msgstr "Riscar" -#: ../src/common/stockitem.cpp:206 +#: ../src/common/stockitem.cpp:205 msgid "&Top" msgstr "&Topo" -#: ../src/common/stockitem.cpp:206 ../src/richtext/richtextsizepage.cpp:286 -#: ../src/richtext/richtextsizepage.cpp:290 +#: ../src/common/stockitem.cpp:205 ../src/richtext/richtextsizepage.cpp:285 +#: ../src/richtext/richtextsizepage.cpp:289 msgid "Top" msgstr "Topo" -#: ../src/common/stockitem.cpp:207 +#: ../src/common/stockitem.cpp:206 msgid "Undelete" msgstr "Restaurar" -#: ../src/common/stockitem.cpp:208 ../src/generic/fontdlgg.cpp:440 +#: ../src/common/stockitem.cpp:207 ../src/generic/fontdlgg.cpp:437 msgid "&Underline" msgstr "&Sublinhar" -#: ../src/common/stockitem.cpp:208 +#: ../src/common/stockitem.cpp:207 msgid "Underline" msgstr "Sublinhar" -#: ../src/common/stockitem.cpp:209 ../src/stc/stc_i18n.cpp:15 +#: ../src/common/stockitem.cpp:208 ../src/stc/stc_i18n.cpp:15 msgid "Undo" msgstr "Desfazer" -#: ../src/common/stockitem.cpp:210 +#: ../src/common/stockitem.cpp:209 msgid "&Unindent" msgstr "&Sem parágrafo" -#: ../src/common/stockitem.cpp:210 +#: ../src/common/stockitem.cpp:209 msgid "Unindent" msgstr "Sem parágrafo" -#: ../src/common/stockitem.cpp:211 +#: ../src/common/stockitem.cpp:210 msgid "&Up" msgstr "&Pra cima" -#: ../src/common/stockitem.cpp:211 ../src/generic/fdrepdlg.cpp:149 +#: ../src/common/stockitem.cpp:210 ../src/generic/fdrepdlg.cpp:148 msgid "Up" msgstr "Pra cima" -#: ../src/common/stockitem.cpp:212 ../src/msw/msgdlg.cpp:434 +#: ../src/common/stockitem.cpp:211 ../src/msw/msgdlg.cpp:417 msgid "&Yes" msgstr "&Sim" -#: ../src/common/stockitem.cpp:213 +#: ../src/common/stockitem.cpp:212 msgid "&Actual Size" msgstr "&Tamanho Real" -#: ../src/common/stockitem.cpp:213 +#: ../src/common/stockitem.cpp:212 msgid "Actual Size" msgstr "Tamanho Real" -#: ../src/common/stockitem.cpp:214 +#: ../src/common/stockitem.cpp:213 msgid "Zoom to &Fit" msgstr "Zoom para &Encaixar" -#: ../src/common/stockitem.cpp:214 +#: ../src/common/stockitem.cpp:213 msgid "Zoom to Fit" msgstr "Zoom pra Encaixar" -#: ../src/common/stockitem.cpp:215 +#: ../src/common/stockitem.cpp:214 msgid "Zoom &In" msgstr "Aumentar &Zoom" -#: ../src/common/stockitem.cpp:216 +#: ../src/common/stockitem.cpp:215 msgid "Zoom &Out" msgstr "Diminuir &Zoom" -#: ../src/common/stockitem.cpp:263 +#: ../src/common/stockitem.cpp:262 msgid "Show about dialog" msgstr "Mostrar o diálogo sobre" -#: ../src/common/stockitem.cpp:264 +#: ../src/common/stockitem.cpp:263 msgid "Copy selection" msgstr "Copiar a seleção" -#: ../src/common/stockitem.cpp:265 +#: ../src/common/stockitem.cpp:264 msgid "Cut selection" msgstr "Cortar a seleção" -#: ../src/common/stockitem.cpp:266 +#: ../src/common/stockitem.cpp:265 msgid "Delete selection" msgstr "Apagar a seleção" -#: ../src/common/stockitem.cpp:267 +#: ../src/common/stockitem.cpp:266 msgid "Find in document" msgstr "Achar no documento" -#: ../src/common/stockitem.cpp:268 +#: ../src/common/stockitem.cpp:267 msgid "Find and replace in document" msgstr "Achar e substituir no documento" -#: ../src/common/stockitem.cpp:269 +#: ../src/common/stockitem.cpp:268 msgid "Paste selection" msgstr "Colar a seleção" -#: ../src/common/stockitem.cpp:270 +#: ../src/common/stockitem.cpp:269 msgid "Quit this program" msgstr "Sair deste programa" -#: ../src/common/stockitem.cpp:271 +#: ../src/common/stockitem.cpp:270 msgid "Redo last action" msgstr "Refazer a última ação" -#: ../src/common/stockitem.cpp:272 +#: ../src/common/stockitem.cpp:271 msgid "Undo last action" msgstr "Desfazer a última ação" -#: ../src/common/stockitem.cpp:273 +#: ../src/common/stockitem.cpp:272 msgid "Create new document" msgstr "Criar novo documento" -#: ../src/common/stockitem.cpp:274 +#: ../src/common/stockitem.cpp:273 msgid "Open an existing document" msgstr "Abrir um documento existente" -#: ../src/common/stockitem.cpp:275 +#: ../src/common/stockitem.cpp:274 msgid "Close current document" msgstr "Fechar o documento atual" -#: ../src/common/stockitem.cpp:276 +#: ../src/common/stockitem.cpp:275 msgid "Save current document" msgstr "Salvar o documento atual" -#: ../src/common/stockitem.cpp:277 +#: ../src/common/stockitem.cpp:276 msgid "Save current document with a different filename" msgstr "Salvar o documento atual com um nome de arquivo diferente" -#: ../src/common/strconv.cpp:2209 +#: ../src/common/strconv.cpp:2324 #, c-format msgid "Conversion to charset '%s' doesn't work." msgstr "A conversão para o conjunto de caracteres '%s' não funciona." #: ../src/common/tarstrm.cpp:359 ../src/common/tarstrm.cpp:382 -#: ../src/common/tarstrm.cpp:413 ../src/generic/progdlgg.cpp:367 +#: ../src/common/tarstrm.cpp:413 ../src/generic/progdlgg.cpp:373 msgid "unknown" msgstr "desconhecido" -#: ../src/common/tarstrm.cpp:783 +#: ../src/common/tarstrm.cpp:781 msgid "incomplete header block in tar" msgstr "bloco do cabeçalho incompleto no tar" -#: ../src/common/tarstrm.cpp:807 +#: ../src/common/tarstrm.cpp:805 msgid "checksum failure reading tar header block" msgstr "falha do checksum ao ler o bloco do cabeçalho tar" -#: ../src/common/tarstrm.cpp:980 +#: ../src/common/tarstrm.cpp:978 msgid "invalid data in extended tar header" msgstr "dados inválidos no cabeçalho estendido do tar" -#: ../src/common/tarstrm.cpp:990 ../src/common/tarstrm.cpp:1012 -#: ../src/common/tarstrm.cpp:1486 ../src/common/tarstrm.cpp:1508 +#: ../src/common/tarstrm.cpp:988 ../src/common/tarstrm.cpp:1010 +#: ../src/common/tarstrm.cpp:1484 ../src/common/tarstrm.cpp:1506 msgid "tar entry not open" msgstr "entrada do tar não aberta" -#: ../src/common/tarstrm.cpp:1032 +#: ../src/common/tarstrm.cpp:1030 msgid "unexpected end of file" msgstr "fim inesperado do arquivo" -#: ../src/common/tarstrm.cpp:1306 +#: ../src/common/tarstrm.cpp:1304 #, c-format msgid "%s did not fit the tar header for entry '%s'" msgstr "%s não encaixou no cabeçalho tar para a entrada '%s'" -#: ../src/common/tarstrm.cpp:1368 +#: ../src/common/tarstrm.cpp:1366 msgid "incorrect size given for tar entry" msgstr "tamanho incorreto dado para a entrada do tar" @@ -3877,293 +3865,332 @@ msgstr "tamanho incorreto dado para a entrada do tar" msgid "'%s' is probably a binary buffer." msgstr "'%s' é provavelmente um buffer binário." -#: ../src/common/textcmn.cpp:956 ../src/richtext/richtextctrl.cpp:3058 +#: ../src/common/textcmn.cpp:1006 ../src/richtext/richtextctrl.cpp:3053 msgid "File couldn't be loaded." msgstr "O arquivo não pôde ser carregado." -#: ../src/common/textfile.cpp:96 +#: ../src/common/textfile.cpp:95 #, c-format msgid "Failed to read text file \"%s\"." msgstr "Falhou em ler o arquivo do texto \"%s\"." -#: ../src/common/textfile.cpp:161 +#: ../src/common/textfile.cpp:160 #, c-format msgid "can't write buffer '%s' to disk." msgstr "não pode gravar o buffer '%s' no disco." -#: ../src/common/time.cpp:209 +#: ../src/common/time.cpp:212 msgid "Failed to get the local system time" msgstr "Falhou em obter a hora local do sistema" -#: ../src/common/time.cpp:278 +#: ../src/common/time.cpp:279 msgid "wxGetTimeOfDay failed." msgstr "o wxGetTimeOfDay falhou." -#: ../src/common/translation.cpp:1018 +#: ../src/common/translation.cpp:929 #, c-format msgid "'%s' is not a valid message catalog." msgstr "'%s' não é um catálogo de mensagens válido." -#: ../src/common/translation.cpp:1043 +#: ../src/common/translation.cpp:954 msgid "Invalid message catalog." msgstr "Catálogo de mensagens inválido." -#: ../src/common/translation.cpp:1102 +#: ../src/common/translation.cpp:1013 #, c-format msgid "Failed to parse Plural-Forms: '%s'" msgstr "Falhou em analisar as Formas-do-Plural: '%s'" -#: ../src/common/translation.cpp:1753 +#: ../src/common/translation.cpp:1723 #, c-format msgid "using catalog '%s' from '%s'." msgstr "usando o catálogo '%s' de '%s'." -#: ../src/common/translation.cpp:1846 +#: ../src/common/translation.cpp:1816 #, c-format msgid "Resource '%s' is not a valid message catalog." msgstr "O recurso '%s' não é um catálogo de mensagens válido." -#: ../src/common/translation.cpp:1895 +#: ../src/common/translation.cpp:1865 msgid "Couldn't enumerate translations" msgstr "Não pôde enumerar as traduções" -#: ../src/common/utilscmn.cpp:1088 +#: ../src/common/utilscmn.cpp:1087 msgid "No default application configured for HTML files." msgstr "Nenhum aplicativo padrão configurado para os arquivos HTML." -#: ../src/common/utilscmn.cpp:1133 +#: ../src/common/utilscmn.cpp:1132 #, c-format msgid "Failed to open URL \"%s\" in default browser." msgstr "Falhou em abrir a URL '%s' no navegador padrão." -#: ../src/common/valtext.cpp:142 +#: ../src/common/valtext.cpp:144 msgid "Validation conflict" msgstr "Conflito de validação" -#: ../src/common/valtext.cpp:184 +#: ../src/common/valtext.cpp:186 msgid "Required information entry is empty." msgstr "O espaço da informação requerida está vazio." -#: ../src/common/valtext.cpp:186 +#: ../src/common/valtext.cpp:188 #, c-format msgid "'%s' is one of the invalid strings" msgstr "'%s' é uma das sequências inválidas" -#: ../src/common/valtext.cpp:188 +#: ../src/common/valtext.cpp:190 #, c-format msgid "'%s' is not one of the valid strings" msgstr "'%s' não é uma das sequências válidas" -#: ../src/common/valtext.cpp:197 +#: ../src/common/valtext.cpp:199 #, c-format msgid "'%s' contains invalid character(s)" msgstr "'%s' contém caractere(s) inválido(s)" -#: ../src/common/webrequest.cpp:100 +#: ../src/common/webrequest.cpp:139 #, c-format msgid "Error: %s (%d)" msgstr "Erro: %s (%d)" -#: ../src/common/webrequest.cpp:628 -msgid "Not enough free disk space for download." -msgstr "Não há espaço o bastante no disco pro download." +#: ../src/common/webrequest.cpp:655 +#, c-format +msgid "" +"Not enough free disk space for download: %llu needed but only %llu available." +msgstr "" +"Não há espaço livre no disco o bastante pro download: %llu necessários mas " +"só %llu disponíveis." + +#: ../src/common/webrequest.cpp:669 +#, c-format +msgid "Failed to create temporary file in %s" +msgstr "Falhou em criar um arquivo temporário no %s" -#: ../src/common/webrequest_curl.cpp:884 +#: ../src/common/webrequest_curl.cpp:1075 msgid "libcurl could not be initialized" msgstr "O libcurl não pôde ser inicializado" -#: ../src/common/webview.cpp:334 +#: ../src/common/webview.cpp:392 msgid "RunScriptAsync not supported" msgstr "O RunScriptAsync não é suportado" -#: ../src/common/webview.cpp:345 ../src/msw/webview_ie.cpp:1063 +#: ../src/common/webview.cpp:403 ../src/msw/webview_ie.cpp:1075 #, c-format msgid "Error running JavaScript: %s" msgstr "Erro ao executar o JavaScript: %s" -#: ../src/common/wincmn.cpp:1657 +#: ../src/common/webview_chromium.cpp:858 +#, c-format +msgid "Failed to set proxy \"%s\": %s" +msgstr "Falhou em definir o proxy \"%s\": %s" + +#: ../src/common/webview_chromium.cpp:989 +msgid "" +"Chromium can't be used because libcef.so was't loaded early enough; please " +"relink the application or use LD_PRELOAD to load it earlier." +msgstr "" +"O Chromium não pôde ser usado porque o libcef.so não foi carregado cedo o " +"bastante; por favor vincule o aplicativo de novo ou use o LD_PRELOAD pra " +"carregá-lo mais cedo." + +#: ../src/common/webview_chromium.cpp:1108 +msgid "Could not initialize Chromium" +msgstr "Não pôde inicializar o Chromium" + +#: ../src/common/webview_chromium.cpp:1617 +msgid "Show DevTools" +msgstr "Mostrar DevTools" + +#: ../src/common/webview_chromium.cpp:1618 +msgid "Close DevTools" +msgstr "Fechar DevTools" + +#: ../src/common/webview_chromium.cpp:1624 +msgid "Inspect" +msgstr "Inspecionar" + +#: ../src/common/wincmn.cpp:1628 msgid "This platform does not support background transparency." msgstr "Esta plataforma não suporta transparência de 2º plano." -#: ../src/common/wincmn.cpp:2111 +#: ../src/common/wincmn.cpp:2082 msgid "Could not transfer data to window" msgstr "Não pôde transferir os dados para a janela" -#: ../src/common/windowid.cpp:237 +#: ../src/common/windowid.cpp:240 msgid "Out of window IDs. Recommend shutting down application." msgstr "IDs fora da janela. Recomendar o fechamento do aplicativo." -#: ../src/common/xpmdecod.cpp:677 +#: ../src/common/xpmdecod.cpp:678 msgid "XPM: incorrect header format!" msgstr "XPM: formato do cabeçalho inválido!" -#: ../src/common/xpmdecod.cpp:702 +#: ../src/common/xpmdecod.cpp:703 #, c-format msgid "XPM: incorrect colour description in line %d" msgstr "XPM: descrição da côr incorreta na linha %d" -#: ../src/common/xpmdecod.cpp:714 ../src/common/xpmdecod.cpp:723 +#: ../src/common/xpmdecod.cpp:715 ../src/common/xpmdecod.cpp:724 #, c-format msgid "XPM: malformed colour definition '%s' at line %d!" msgstr "XPM: definição da côr mal formada '%s' na linha %d!" -#: ../src/common/xpmdecod.cpp:753 +#: ../src/common/xpmdecod.cpp:754 msgid "XPM: no colors left to use for mask!" msgstr "XPM: nenhuma côr restou pra usar na máscara!" -#: ../src/common/xpmdecod.cpp:780 +#: ../src/common/xpmdecod.cpp:781 #, c-format msgid "XPM: truncated image data at line %d!" msgstr "XPM: dados da imagem truncados na linha %d!" -#: ../src/common/xpmdecod.cpp:794 +#: ../src/common/xpmdecod.cpp:795 msgid "XPM: Malformed pixel data!" msgstr "XPM: Dados dos pixels mal formados!" -#: ../src/common/xti.cpp:498 +#: ../src/common/xti.cpp:492 msgid "Illegal Parameter Count for Create Method" msgstr "Contagem Ilegal dos Parâmetros pro Metodo Create" -#: ../src/common/xti.cpp:510 +#: ../src/common/xti.cpp:504 msgid "Illegal Parameter Count for ConstructObject Method" msgstr "Contagem Ilegal dos Parâmetros pro Método ConstructObject" -#: ../src/common/xtistrm.cpp:163 +#: ../src/common/xtistrm.cpp:161 #, c-format msgid "Create Parameter %s not found in declared RTTI Parameters" msgstr "Criar Parâmetro %s não achado nos Parâmetros RTTI declarados" -#: ../src/common/xtistrm.cpp:292 +#: ../src/common/xtistrm.cpp:290 msgid "Illegal Object Class (Non-wxEvtHandler) as Event Source" msgstr "Classe de Objeto Ilegal (Não-wxEvtHandler) como Fonte do Evento" -#: ../src/common/xtistrm.cpp:315 ../src/common/xtixml.cpp:347 -#: ../src/common/xtixml.cpp:500 +#: ../src/common/xtistrm.cpp:313 ../src/common/xtixml.cpp:345 +#: ../src/common/xtixml.cpp:498 msgid "Type must have enum - long conversion" msgstr "O tipo precisa ter conversão enum - long" -#: ../src/common/xtistrm.cpp:402 ../src/common/xtistrm.cpp:417 +#: ../src/common/xtistrm.cpp:400 ../src/common/xtistrm.cpp:415 msgid "Invalid or Null Object ID passed to GetObjectClassInfo" msgstr "ID do Objeto passada para o GetObjectClassInfo Inválida ou Nula" -#: ../src/common/xtistrm.cpp:407 +#: ../src/common/xtistrm.cpp:405 msgid "Unknown Object passed to GetObjectClassInfo" msgstr "Objeto Desconhecido passado para o GetObjectClassInfo" -#: ../src/common/xtistrm.cpp:422 +#: ../src/common/xtistrm.cpp:420 msgid "Already Registered Object passed to SetObjectClassInfo" msgstr "Objeto Já Registrado passado para o SetObjectClassInfo" -#: ../src/common/xtistrm.cpp:432 +#: ../src/common/xtistrm.cpp:430 msgid "Invalid or Null Object ID passed to HasObjectClassInfo" msgstr "ID do Objeto passada para o HasObjectClassInfo Inválida ou Nula" -#: ../src/common/xtistrm.cpp:462 +#: ../src/common/xtistrm.cpp:460 msgid "Passing a already registered object to SetObject" msgstr "Passando um objeto já registrado pro SetObject" -#: ../src/common/xtistrm.cpp:473 +#: ../src/common/xtistrm.cpp:471 msgid "Passing an unknown object to GetObject" msgstr "Passando um objeto desconhecido pro GetObject" -#: ../src/common/xtixml.cpp:231 +#: ../src/common/xtixml.cpp:229 msgid "Forward hrefs are not supported" msgstr "As hrefs adiantadas não são suportadas" -#: ../src/common/xtixml.cpp:249 +#: ../src/common/xtixml.cpp:247 #, c-format msgid "unknown class %s" msgstr "classe %s desconhecida" -#: ../src/common/xtixml.cpp:255 +#: ../src/common/xtixml.cpp:253 msgid "objects cannot have XML Text Nodes" msgstr "objetos não podem ter os Nodes de Texto do XML" -#: ../src/common/xtixml.cpp:260 +#: ../src/common/xtixml.cpp:258 msgid "Objects must have an id attribute" msgstr "Os objetos devem ter um atributo id" -#: ../src/common/xtixml.cpp:269 +#: ../src/common/xtixml.cpp:267 #, c-format msgid "Doubly used id : %d" msgstr "ID usada duas vezes : %d" -#: ../src/common/xtixml.cpp:318 +#: ../src/common/xtixml.cpp:316 #, c-format msgid "Unknown Property %s" msgstr "Propriedade %s Desconhecida" -#: ../src/common/xtixml.cpp:409 +#: ../src/common/xtixml.cpp:407 msgid "A non empty collection must consist of 'element' nodes" msgstr "Uma coleção não vazia deve consistir de nodes do elemento" -#: ../src/common/xtixml.cpp:480 +#: ../src/common/xtixml.cpp:478 msgid "incorrect event handler string, missing dot" msgstr "sequência do manipulador de eventos incorreta; ponto desaparecido" -#: ../src/common/zipstrm.cpp:558 +#: ../src/common/zipstrm.cpp:559 msgid "can't re-initialize zlib deflate stream" msgstr "não pode reinicializar o fluxo de deflação do zlib" -#: ../src/common/zipstrm.cpp:583 +#: ../src/common/zipstrm.cpp:584 msgid "can't re-initialize zlib inflate stream" msgstr "não pode reinicializar o sistema de inflação do zlib" -#: ../src/common/zipstrm.cpp:1029 +#: ../src/common/zipstrm.cpp:1023 msgid "Ignoring malformed extra data record, ZIP file may be corrupted" msgstr "" "Ignorando o registro dos dados extras mal-formados, o arquivo ZIP pode estar " "corrompido" -#: ../src/common/zipstrm.cpp:1508 +#: ../src/common/zipstrm.cpp:1502 msgid "assuming this is a multi-part zip concatenated" msgstr "assumindo que este é um zip multi-partes concatenado" -#: ../src/common/zipstrm.cpp:1674 +#: ../src/common/zipstrm.cpp:1664 msgid "invalid zip file" msgstr "arquivo zip inválido" -#: ../src/common/zipstrm.cpp:1733 +#: ../src/common/zipstrm.cpp:1723 msgid "can't find central directory in zip" msgstr "não pode achar o diretório central no zip" -#: ../src/common/zipstrm.cpp:1822 +#: ../src/common/zipstrm.cpp:1812 msgid "error reading zip central directory" msgstr "erro lendo o diretório central do zip" -#: ../src/common/zipstrm.cpp:1926 +#: ../src/common/zipstrm.cpp:1916 msgid "error reading zip local header" msgstr "erro lendo o cabeçalho local do zip" -#: ../src/common/zipstrm.cpp:1974 +#: ../src/common/zipstrm.cpp:1964 msgid "bad zipfile offset to entry" msgstr "offset ruim do arquivo zip para a entrada" -#: ../src/common/zipstrm.cpp:2041 +#: ../src/common/zipstrm.cpp:2031 msgid "stored file length not in Zip header" msgstr "tamanho do arquivo armazenado não está no cabeçalho do Zip" -#: ../src/common/zipstrm.cpp:2055 ../src/common/zipstrm.cpp:2376 +#: ../src/common/zipstrm.cpp:2045 ../src/common/zipstrm.cpp:2362 msgid "unsupported Zip compression method" msgstr "método de compressão do Zip não suportado" -#: ../src/common/zipstrm.cpp:2136 +#: ../src/common/zipstrm.cpp:2126 #, c-format msgid "reading zip stream (entry %s): bad length" msgstr "lendo o fluxo do zip (entrada %s): tamanho ruim" -#: ../src/common/zipstrm.cpp:2141 +#: ../src/common/zipstrm.cpp:2131 #, c-format msgid "reading zip stream (entry %s): bad crc" msgstr "lendo o fluxo do zip (entrada %s): crc ruim" -#: ../src/common/zipstrm.cpp:2594 +#: ../src/common/zipstrm.cpp:2578 #, c-format msgid "error writing zip entry '%s': file too large without ZIP64" msgstr "" "erro ao gravar a entrada do zip '%s': o arquivo é muito grande sem o ZIP64" -#: ../src/common/zipstrm.cpp:2601 +#: ../src/common/zipstrm.cpp:2585 #, c-format msgid "error writing zip entry '%s': bad crc or length" msgstr "erro gravando a entrada do zip '%s': crc ou tamanho ruim" @@ -4232,48 +4259,49 @@ msgstr "" msgid "DirectFB error %d occurred." msgstr "Ocorreu um erro do DirectFB %d." -#: ../src/generic/aboutdlgg.cpp:67 +#: ../src/generic/aboutdlgg.cpp:69 msgid "Developed by " msgstr "Desenvolvido por " -#: ../src/generic/aboutdlgg.cpp:70 +#: ../src/generic/aboutdlgg.cpp:72 msgid "Documentation by " msgstr "Documentação de " -#: ../src/generic/aboutdlgg.cpp:73 +#: ../src/generic/aboutdlgg.cpp:75 msgid "Graphics art by " msgstr "Arte gráfica de " -#: ../src/generic/aboutdlgg.cpp:76 +#: ../src/generic/aboutdlgg.cpp:78 msgid "Translations by " msgstr "Traduções de " -#: ../src/generic/aboutdlgg.cpp:123 ../src/osx/cocoa/aboutdlg.mm:83 +#: ../src/generic/aboutdlgg.cpp:133 ../src/osx/cocoa/aboutdlg.mm:83 msgid "Version " msgstr "Versão " -#: ../src/generic/aboutdlgg.cpp:135 ../src/msw/aboutdlg.cpp:58 +#. TRANSLATORS: %s is application name +#: ../src/generic/aboutdlgg.cpp:146 ../src/msw/aboutdlg.cpp:60 #, c-format msgid "About %s" msgstr "Sobre o %s" -#: ../src/generic/aboutdlgg.cpp:167 +#: ../src/generic/aboutdlgg.cpp:181 msgid "License" msgstr "Licença" -#: ../src/generic/aboutdlgg.cpp:170 +#: ../src/generic/aboutdlgg.cpp:184 msgid "Developers" msgstr "Desenvolvedores" -#: ../src/generic/aboutdlgg.cpp:174 +#: ../src/generic/aboutdlgg.cpp:188 msgid "Documentation writers" msgstr "Escritores da documentação" -#: ../src/generic/aboutdlgg.cpp:178 +#: ../src/generic/aboutdlgg.cpp:192 msgid "Artists" msgstr "Artistas" -#: ../src/generic/aboutdlgg.cpp:182 +#: ../src/generic/aboutdlgg.cpp:196 msgid "Translators" msgstr "Tradutores" @@ -4291,27 +4319,27 @@ msgstr "Nenhum manipulador de animação pro tipo %ld definido." msgid "Animation file is not of type %ld." msgstr "O arquivo de animação não é do tipo %ld." -#: ../src/generic/colrdlgg.cpp:155 ../src/gtk/colordlg.cpp:49 +#: ../src/generic/colrdlgg.cpp:154 ../src/gtk/colordlg.cpp:47 msgid "Choose colour" msgstr "Escolha uma côr" -#: ../src/generic/colrdlgg.cpp:358 +#: ../src/generic/colrdlgg.cpp:357 msgid "Red:" msgstr "Vermelho:" -#: ../src/generic/colrdlgg.cpp:361 +#: ../src/generic/colrdlgg.cpp:360 msgid "Green:" msgstr "Verde:" -#: ../src/generic/colrdlgg.cpp:364 +#: ../src/generic/colrdlgg.cpp:363 msgid "Blue:" msgstr "Azul:" -#: ../src/generic/colrdlgg.cpp:373 +#: ../src/generic/colrdlgg.cpp:372 msgid "Opacity:" msgstr "Opacidade:" -#: ../src/generic/colrdlgg.cpp:385 +#: ../src/generic/colrdlgg.cpp:384 msgid "Add to custom colours" msgstr "Adicionar as cores personalizadas" @@ -4333,77 +4361,90 @@ msgstr "verdadeiro" msgid "false" msgstr "falso" -#: ../src/generic/datavgen.cpp:6892 +#: ../src/generic/datavgen.cpp:6891 #, c-format msgid "Row %i" msgstr "Fileira %i" #. TRANSLATORS: Action for manipulating a tree control -#: ../src/generic/datavgen.cpp:6982 +#: ../src/generic/datavgen.cpp:6981 msgid "Collapse" msgstr "Retrair" #. TRANSLATORS: Action for manipulating a tree control -#: ../src/generic/datavgen.cpp:6985 +#: ../src/generic/datavgen.cpp:6984 msgid "Expand" msgstr "Expandir" -#: ../src/generic/datavgen.cpp:7004 +#. TRANSLATORS: Name of data view control and number of rows +#: ../src/generic/datavgen.cpp:7005 #, c-format msgid "%s (%d items)" msgstr "%s (%d itens)" -#: ../src/generic/datavgen.cpp:7055 +#: ../src/generic/datavgen.cpp:7056 #, c-format msgid "Column %u" msgstr "Coluna %u" #. TRANSLATORS: Keystroke for manipulating a tree control -#: ../src/generic/datavgen.cpp:7124 ../src/richtext/richtextbulletspage.cpp:186 -#: ../src/richtext/richtextbulletspage.cpp:189 -#: ../src/richtext/richtextbulletspage.cpp:190 -#: ../src/richtext/richtextliststylepage.cpp:249 +#: ../src/generic/datavgen.cpp:7125 ../src/richtext/richtextbulletspage.cpp:189 +#: ../src/richtext/richtextbulletspage.cpp:192 +#: ../src/richtext/richtextbulletspage.cpp:193 #: ../src/richtext/richtextliststylepage.cpp:252 -#: ../src/richtext/richtextliststylepage.cpp:253 -#: ../src/richtext/richtextsizepage.cpp:249 +#: ../src/richtext/richtextliststylepage.cpp:255 +#: ../src/richtext/richtextliststylepage.cpp:256 +#: ../src/richtext/richtextsizepage.cpp:248 msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keystroke for manipulating a tree control -#: ../src/generic/datavgen.cpp:7127 ../src/richtext/richtextbulletspage.cpp:188 -#: ../src/richtext/richtextliststylepage.cpp:251 -#: ../src/richtext/richtextsizepage.cpp:250 +#: ../src/generic/datavgen.cpp:7128 ../src/richtext/richtextbulletspage.cpp:191 +#: ../src/richtext/richtextliststylepage.cpp:254 +#: ../src/richtext/richtextsizepage.cpp:249 msgid "Right" msgstr "Direita" -#: ../src/generic/dbgrptg.cpp:160 +#: ../src/generic/datectlg.cpp:90 +#, c-format +msgid "" +"\"%s\" is not in the expected date format, please enter it as e.g. \"%s\"." +msgstr "" +"O \"%s\" não está no formato de data esperado, por favor insira-o como no " +"ex: \"%s\"." + +#: ../src/generic/datectlg.cpp:94 +msgid "Invalid date" +msgstr "Data inválida" + +#: ../src/generic/dbgrptg.cpp:159 #, c-format msgid "Open file \"%s\"" msgstr "Abrir arquivo \"%s\"" -#: ../src/generic/dbgrptg.cpp:171 +#: ../src/generic/dbgrptg.cpp:170 #, c-format msgid "Enter command to open file \"%s\":" msgstr "Insira o comando pra abrir o arquivo \"%s\":" -#: ../src/generic/dbgrptg.cpp:231 +#: ../src/generic/dbgrptg.cpp:230 msgid "Executable files (*.exe)|*.exe|" msgstr "Arquivos executáveis (*.exe)|*.exe|" -#: ../src/generic/dbgrptg.cpp:301 +#: ../src/generic/dbgrptg.cpp:300 #, c-format msgid "Debug report \"%s\"" msgstr "Relatório do debug \"%s\"" -#: ../src/generic/dbgrptg.cpp:317 +#: ../src/generic/dbgrptg.cpp:316 msgid "A debug report has been generated in the directory\n" msgstr "Um relatório de debug foi gerado no diretório\n" -#: ../src/generic/dbgrptg.cpp:318 +#: ../src/generic/dbgrptg.cpp:317 msgid "The following debug report will be generated\n" msgstr "O seguinte relatório de debug será gerado\n" -#: ../src/generic/dbgrptg.cpp:322 +#: ../src/generic/dbgrptg.cpp:321 msgid "" "The report contains the files listed below. If any of these files contain " "private information,\n" @@ -4413,7 +4454,7 @@ msgstr "" "contém informação privada,\n" "por favor desmarque-os e eles serão removidos do relatório.\n" -#: ../src/generic/dbgrptg.cpp:324 +#: ../src/generic/dbgrptg.cpp:323 msgid "" "If you wish to suppress this debug report completely, please choose the " "\"Cancel\" button,\n" @@ -4425,23 +4466,23 @@ msgstr "" "mas esteja avisado que pode impedir de melhorar o programa, então se\n" "possível de algum modo por favor continue com a geração do relatório.\n" -#: ../src/generic/dbgrptg.cpp:326 +#: ../src/generic/dbgrptg.cpp:325 msgid " Thank you and we're sorry for the inconvenience!\n" msgstr " Obrigado a você e nós lamentamos pela inconveniência!\n" -#: ../src/generic/dbgrptg.cpp:334 +#: ../src/generic/dbgrptg.cpp:333 msgid "&Debug report preview:" msgstr "&Pré-visualizar o relatório do debug:" -#: ../src/generic/dbgrptg.cpp:340 +#: ../src/generic/dbgrptg.cpp:339 msgid "&View..." msgstr "&Visualizar..." -#: ../src/generic/dbgrptg.cpp:360 +#: ../src/generic/dbgrptg.cpp:359 msgid "&Notes:" msgstr "&Notas:" -#: ../src/generic/dbgrptg.cpp:362 +#: ../src/generic/dbgrptg.cpp:361 msgid "" "If you have any additional information pertaining to this bug\n" "report, please enter it here and it will be joined to it:" @@ -4449,62 +4490,62 @@ msgstr "" "Se você tem qualquer informação adicional pertinente a este relatório\n" "de erro, por favor insira-a aqui e ela será adicionada a ele:" -#: ../src/generic/dcpsg.cpp:1628 +#: ../src/generic/dcpsg.cpp:1627 msgid "Cannot open file for PostScript printing!" msgstr "Não consegue abrir o arquivo para a impressão PostScript!" -#: ../src/generic/dirctrlg.cpp:408 +#: ../src/generic/dirctrlg.cpp:402 msgid "Computer" msgstr "Computador" -#: ../src/generic/dirctrlg.cpp:410 +#: ../src/generic/dirctrlg.cpp:404 msgid "Sections" msgstr "Seções" -#: ../src/generic/dirctrlg.cpp:488 +#: ../src/generic/dirctrlg.cpp:482 msgid "Home directory" msgstr "Diretório home" #. TRANSLATORS: Keyword of system colour -#: ../src/generic/dirctrlg.cpp:490 ../src/propgrid/advprops.cpp:780 +#: ../src/generic/dirctrlg.cpp:484 ../src/propgrid/advprops.cpp:811 msgid "Desktop" msgstr "Área de trabalho" -#: ../src/generic/dirctrlg.cpp:534 ../src/generic/filectrlg.cpp:752 +#: ../src/generic/dirctrlg.cpp:528 ../src/generic/filectrlg.cpp:752 msgid "Illegal directory name." msgstr "Nome ilegal de diretório." -#: ../src/generic/dirctrlg.cpp:534 ../src/generic/dirctrlg.cpp:552 -#: ../src/generic/dirctrlg.cpp:563 ../src/generic/dirdlgg.cpp:318 +#: ../src/generic/dirctrlg.cpp:528 ../src/generic/dirctrlg.cpp:546 +#: ../src/generic/dirctrlg.cpp:557 ../src/generic/dirdlgg.cpp:317 #: ../src/generic/filectrlg.cpp:638 ../src/generic/filectrlg.cpp:752 #: ../src/generic/filectrlg.cpp:766 ../src/generic/filectrlg.cpp:782 #: ../src/generic/filectrlg.cpp:1356 ../src/generic/filectrlg.cpp:1387 -#: ../src/generic/filedlgg.cpp:364 ../src/gtk/filedlg.cpp:75 +#: ../src/generic/filedlgg.cpp:362 ../src/gtk/filedlg.cpp:75 msgid "Error" msgstr "Erro" -#: ../src/generic/dirctrlg.cpp:552 ../src/generic/filectrlg.cpp:766 +#: ../src/generic/dirctrlg.cpp:546 ../src/generic/filectrlg.cpp:766 msgid "File name exists already." msgstr "O nome do arquivo já existe." -#: ../src/generic/dirctrlg.cpp:563 ../src/generic/dirdlgg.cpp:318 +#: ../src/generic/dirctrlg.cpp:557 ../src/generic/dirdlgg.cpp:317 #: ../src/generic/filectrlg.cpp:638 ../src/generic/filectrlg.cpp:782 msgid "Operation not permitted." msgstr "Operação não permitida." -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:209 +#: ../src/generic/dirdlgg.cpp:107 ../src/generic/filedlgg.cpp:207 msgid "Create new directory" msgstr "Criar novo diretório" -#: ../src/generic/dirdlgg.cpp:113 ../src/generic/filedlgg.cpp:205 +#: ../src/generic/dirdlgg.cpp:112 ../src/generic/filedlgg.cpp:203 msgid "Go to home directory" msgstr "Ir para o diretório home" -#: ../src/generic/dirdlgg.cpp:144 +#: ../src/generic/dirdlgg.cpp:143 msgid "Show &hidden directories" msgstr "Mostrar &diretórios ocultos" -#: ../src/generic/dirdlgg.cpp:197 +#: ../src/generic/dirdlgg.cpp:196 #, c-format msgid "" "The directory '%s' does not exist\n" @@ -4513,11 +4554,11 @@ msgstr "" "O diretório '%s' não existe\n" "Criá-lo agora?" -#: ../src/generic/dirdlgg.cpp:199 +#: ../src/generic/dirdlgg.cpp:198 msgid "Directory does not exist" msgstr "O diretório não existe" -#: ../src/generic/dirdlgg.cpp:215 +#: ../src/generic/dirdlgg.cpp:214 #, c-format msgid "" "Failed to create directory '%s'\n" @@ -4526,68 +4567,68 @@ msgstr "" "Falhou em criar o diretório '%s'\n" "(Você tem as permissões requeridas?)" -#: ../src/generic/dirdlgg.cpp:217 +#: ../src/generic/dirdlgg.cpp:216 msgid "Error creating directory" msgstr "Erro ao criar o diretório" -#: ../src/generic/dirdlgg.cpp:282 +#: ../src/generic/dirdlgg.cpp:281 msgid "You cannot add a new directory to this section." msgstr "Você não pode adicionar um novo diretório a esta seção." -#: ../src/generic/dirdlgg.cpp:283 +#: ../src/generic/dirdlgg.cpp:282 msgid "Create directory" msgstr "Criar diretório" -#: ../src/generic/dirdlgg.cpp:292 ../src/generic/dirdlgg.cpp:302 +#: ../src/generic/dirdlgg.cpp:291 ../src/generic/dirdlgg.cpp:301 #: ../src/generic/filectrlg.cpp:614 ../src/generic/filectrlg.cpp:623 msgid "NewName" msgstr "NovoNome" -#: ../src/generic/editlbox.cpp:131 +#: ../src/generic/editlbox.cpp:135 msgid "Edit item" msgstr "Editar item" -#: ../src/generic/editlbox.cpp:139 +#: ../src/generic/editlbox.cpp:143 msgid "New item" msgstr "Novo item" -#: ../src/generic/editlbox.cpp:147 +#: ../src/generic/editlbox.cpp:151 msgid "Delete item" msgstr "Apagar o item" -#: ../src/generic/editlbox.cpp:155 +#: ../src/generic/editlbox.cpp:159 msgid "Move up" msgstr "Mover pra cima" -#: ../src/generic/editlbox.cpp:160 +#: ../src/generic/editlbox.cpp:164 msgid "Move down" msgstr "Mover pra baixo" -#: ../src/generic/fdrepdlg.cpp:109 +#: ../src/generic/fdrepdlg.cpp:108 msgid "Search for:" msgstr "Procurar por:" -#: ../src/generic/fdrepdlg.cpp:121 +#: ../src/generic/fdrepdlg.cpp:120 msgid "Replace with:" msgstr "Substituir por:" -#: ../src/generic/fdrepdlg.cpp:141 +#: ../src/generic/fdrepdlg.cpp:140 msgid "Whole word" msgstr "Palavra inteira" -#: ../src/generic/fdrepdlg.cpp:144 +#: ../src/generic/fdrepdlg.cpp:143 msgid "Match case" msgstr "Combinar com maiúsculas ou minúsculas" -#: ../src/generic/fdrepdlg.cpp:157 +#: ../src/generic/fdrepdlg.cpp:156 msgid "Search direction" msgstr "Direção da busca" -#: ../src/generic/fdrepdlg.cpp:176 +#: ../src/generic/fdrepdlg.cpp:175 msgid "&Replace" msgstr "&Substituir" -#: ../src/generic/fdrepdlg.cpp:179 +#: ../src/generic/fdrepdlg.cpp:178 msgid "Replace &all" msgstr "Substituir &tudo" @@ -4614,8 +4655,8 @@ msgstr[1] "%ld bytes" msgid "Name" msgstr "Nome" -#: ../src/generic/filectrlg.cpp:421 ../src/richtext/richtextformatdlg.cpp:362 -#: ../src/richtext/richtextsizepage.cpp:299 +#: ../src/generic/filectrlg.cpp:421 ../src/richtext/richtextformatdlg.cpp:361 +#: ../src/richtext/richtextsizepage.cpp:298 msgid "Size" msgstr "Tamanho" @@ -4651,258 +4692,291 @@ msgstr "Especificação ilegal do arquivo." msgid "Directory doesn't exist." msgstr "O diretório não existe." -#: ../src/generic/filedlgg.cpp:197 +#: ../src/generic/filedlgg.cpp:195 msgid "View files as a list view" msgstr "Visualizar arquivos numa visualização de lista" -#: ../src/generic/filedlgg.cpp:199 +#: ../src/generic/filedlgg.cpp:197 msgid "View files as a detailed view" msgstr "Visualizar arquivos numa visualização detalhada" -#: ../src/generic/filedlgg.cpp:202 +#: ../src/generic/filedlgg.cpp:200 msgid "Go to parent directory" msgstr "Ir para o diretório pai" -#: ../src/generic/filedlgg.cpp:353 ../src/gtk/filedlg.cpp:58 +#: ../src/generic/filedlgg.cpp:351 ../src/gtk/filedlg.cpp:58 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "O arquivo '%s' já existe; você realmente quer sobrescrevê-lo?" -#: ../src/generic/filedlgg.cpp:356 ../src/gtk/filedlg.cpp:61 +#: ../src/generic/filedlgg.cpp:354 ../src/gtk/filedlg.cpp:61 msgid "Confirm" msgstr "Confirmar" -#: ../src/generic/filedlgg.cpp:364 ../src/gtk/filedlg.cpp:74 +#: ../src/generic/filedlgg.cpp:362 ../src/gtk/filedlg.cpp:74 msgid "Please choose an existing file." msgstr "Por favor escolha um arquivo existente." -#: ../src/generic/filepickerg.cpp:63 +#: ../src/generic/filepickerg.cpp:64 msgid "..." msgstr "..." -#: ../src/generic/fontdlgg.cpp:79 ../src/osx/carbon/fontdlg.cpp:150 -#: ../src/richtext/richtextformatdlg.cpp:521 +#: ../src/generic/fontdlgg.cpp:76 ../src/richtext/richtextformatdlg.cpp:519 msgid "ABCDEFGabcdefg12345" msgstr "ABCDEFGabcdefg12345" -#: ../src/generic/fontdlgg.cpp:318 +#: ../src/generic/fontdlgg.cpp:315 msgid "Roman" msgstr "Romano" -#: ../src/generic/fontdlgg.cpp:319 +#: ../src/generic/fontdlgg.cpp:316 msgid "Decorative" msgstr "Decorativo" -#: ../src/generic/fontdlgg.cpp:320 +#: ../src/generic/fontdlgg.cpp:317 msgid "Modern" msgstr "Moderno" -#: ../src/generic/fontdlgg.cpp:321 +#: ../src/generic/fontdlgg.cpp:318 msgid "Script" msgstr "Script" -#: ../src/generic/fontdlgg.cpp:322 +#: ../src/generic/fontdlgg.cpp:319 msgid "Swiss" msgstr "Suíço" -#: ../src/generic/fontdlgg.cpp:323 +#: ../src/generic/fontdlgg.cpp:320 msgid "Teletype" msgstr "Teletipo" -#: ../src/generic/fontdlgg.cpp:324 ../src/generic/fontdlgg.cpp:327 +#: ../src/generic/fontdlgg.cpp:321 ../src/generic/fontdlgg.cpp:324 msgid "Normal" msgstr "Normal" -#: ../src/generic/fontdlgg.cpp:326 +#: ../src/generic/fontdlgg.cpp:323 msgid "Slant" msgstr "Inclinar" -#: ../src/generic/fontdlgg.cpp:328 +#: ../src/generic/fontdlgg.cpp:325 msgid "Light" msgstr "Leve" -#: ../src/generic/fontdlgg.cpp:366 +#: ../src/generic/fontdlgg.cpp:363 msgid "&Font family:" msgstr "&Família da fonte:" -#: ../src/generic/fontdlgg.cpp:370 ../src/generic/fontdlgg.cpp:372 +#: ../src/generic/fontdlgg.cpp:367 ../src/generic/fontdlgg.cpp:369 msgid "The font family." msgstr "A família da fonte." -#: ../src/generic/fontdlgg.cpp:377 ../src/richtext/richtextstylepage.cpp:106 +#: ../src/generic/fontdlgg.cpp:374 ../src/richtext/richtextstylepage.cpp:105 msgid "&Style:" msgstr "&Estilo:" -#: ../src/generic/fontdlgg.cpp:381 ../src/generic/fontdlgg.cpp:383 +#: ../src/generic/fontdlgg.cpp:378 ../src/generic/fontdlgg.cpp:380 msgid "The font style." msgstr "O estilo da fonte." -#: ../src/generic/fontdlgg.cpp:388 +#: ../src/generic/fontdlgg.cpp:385 msgid "&Weight:" msgstr "&Peso:" -#: ../src/generic/fontdlgg.cpp:392 ../src/generic/fontdlgg.cpp:394 +#: ../src/generic/fontdlgg.cpp:389 ../src/generic/fontdlgg.cpp:391 msgid "The font weight." msgstr "O peso da fonte." -#: ../src/generic/fontdlgg.cpp:402 +#: ../src/generic/fontdlgg.cpp:399 msgid "C&olour:" msgstr "C&ôr:" -#: ../src/generic/fontdlgg.cpp:410 ../src/generic/fontdlgg.cpp:412 +#: ../src/generic/fontdlgg.cpp:407 ../src/generic/fontdlgg.cpp:409 msgid "The font colour." msgstr "A côr da fonte." -#: ../src/generic/fontdlgg.cpp:418 +#: ../src/generic/fontdlgg.cpp:415 msgid "&Point size:" msgstr "&Tamanho do ponto:" -#: ../src/generic/fontdlgg.cpp:423 ../src/generic/fontdlgg.cpp:425 -#: ../src/generic/fontdlgg.cpp:429 ../src/generic/fontdlgg.cpp:431 +#: ../src/generic/fontdlgg.cpp:420 ../src/generic/fontdlgg.cpp:422 +#: ../src/generic/fontdlgg.cpp:426 ../src/generic/fontdlgg.cpp:428 msgid "The font point size." msgstr "O tamanho do ponto da fonte." -#: ../src/generic/fontdlgg.cpp:442 ../src/generic/fontdlgg.cpp:444 +#: ../src/generic/fontdlgg.cpp:439 ../src/generic/fontdlgg.cpp:441 msgid "Whether the font is underlined." msgstr "Se a fonte está sublinhada." -#: ../src/generic/fontdlgg.cpp:451 ../src/html/helpwnd.cpp:1214 -#: ../src/osx/carbon/fontdlg.cpp:386 +#: ../src/generic/fontdlgg.cpp:448 ../src/html/helpwnd.cpp:1215 msgid "Preview:" msgstr "Pré-visualização:" -#: ../src/generic/fontdlgg.cpp:455 ../src/generic/fontdlgg.cpp:457 +#: ../src/generic/fontdlgg.cpp:452 ../src/generic/fontdlgg.cpp:454 msgid "Shows the font preview." msgstr "Mostra a pré-visualização da fonte." -#: ../src/generic/fontdlgg.cpp:467 ../src/generic/fontdlgg.cpp:486 +#: ../src/generic/fontdlgg.cpp:464 ../src/generic/fontdlgg.cpp:483 msgid "Click to cancel the font selection." msgstr "Clique pra cancelar a seleção da fonte." -#: ../src/generic/fontdlgg.cpp:472 ../src/generic/fontdlgg.cpp:474 -#: ../src/generic/fontdlgg.cpp:479 ../src/generic/fontdlgg.cpp:481 +#: ../src/generic/fontdlgg.cpp:469 ../src/generic/fontdlgg.cpp:471 +#: ../src/generic/fontdlgg.cpp:476 ../src/generic/fontdlgg.cpp:478 msgid "Click to confirm the font selection." msgstr "Clique pra confirmar a seleção da fonte." -#: ../src/generic/fontpickerg.cpp:51 ../src/gtk/fontdlg.cpp:77 +#: ../src/generic/fontpickerg.cpp:50 ../src/gtk/fontdlg.cpp:77 msgid "Choose font" msgstr "Escolha uma fonte" -#: ../src/generic/grid.cpp:6170 -msgid "Copying more than one selected block to clipboard is not supported." +#: ../src/generic/grid.cpp:6542 +msgid "" +"Error copying grid to the clipboard. Either selected cells were not " +"contiguous or no cell was selected." msgstr "" -"Não é suportado copiar mais do que um bloco selecionado pra área de trabalho." +"Erro ao copiar a grade para a área de transferência. Ou as células " +"selecionadas não eram contíguas ou nenhuma célula foi selecionada." + +#: ../src/generic/grid.cpp:12739 +msgid "Grid Corner" +msgstr "Canto da Grade" + +#: ../src/generic/grid.cpp:12741 +#, c-format +msgid "Column %s Header" +msgstr "Coluna %s Cabeçalho" -#: ../src/generic/helpext.cpp:258 +#: ../src/generic/grid.cpp:12743 +#, c-format +msgid "Row %s Header" +msgstr "Linha %s cabeçalho" + +#: ../src/generic/grid.cpp:12745 +#, c-format +msgid "Column %s: %s" +msgstr "Coluna %s: %s" + +#: ../src/generic/grid.cpp:12749 +#, c-format +msgid "Row %s: %s" +msgstr "Linha %s: %s" + +#: ../src/generic/grid.cpp:12753 +#, c-format +msgid "Row %s, Column %s: %s" +msgstr "Linha %s, Coluna %s: %s" + +#: ../src/generic/helpext.cpp:257 #, c-format msgid "Help directory \"%s\" not found." msgstr "O diretório da ajuda \"%s\" não foi achado." -#: ../src/generic/helpext.cpp:266 +#: ../src/generic/helpext.cpp:265 #, c-format msgid "Help file \"%s\" not found." msgstr "O arquivo de ajuda \"%s\" não foi achado." -#: ../src/generic/helpext.cpp:285 +#: ../src/generic/helpext.cpp:284 #, c-format msgid "Line %lu of map file \"%s\" has invalid syntax, skipped." msgstr "A linha %lu do arquivo do mapa \"%s\" tem sintaxe inválida, ignorada." -#: ../src/generic/helpext.cpp:293 +#: ../src/generic/helpext.cpp:292 #, c-format msgid "No valid mappings found in the file \"%s\"." msgstr "Nenhum mapeamento válido achado no arquivo \"%s\"." -#: ../src/generic/helpext.cpp:436 +#: ../src/generic/helpext.cpp:435 msgid "No entries found." msgstr "Não foram achadas entradas." -#: ../src/generic/helpext.cpp:445 ../src/generic/helpext.cpp:446 +#: ../src/generic/helpext.cpp:444 ../src/generic/helpext.cpp:445 msgid "Help Index" msgstr "Índice da Ajuda" -#: ../src/generic/helpext.cpp:449 +#: ../src/generic/helpext.cpp:448 msgid "Relevant entries:" msgstr "Entradas relevantes:" -#: ../src/generic/helpext.cpp:450 +#: ../src/generic/helpext.cpp:449 msgid "Entries found" msgstr "Entradas achadas" -#: ../src/generic/hyperlinkg.cpp:153 +#: ../src/generic/hyperlinkg.cpp:170 msgid "&Copy URL" msgstr "&Copiar URL" -#: ../src/generic/infobar.cpp:81 +#: ../src/generic/infobar.cpp:119 msgid "Hide this notification message." msgstr "Esconder esta mensagem de notificação." -#: ../src/generic/logg.cpp:221 +#. TRANSLATORS: %s will be either the application name or "Application" +#: ../src/generic/logg.cpp:257 #, c-format msgid "%s Error" msgstr "Erro do %s" -#: ../src/generic/logg.cpp:225 +#. TRANSLATORS: %s will be either the application name or "Application" +#: ../src/generic/logg.cpp:263 #, c-format msgid "%s Warning" msgstr "Aviso do %s" -#: ../src/generic/logg.cpp:233 +#. TRANSLATORS: %s will be either the application name or "Application" +#: ../src/generic/logg.cpp:273 #, c-format msgid "%s Information" msgstr "Informação do %s" -#: ../src/generic/logg.cpp:236 +#: ../src/generic/logg.cpp:276 msgid "Application" msgstr "Aplicativo" -#: ../src/generic/logg.cpp:509 +#: ../src/generic/logg.cpp:549 msgid "Save log contents to file" msgstr "Salvar os conteúdos do log num arquivo" -#: ../src/generic/logg.cpp:511 +#: ../src/generic/logg.cpp:551 msgid "C&lear" msgstr "L&impar" -#: ../src/generic/logg.cpp:511 +#: ../src/generic/logg.cpp:551 msgid "Clear the log contents" msgstr "Limpar os conteúdos do log" -#: ../src/generic/logg.cpp:513 +#: ../src/generic/logg.cpp:553 msgid "Close this window" msgstr "Fechar esta janela" -#: ../src/generic/logg.cpp:514 +#: ../src/generic/logg.cpp:554 msgid "&Log" msgstr "&Log" -#: ../src/generic/logg.cpp:570 ../src/generic/logg.cpp:973 +#: ../src/generic/logg.cpp:610 ../src/generic/logg.cpp:992 msgid "Can't save log contents to file." msgstr "Não consegue salvar os conteúdos do log no arquivo." -#: ../src/generic/logg.cpp:573 +#: ../src/generic/logg.cpp:613 #, c-format msgid "Log saved to the file '%s'." msgstr "Log salvo no arquivo '%s'." -#: ../src/generic/logg.cpp:679 +#: ../src/generic/logg.cpp:719 msgid "&Details" msgstr "&Detalhes" -#: ../src/generic/logg.cpp:953 +#: ../src/generic/logg.cpp:972 msgid "Failed to copy dialog contents to the clipboard." msgstr "Falhou em copiar os conteúdos do diálogo pra área de transferência." -#: ../src/generic/logg.cpp:1011 +#: ../src/generic/logg.cpp:1022 #, c-format msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Anexar o log ao arquivo '%s'? (escolher [Não] sobrescreverá ele)?" -#: ../src/generic/logg.cpp:1013 +#: ../src/generic/logg.cpp:1024 msgid "Question" msgstr "Pergunta" -#: ../src/generic/logg.cpp:1027 +#: ../src/generic/logg.cpp:1038 msgid "invalid message box return value" msgstr "valor de retorno da caixa de mensagem inválido" @@ -4910,7 +4984,7 @@ msgstr "valor de retorno da caixa de mensagem inválido" msgid "Notice" msgstr "Nota" -#: ../src/generic/preferencesg.cpp:112 +#: ../src/generic/preferencesg.cpp:116 #, c-format msgid "%s Preferences" msgstr "Preferências da %s" @@ -4919,8 +4993,8 @@ msgstr "Preferências da %s" msgid "Printing..." msgstr "Imprimindo..." -#: ../src/generic/printps.cpp:160 ../src/gtk/print.cpp:1154 -#: ../src/msw/printwin.cpp:185 +#: ../src/generic/printps.cpp:160 ../src/gtk/print.cpp:1074 +#: ../src/msw/printwin.cpp:217 msgid "Could not start printing." msgstr "Não pôde iniciar a impressão." @@ -4929,174 +5003,174 @@ msgstr "Não pôde iniciar a impressão." msgid "Printing page %d..." msgstr "Imprimindo a página %d..." -#: ../src/generic/prntdlgg.cpp:172 +#: ../src/generic/prntdlgg.cpp:171 msgid "Printer options" msgstr "Opções da impressora" -#: ../src/generic/prntdlgg.cpp:177 +#: ../src/generic/prntdlgg.cpp:176 msgid "Print to File" msgstr "Imprimir pro Arquivo" -#: ../src/generic/prntdlgg.cpp:180 +#: ../src/generic/prntdlgg.cpp:179 msgid "Setup..." msgstr "Configurar..." -#: ../src/generic/prntdlgg.cpp:188 +#: ../src/generic/prntdlgg.cpp:187 msgid "Printer:" msgstr "Impressora:" -#: ../src/generic/prntdlgg.cpp:196 +#: ../src/generic/prntdlgg.cpp:195 msgid "Status:" msgstr "Status:" -#: ../src/generic/prntdlgg.cpp:207 +#: ../src/generic/prntdlgg.cpp:206 msgid "All" msgstr "Tudo" -#: ../src/generic/prntdlgg.cpp:208 +#: ../src/generic/prntdlgg.cpp:207 msgid "Pages" msgstr "Páginas" -#: ../src/generic/prntdlgg.cpp:216 +#: ../src/generic/prntdlgg.cpp:215 msgid "Print Range" msgstr "Alcance da Impressão" -#: ../src/generic/prntdlgg.cpp:230 +#: ../src/generic/prntdlgg.cpp:229 msgid "From:" msgstr "De:" -#: ../src/generic/prntdlgg.cpp:234 +#: ../src/generic/prntdlgg.cpp:233 msgid "To:" msgstr "Para:" -#: ../src/generic/prntdlgg.cpp:239 +#: ../src/generic/prntdlgg.cpp:238 msgid "Copies:" msgstr "Cópias:" -#: ../src/generic/prntdlgg.cpp:289 +#: ../src/generic/prntdlgg.cpp:288 msgid "PostScript file" msgstr "Arquivo do PostScript" -#: ../src/generic/prntdlgg.cpp:440 +#: ../src/generic/prntdlgg.cpp:439 msgid "Print Setup" msgstr "Configuração da Impressão" -#: ../src/generic/prntdlgg.cpp:484 +#: ../src/generic/prntdlgg.cpp:483 msgid "Printer" msgstr "Impressora" -#: ../src/generic/prntdlgg.cpp:502 +#: ../src/generic/prntdlgg.cpp:501 msgid "Default printer" msgstr "Impressora padrão" -#: ../src/generic/prntdlgg.cpp:596 ../src/generic/prntdlgg.cpp:783 -#: ../src/generic/prntdlgg.cpp:823 ../src/generic/prntdlgg.cpp:836 -#: ../src/generic/prntdlgg.cpp:1032 ../src/generic/prntdlgg.cpp:1037 +#: ../src/generic/prntdlgg.cpp:595 ../src/generic/prntdlgg.cpp:782 +#: ../src/generic/prntdlgg.cpp:822 ../src/generic/prntdlgg.cpp:835 +#: ../src/generic/prntdlgg.cpp:1031 ../src/generic/prntdlgg.cpp:1036 msgid "Paper size" msgstr "Tamanho do papel" -#: ../src/generic/prntdlgg.cpp:605 ../src/generic/prntdlgg.cpp:848 +#: ../src/generic/prntdlgg.cpp:604 ../src/generic/prntdlgg.cpp:847 msgid "Portrait" msgstr "Retrato" -#: ../src/generic/prntdlgg.cpp:606 ../src/generic/prntdlgg.cpp:849 +#: ../src/generic/prntdlgg.cpp:605 ../src/generic/prntdlgg.cpp:848 msgid "Landscape" msgstr "Paisagem" -#: ../src/generic/prntdlgg.cpp:608 ../src/generic/prntdlgg.cpp:850 +#: ../src/generic/prntdlgg.cpp:607 ../src/generic/prntdlgg.cpp:849 msgid "Orientation" msgstr "Orientação" -#: ../src/generic/prntdlgg.cpp:611 +#: ../src/generic/prntdlgg.cpp:610 msgid "Options" msgstr "Opções" -#: ../src/generic/prntdlgg.cpp:613 +#: ../src/generic/prntdlgg.cpp:612 msgid "Print in colour" msgstr "Imprimir em cores" -#: ../src/generic/prntdlgg.cpp:622 +#: ../src/generic/prntdlgg.cpp:621 msgid "Print spooling" msgstr "Buffering da impressão" -#: ../src/generic/prntdlgg.cpp:624 +#: ../src/generic/prntdlgg.cpp:623 msgid "Printer command:" msgstr "Comando da impressora:" -#: ../src/generic/prntdlgg.cpp:632 +#: ../src/generic/prntdlgg.cpp:631 msgid "Printer options:" msgstr "Opções da impressora:" -#: ../src/generic/prntdlgg.cpp:861 +#: ../src/generic/prntdlgg.cpp:860 msgid "Left margin (mm):" msgstr "Margem esquerda (mm):" -#: ../src/generic/prntdlgg.cpp:862 +#: ../src/generic/prntdlgg.cpp:861 msgid "Top margin (mm):" msgstr "Margem superior (mm):" -#: ../src/generic/prntdlgg.cpp:873 +#: ../src/generic/prntdlgg.cpp:872 msgid "Right margin (mm):" msgstr "Margem direita (mm):" -#: ../src/generic/prntdlgg.cpp:874 +#: ../src/generic/prntdlgg.cpp:873 msgid "Bottom margin (mm):" msgstr "Margem do rodapé (mm):" -#: ../src/generic/prntdlgg.cpp:897 +#: ../src/generic/prntdlgg.cpp:896 msgid "Printer..." msgstr "Impressora..." -#: ../src/generic/progdlgg.cpp:240 +#: ../src/generic/progdlgg.cpp:246 msgid "&Skip" msgstr "&Pular" -#: ../src/generic/progdlgg.cpp:341 ../src/generic/progdlgg.cpp:620 +#: ../src/generic/progdlgg.cpp:347 ../src/generic/progdlgg.cpp:626 msgid "Unknown" msgstr "Desconhecido" -#: ../src/generic/progdlgg.cpp:445 ../src/msw/progdlg.cpp:526 +#: ../src/generic/progdlgg.cpp:451 ../src/msw/progdlg.cpp:526 msgid "Done." msgstr "Feito." -#: ../src/generic/srchctlg.cpp:55 ../src/gtk/srchctrl.cpp:182 -#: ../src/html/helpwnd.cpp:527 ../src/html/helpwnd.cpp:542 +#: ../src/generic/srchctlg.cpp:55 ../src/gtk/srchctrl.cpp:205 +#: ../src/html/helpwnd.cpp:530 ../src/html/helpwnd.cpp:545 msgid "Search" msgstr "Procurar" -#: ../src/generic/tabg.cpp:1027 +#: ../src/generic/tabg.cpp:1026 msgid "Could not find tab for id" msgstr "Não pôde achar a aba pela id" -#: ../src/generic/tipdlg.cpp:137 +#: ../src/generic/tipdlg.cpp:136 msgid "Tips not available, sorry!" msgstr "Dicas não disponíveis, lamento!" -#: ../src/generic/tipdlg.cpp:198 +#: ../src/generic/tipdlg.cpp:197 msgid "Tip of the Day" msgstr "Dica do Dia" -#: ../src/generic/tipdlg.cpp:208 +#: ../src/generic/tipdlg.cpp:207 msgid "Did you know..." msgstr "Você sabia..." -#: ../src/generic/tipdlg.cpp:233 +#: ../src/generic/tipdlg.cpp:232 msgid "&Show tips at startup" msgstr "&Mostrar dicas ao iniciar" -#: ../src/generic/tipdlg.cpp:237 +#: ../src/generic/tipdlg.cpp:236 msgid "&Next Tip" msgstr "&Próxima Dica" -#: ../src/generic/wizard.cpp:431 +#: ../src/generic/wizard.cpp:411 msgid "&Next >" msgstr "&Próximo >" -#: ../src/generic/wizard.cpp:432 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Concluir" -#: ../src/generic/wizard.cpp:440 +#: ../src/generic/wizard.cpp:420 msgid "< &Back" msgstr "< &Voltar" @@ -5104,7 +5178,7 @@ msgstr "< &Voltar" msgid "translator-credits" msgstr "tradutor-créditos" -#: ../src/gtk/app.cpp:468 +#: ../src/gtk/app.cpp:517 msgid "" "WARNING: using XIM input method is unsupported and may result in problems " "with input handling and flickering. Consider unsetting GTK_IM_MODULE or " @@ -5114,17 +5188,17 @@ msgstr "" "problemas com o manejamento e oscilação da entrada dos dados. Considere " "remover a definição GTK_IM_MODULE ou defina como \"ibus\"." -#: ../src/gtk/app.cpp:538 +#: ../src/gtk/app.cpp:569 msgid "Unable to initialize GTK+, is DISPLAY set properly?" msgstr "" "Incapaz de inicializar o GTK+, o DISPLAY está configurado apropriadamente?" -#: ../src/gtk/filedlg.cpp:88 ../src/gtk/filepicker.cpp:192 +#: ../src/gtk/filedlg.cpp:88 ../src/gtk/filepicker.cpp:255 #, c-format msgid "Changing current directory to \"%s\" failed" msgstr "Falhou em mudar o diretório atual para %s" -#: ../src/gtk/font.cpp:552 +#: ../src/gtk/font.cpp:548 msgid "" "Using private fonts is not supported on this system: Pango library is too " "old, 1.38 or later required." @@ -5132,24 +5206,24 @@ msgstr "" "Usar fontes privadas não é suportado neste sistema: A biblioteca do Pango é " "muito antiga, 1.38 ou superior requerido." -#: ../src/gtk/font.cpp:562 +#: ../src/gtk/font.cpp:558 msgid "Failed to create font configuration object." msgstr "Falhou em criar o objeto da configuração da fonte." -#: ../src/gtk/font.cpp:572 +#: ../src/gtk/font.cpp:568 #, c-format msgid "Failed to add custom font \"%s\"." msgstr "Falhou em adicionar a fonte personalizada \"%s\"." -#: ../src/gtk/font.cpp:580 +#: ../src/gtk/font.cpp:576 msgid "Failed to register font configuration using private fonts." msgstr "Falhou em registrar a configuração da fonte usando fontes privadas." -#: ../src/gtk/glcanvas.cpp:124 ../src/gtk/glcanvas.cpp:139 +#: ../src/gtk/glcanvas.cpp:117 ../src/gtk/glcanvas.cpp:132 msgid "Fatal Error" msgstr "Erro Fatal" -#: ../src/gtk/glcanvas.cpp:124 +#: ../src/gtk/glcanvas.cpp:117 msgid "" "This program wasn't compiled with EGL support required under Wayland, " "either\n" @@ -5162,7 +5236,7 @@ msgstr "" "definindo\n" "a variável do ambiente como GDK_BACKEND=x11 antes de iniciar seu programa." -#: ../src/gtk/glcanvas.cpp:139 +#: ../src/gtk/glcanvas.cpp:132 msgid "" "wxGLCanvas is only supported on Wayland and X11 currently. You may be able " "to\n" @@ -5179,25 +5253,38 @@ msgstr "" msgid "MDI child" msgstr "Filho do MDI" -#: ../src/gtk/print.cpp:212 +#: ../src/gtk/print.cpp:215 msgid "Custom size" msgstr "Tamanho personalizado" -#: ../src/gtk/print.cpp:726 -msgid "Error while printing: " -msgstr "Erro enquanto imprimia: " +#: ../src/gtk/print.cpp:749 +#, c-format +msgid "Error while printing: %s" +msgstr "Erro enquanto imprimia: %s" -#: ../src/gtk/print.cpp:848 +#: ../src/gtk/print.cpp:813 msgid "Page Setup" msgstr "Configuração da Página" -#: ../src/gtk/webview_webkit.cpp:930 +#: ../src/gtk/webview_webkit.cpp:932 msgid "Retrieving JavaScript script output is not supported with WebKit v1" msgstr "" "A recuperação da saída dos dados do script do JavaScript não é suportada com " "o WebKit v1" -#: ../src/gtk/window.cpp:5807 +#: ../src/gtk/webview_webkit2.cpp:1099 +msgid "" +"Setting proxy is not supported by WebKit, at least version 2.16 is required." +msgstr "" +"A configuração do proxy não é suportada pelo WebKit, pelo menos a versão " +"2.16 é requerida." + +#: ../src/gtk/webview_webkit2.cpp:1105 +msgid "This program was compiled without support for setting WebKit proxy." +msgstr "" +"Este programa foi compilado sem suporte pra configuração do proxy do WebKit." + +#: ../src/gtk/window.cpp:6249 msgid "" "GTK+ installed on this machine is too old to support screen compositing, " "please install GTK+ 2.12 or later." @@ -5205,7 +5292,7 @@ msgstr "" "O GTK+ instalado nesta máquina é muito antigo pra suportar a composição de " "tela, por favor instale o GTK+ 2.12 ou superior." -#: ../src/gtk/window.cpp:5825 +#: ../src/gtk/window.cpp:6267 msgid "" "Compositing not supported by this system, please enable it in your Window " "Manager." @@ -5213,7 +5300,7 @@ msgstr "" "Composição não suportada por este sistema, por favor ative-a no seu " "Gerenciador de Janelas." -#: ../src/gtk/window.cpp:5836 +#: ../src/gtk/window.cpp:6278 msgid "" "This program was compiled with a too old version of GTK+, please rebuild " "with GTK+ 2.12 or newer." @@ -5308,21 +5395,21 @@ msgstr "Ajuda: %s" msgid "Adding book %s" msgstr "Adicionando o livro %s" -#: ../src/html/helpdata.cpp:296 +#: ../src/html/helpdata.cpp:295 #, c-format msgid "Cannot open contents file: %s" msgstr "Não consegue abrir o arquivo dos conteúdos: %s" -#: ../src/html/helpdata.cpp:310 +#: ../src/html/helpdata.cpp:309 #, c-format msgid "Cannot open index file: %s" msgstr "Não consegue abrir o arquivo do índice: %s" -#: ../src/html/helpdata.cpp:644 +#: ../src/html/helpdata.cpp:643 msgid "noname" msgstr "sem nome" -#: ../src/html/helpdata.cpp:654 +#: ../src/html/helpdata.cpp:652 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Não consegue abrir o livro de ajuda em HTML: %s" @@ -5331,8 +5418,8 @@ msgstr "Não consegue abrir o livro de ajuda em HTML: %s" msgid "Displays help as you browse the books on the left." msgstr "Exibe a ajuda conforme você navega pelos livros a esquerda." -#: ../src/html/helpwnd.cpp:411 ../src/html/helpwnd.cpp:1098 -#: ../src/html/helpwnd.cpp:1734 +#: ../src/html/helpwnd.cpp:411 ../src/html/helpwnd.cpp:1100 +#: ../src/html/helpwnd.cpp:1735 msgid "(bookmarks)" msgstr "(favoritos)" @@ -5344,19 +5431,19 @@ msgstr "Adicionar a página atual aos favoritos" msgid "Remove current page from bookmarks" msgstr "Remover a página atual dos favoritos" -#: ../src/html/helpwnd.cpp:467 +#: ../src/html/helpwnd.cpp:470 msgid "Contents" msgstr "Conteúdos" -#: ../src/html/helpwnd.cpp:482 +#: ../src/html/helpwnd.cpp:485 msgid "Find" msgstr "Achar" -#: ../src/html/helpwnd.cpp:484 +#: ../src/html/helpwnd.cpp:487 msgid "Show all" msgstr "Mostrar tudo" -#: ../src/html/helpwnd.cpp:494 +#: ../src/html/helpwnd.cpp:497 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -5364,19 +5451,19 @@ msgstr "" "Exibe todos os itens do índice que contém a sub-sequência dada. A busca é " "caso sensitivo." -#: ../src/html/helpwnd.cpp:495 +#: ../src/html/helpwnd.cpp:498 msgid "Show all items in index" msgstr "Mostrar todos os itens no índice" -#: ../src/html/helpwnd.cpp:525 +#: ../src/html/helpwnd.cpp:528 msgid "Case sensitive" msgstr "Caso sensitivo" -#: ../src/html/helpwnd.cpp:526 +#: ../src/html/helpwnd.cpp:529 msgid "Whole words only" msgstr "Só palavras inteiras" -#: ../src/html/helpwnd.cpp:529 +#: ../src/html/helpwnd.cpp:532 msgid "" "Search contents of help book(s) for all occurrences of the text you typed " "above" @@ -5384,147 +5471,147 @@ msgstr "" "Pesquisar conteúdos do(s) livro(s) de ajuda pra todas as ocorrências do " "texto que você digitou acima" -#: ../src/html/helpwnd.cpp:650 +#: ../src/html/helpwnd.cpp:653 msgid "Show/hide navigation panel" msgstr "Mostrar/ocultar o painel de navegação" -#: ../src/html/helpwnd.cpp:652 +#: ../src/html/helpwnd.cpp:655 msgid "Go back" msgstr "Voltar" -#: ../src/html/helpwnd.cpp:653 +#: ../src/html/helpwnd.cpp:656 msgid "Go forward" msgstr "Avançar" -#: ../src/html/helpwnd.cpp:655 +#: ../src/html/helpwnd.cpp:658 msgid "Go one level up in document hierarchy" msgstr "Ir um nível acima na hierarquia do documento" -#: ../src/html/helpwnd.cpp:663 ../src/html/helpwnd.cpp:1546 +#: ../src/html/helpwnd.cpp:666 ../src/html/helpwnd.cpp:1547 msgid "Open HTML document" msgstr "Abrir documento HTML" -#: ../src/html/helpwnd.cpp:667 +#: ../src/html/helpwnd.cpp:670 msgid "Print this page" msgstr "Imprimir esta página" -#: ../src/html/helpwnd.cpp:671 +#: ../src/html/helpwnd.cpp:674 msgid "Display options dialog" msgstr "Exibir o diálogo das opções" -#: ../src/html/helpwnd.cpp:792 +#: ../src/html/helpwnd.cpp:795 msgid "Please choose the page to display:" msgstr "Por favor escolha a página a exibir:" -#: ../src/html/helpwnd.cpp:793 +#: ../src/html/helpwnd.cpp:796 msgid "Help Topics" msgstr "Tópicos da Ajuda" -#: ../src/html/helpwnd.cpp:849 +#: ../src/html/helpwnd.cpp:852 msgid "Searching..." msgstr "Procurando..." -#: ../src/html/helpwnd.cpp:850 +#: ../src/html/helpwnd.cpp:853 msgid "No matching page found yet" msgstr "Nenhuma página que combine ainda foi achada" -#: ../src/html/helpwnd.cpp:867 +#: ../src/html/helpwnd.cpp:870 #, c-format msgid "Found %i matches" msgstr "Achou %i combinações" -#: ../src/html/helpwnd.cpp:955 +#: ../src/html/helpwnd.cpp:958 msgid "(Help)" msgstr "(Ajuda)" -#: ../src/html/helpwnd.cpp:1023 +#: ../src/html/helpwnd.cpp:1026 #, c-format msgid "%d of %lu" msgstr "%d de %lu" -#: ../src/html/helpwnd.cpp:1025 +#: ../src/html/helpwnd.cpp:1028 #, c-format msgid "%lu of %lu" msgstr "%lu de %lu" -#: ../src/html/helpwnd.cpp:1044 +#: ../src/html/helpwnd.cpp:1047 msgid "Search in all books" msgstr "Procurar em todos os livros" -#: ../src/html/helpwnd.cpp:1192 +#: ../src/html/helpwnd.cpp:1193 msgid "Help Browser Options" msgstr "Opções de Ajuda do Navegador" -#: ../src/html/helpwnd.cpp:1197 +#: ../src/html/helpwnd.cpp:1198 msgid "Normal font:" msgstr "Fonte normal:" -#: ../src/html/helpwnd.cpp:1198 +#: ../src/html/helpwnd.cpp:1199 msgid "Fixed font:" msgstr "Fonte fixa:" -#: ../src/html/helpwnd.cpp:1199 +#: ../src/html/helpwnd.cpp:1200 msgid "Font size:" msgstr "Tamanho da fonte:" -#: ../src/html/helpwnd.cpp:1244 +#: ../src/html/helpwnd.cpp:1245 msgid "font size" msgstr "tamanho da fonte" -#: ../src/html/helpwnd.cpp:1255 +#: ../src/html/helpwnd.cpp:1256 msgid "Normal face
and underlined. " msgstr "Face normal
e sublinhado. " -#: ../src/html/helpwnd.cpp:1256 +#: ../src/html/helpwnd.cpp:1257 msgid "Italic face. " msgstr "Face em itálico. " -#: ../src/html/helpwnd.cpp:1257 +#: ../src/html/helpwnd.cpp:1258 msgid "Bold face. " msgstr "Face em negrito. " -#: ../src/html/helpwnd.cpp:1258 +#: ../src/html/helpwnd.cpp:1259 msgid "Bold italic face.
" msgstr "Face em negrito itálico.
" -#: ../src/html/helpwnd.cpp:1261 +#: ../src/html/helpwnd.cpp:1262 msgid "Fixed size face.
bold italic " msgstr "Face do tamanho fixo.
negrito itálico " -#: ../src/html/helpwnd.cpp:1262 +#: ../src/html/helpwnd.cpp:1263 msgid "bold italic underlined
" msgstr "negrito itálico sublinhado
" -#: ../src/html/helpwnd.cpp:1523 +#: ../src/html/helpwnd.cpp:1524 msgid "Help Printing" msgstr "Ajuda com a Impressão" -#: ../src/html/helpwnd.cpp:1526 +#: ../src/html/helpwnd.cpp:1527 msgid "Cannot print empty page." msgstr "Não consegue imprimir a página vazia." -#: ../src/html/helpwnd.cpp:1539 +#: ../src/html/helpwnd.cpp:1540 msgid "HTML files (*.html;*.htm)|*.html;*.htm|" msgstr "Arquivos HTML (*.html;*.htm)|*.html;*.htm|" -#: ../src/html/helpwnd.cpp:1540 +#: ../src/html/helpwnd.cpp:1541 msgid "Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|" msgstr "Livros de ajuda (*.htb)|*.htb|Livros de ajuda (*.zip)|*.zip|" -#: ../src/html/helpwnd.cpp:1541 +#: ../src/html/helpwnd.cpp:1542 msgid "HTML Help Project (*.hhp)|*.hhp|" msgstr "Projeto de Ajuda em HTML (*.hhp)|*.hhp|" -#: ../src/html/helpwnd.cpp:1543 +#: ../src/html/helpwnd.cpp:1544 msgid "Compressed HTML Help file (*.chm)|*.chm|" msgstr "Arquivo de ajuda em HTML Compactado (*.chm)|*.chm|" -#: ../src/html/helpwnd.cpp:1670 +#: ../src/html/helpwnd.cpp:1671 #, c-format msgid "%i of %u" msgstr "%i de %u" -#: ../src/html/helpwnd.cpp:1708 +#: ../src/html/helpwnd.cpp:1709 #, c-format msgid "%u of %u" msgstr "%u de %u" @@ -5534,29 +5621,29 @@ msgstr "%u de %u" msgid "Cannot open HTML document: %s" msgstr "Não consegue abrir o documento HTML: %s" -#: ../src/html/htmlwin.cpp:569 +#: ../src/html/htmlwin.cpp:577 msgid "Connecting..." msgstr "Conectando..." -#: ../src/html/htmlwin.cpp:586 +#: ../src/html/htmlwin.cpp:594 #, c-format msgid "Unable to open requested HTML document: %s" msgstr "Incapaz de abrir o documento HTML requisitado: %s" -#: ../src/html/htmlwin.cpp:600 +#: ../src/html/htmlwin.cpp:608 msgid "Loading : " msgstr "Carregando : " -#: ../src/html/htmlwin.cpp:643 +#: ../src/html/htmlwin.cpp:651 msgid "Done" msgstr "Feito" -#: ../src/html/htmlwin.cpp:691 +#: ../src/html/htmlwin.cpp:701 #, c-format msgid "HTML anchor %s does not exist." msgstr "A âncora HTML %s não existe." -#: ../src/html/htmlwin.cpp:1020 +#: ../src/html/htmlwin.cpp:1035 #, c-format msgid "Copied to clipboard:\"%s\"" msgstr "Copiado pra área de transferência:\"%s\"" @@ -5594,55 +5681,49 @@ msgstr "" msgid ": file does not exist!" msgstr ": o arquivo não existe!" -#: ../src/html/htmprint.cpp:712 ../src/richtext/richtextprint.cpp:589 -msgid " Preview" -msgstr " Pré-visualizar" +#. TRANSLATORS: %s may be a document title. +#: ../src/html/htmprint.cpp:712 +#, c-format +msgid "%s Preview" +msgstr "%s Pré-visualização" -#: ../src/html/htmprint.cpp:749 ../src/richtext/richtextprint.cpp:615 +#: ../src/html/htmprint.cpp:750 ../src/richtext/richtextprint.cpp:615 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" "Houve um problema durante a configuração da página: você pode precisar " "definir uma impressora padrão." -#: ../src/msw/clipbrd.cpp:89 +#: ../src/msw/clipbrd.cpp:80 msgid "Failed to open the clipboard." msgstr "Falhou em abrir a área de transferência." -#: ../src/msw/clipbrd.cpp:110 +#: ../src/msw/clipbrd.cpp:101 msgid "Failed to close the clipboard." msgstr "Falhou em fechar a área de transferência." -#: ../src/msw/clipbrd.cpp:122 +#: ../src/msw/clipbrd.cpp:113 msgid "Failed to empty the clipboard." msgstr "Falhou em esvaziar a área de transferência." -#: ../src/msw/clipbrd.cpp:325 -msgid "Unsupported clipboard format." -msgstr "Formato da área de transferência não suportado." - -#: ../src/msw/clipbrd.cpp:443 -msgid "Failed to set clipboard data." -msgstr "Falhou em definir os dados da área de transferência." - -#: ../src/msw/clipbrd.cpp:610 +#: ../src/msw/clipbrd.cpp:284 msgid "Failed to put data on the clipboard" msgstr "Falhou em pôr os dados na área de transferência" -#: ../src/msw/clipbrd.cpp:731 +#: ../src/msw/clipbrd.cpp:326 msgid "Failed to get data from the clipboard" msgstr "Falhou em obter os dados da área de transferência" -#: ../src/msw/clipbrd.cpp:768 +#: ../src/msw/clipbrd.cpp:363 msgid "Failed to retrieve the supported clipboard formats" msgstr "Falhou em recuperar os formatos da área de transferência suportados" -#: ../src/msw/colordlg.cpp:229 +#: ../src/msw/colordlg.cpp:228 #, c-format msgid "Colour selection dialog failed with error %0lx." msgstr "O diálogo da seleção de cores falhou com o erro %0lx." -#: ../src/msw/cursor.cpp:205 +#: ../src/msw/cursor.cpp:204 msgid "Failed to create cursor." msgstr "Falhou em criar o cursor." @@ -5791,7 +5872,7 @@ msgstr "" msgid "Unknown DDE error %08x" msgstr "Erro DDE desconhecido %08x" -#: ../src/msw/dialup.cpp:344 +#: ../src/msw/dialup.cpp:343 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -5799,7 +5880,7 @@ msgstr "" "As funções de discagem estão indisponíveis porque o serviço de acesso remoto " "(RAS) não está instalado nesta máquina. Por favor instale-o." -#: ../src/msw/dialup.cpp:403 +#: ../src/msw/dialup.cpp:402 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is too " @@ -5809,118 +5890,128 @@ msgstr "" "antiga, por favor atualize (a seguinte função requerida está desaparecida: " "%s)." -#: ../src/msw/dialup.cpp:438 +#: ../src/msw/dialup.cpp:437 msgid "Failed to retrieve text of RAS error message" msgstr "Falhou em recuperar o texto da mensagem de erro do RAS" -#: ../src/msw/dialup.cpp:441 +#: ../src/msw/dialup.cpp:440 #, c-format msgid "unknown error (error code %08x)." msgstr "Erro desconhecido (código do erro %08x)." -#: ../src/msw/dialup.cpp:493 +#: ../src/msw/dialup.cpp:492 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Não consegue achar uma conexão dial-up ativa: %s" -#: ../src/msw/dialup.cpp:514 +#: ../src/msw/dialup.cpp:513 msgid "Several active dialup connections found, choosing one randomly." msgstr "Várias conexões dial-up ativas achadas, escolhendo uma aleatoriamente." -#: ../src/msw/dialup.cpp:599 ../src/msw/dialup.cpp:833 +#: ../src/msw/dialup.cpp:598 ../src/msw/dialup.cpp:832 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Falhou em estabelecer uma conexão dial-up: %s" -#: ../src/msw/dialup.cpp:665 +#: ../src/msw/dialup.cpp:664 #, c-format msgid "Failed to get ISP names: %s" msgstr "Falhou em obter os nomes dos ISPs: %s" -#: ../src/msw/dialup.cpp:713 +#: ../src/msw/dialup.cpp:712 msgid "Failed to connect: no ISP to dial." msgstr "Falhou em conectar: nenhum ISP para discar." -#: ../src/msw/dialup.cpp:733 +#: ../src/msw/dialup.cpp:732 msgid "Choose ISP to dial" msgstr "Escolha um ISP pra discar" -#: ../src/msw/dialup.cpp:734 +#: ../src/msw/dialup.cpp:733 msgid "Please choose which ISP do you want to connect to" msgstr "Por favor escolha com qual ISP vocé quer se conectar" -#: ../src/msw/dialup.cpp:767 +#: ../src/msw/dialup.cpp:766 msgid "Failed to connect: missing username/password." msgstr "Falhou em conectar: faltando o nome de usuário/senha." -#: ../src/msw/dialup.cpp:797 +#: ../src/msw/dialup.cpp:796 msgid "Cannot find the location of address book file" msgstr "Não consegue achar o local do arquivo do livro de endereços" -#: ../src/msw/dialup.cpp:828 +#: ../src/msw/dialup.cpp:827 #, c-format msgid "Failed to initiate dialup connection: %s" msgstr "Falhou em iniciar a conexão dial-up: %s" -#: ../src/msw/dialup.cpp:898 +#: ../src/msw/dialup.cpp:897 msgid "Cannot hang up - no active dialup connection." msgstr "Não consegue desligar - nenhuma conexão dial-up ativa." -#: ../src/msw/dialup.cpp:908 +#: ../src/msw/dialup.cpp:907 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Falhou em finalizar a conexão dial-up: %s" -#: ../src/msw/dib.cpp:312 +#: ../src/msw/dib.cpp:313 #, c-format msgid "Failed to save the bitmap image to file \"%s\"." msgstr "Falhou em salvar a imagem bitmap como arquivo \"%s\"." -#: ../src/msw/dib.cpp:535 +#: ../src/msw/dib.cpp:543 #, c-format msgid "Failed to allocate %luKb of memory for bitmap data." msgstr "Falhou em distribuir %luKb de memória pros dados do bitmap." -#: ../src/msw/dir.cpp:260 +#: ../src/msw/dir.cpp:241 #, c-format msgid "Cannot enumerate files in directory '%s'" msgstr "Não consegue enumerar os arquivos no diretório '%s'" -#: ../src/msw/dirdlg.cpp:328 +#: ../src/msw/dirdlg.cpp:359 msgid "Couldn't obtain folder name" msgstr "Não pôde obter o nome da pasta" -#: ../src/msw/dlmsw.cpp:164 +#: ../src/msw/dlmsw.cpp:163 #, c-format msgid "(error %d: %s)" msgstr "(erro %d: %s)" -#: ../src/msw/dragimag.cpp:144 ../src/msw/dragimag.cpp:179 -#: ../src/msw/imaglist.cpp:304 ../src/msw/imaglist.cpp:326 +#: ../src/msw/dragimag.cpp:143 ../src/msw/dragimag.cpp:178 +#: ../src/msw/imaglist.cpp:309 ../src/msw/imaglist.cpp:331 msgid "Couldn't add an image to the image list." msgstr "Não pôde adicionar uma imagem a lista de imagens." -#: ../src/msw/enhmeta.cpp:95 +#: ../src/msw/enhmeta.cpp:94 #, c-format msgid "Failed to load metafile from file \"%s\"." msgstr "Falhou em carregar o metafile do arquivo \"%s\"." -#: ../src/msw/fdrepdlg.cpp:408 +#: ../src/msw/fdrepdlg.cpp:412 #, c-format msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "Falhou em criar o diálogo achar/substituir padrão (código do erro %d)" -#: ../src/msw/filedlg.cpp:1481 +#: ../src/msw/filedlg.cpp:1233 +msgid "Access to the file system is not allowed from secure desktop." +msgstr "" +"O acesso ao sistema de arquivos não é permitido a partir da área de trabalho " +"segura." + +#: ../src/msw/filedlg.cpp:1234 +msgid "Security warning" +msgstr "Aviso de segurança" + +#: ../src/msw/filedlg.cpp:1525 #, c-format msgid "File dialog failed with error code %0lx." msgstr "O diálogo do arquivo falhou com o código de erro %0lx." -#: ../src/msw/font.cpp:1126 +#: ../src/msw/font.cpp:1120 #, c-format msgid "Font file \"%s\" couldn't be loaded" msgstr "O arquivo da fonte \"%s\" não pôde ser carregado" -#: ../src/msw/fontdlg.cpp:232 +#: ../src/msw/fontdlg.cpp:220 #, c-format msgid "Common dialog failed with error code %0lx." msgstr "O diálogo comum falhou com o código do erro %0lx." @@ -5947,25 +6038,25 @@ msgstr "" msgid "Unable to set up watch for '%s'" msgstr "Incapaz de configurar a observação para '%s'" -#: ../src/msw/fswatcher.cpp:475 +#: ../src/msw/fswatcher.cpp:477 #, c-format msgid "Can't monitor non-existent directory \"%s\" for changes." msgstr "Não consegue monitorar o diretório não-existente \"%s\" por mudanças." -#: ../src/msw/glcanvas.cpp:586 ../src/unix/glx11.cpp:504 +#: ../src/msw/glcanvas.cpp:577 ../src/unix/glx11.cpp:505 msgid "OpenGL 3.0 or later is not supported by the OpenGL driver." msgstr "O OpenGL 3.0 ou superior não é suportado pelo driver do OpenGL." -#: ../src/msw/glcanvas.cpp:610 ../src/osx/glcanvas_osx.cpp:403 -#: ../src/unix/glegl.cpp:312 ../src/unix/glx11.cpp:550 +#: ../src/msw/glcanvas.cpp:601 ../src/osx/glcanvas_osx.cpp:395 +#: ../src/unix/glegl.cpp:304 ../src/unix/glx11.cpp:551 msgid "Couldn't create OpenGL context" msgstr "Não pôde criar o contexto do OpenGL" -#: ../src/msw/glcanvas.cpp:1312 +#: ../src/msw/glcanvas.cpp:1294 msgid "Failed to initialize OpenGL" msgstr "Falhou em inicializar o OpenGL" -#: ../src/msw/graphicsd2d.cpp:605 +#: ../src/msw/graphicsd2d.cpp:607 msgid "Could not register custom DirectWrite font loader." msgstr "" "Não pôde registrar o carregador das fontes do DirectWrite personalizado." @@ -5982,12 +6073,12 @@ msgstr "" msgid "Failed to initialize MS HTML Help." msgstr "Falhou em inicializar a Ajuda do MS HTML." -#: ../src/msw/iniconf.cpp:459 +#: ../src/msw/iniconf.cpp:458 #, c-format msgid "Can't delete the INI file '%s'" msgstr "Não consegue apagar o arquivo INI '%s'" -#: ../src/msw/listctrl.cpp:1003 +#: ../src/msw/listctrl.cpp:995 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "" @@ -6013,87 +6104,87 @@ msgstr "&Organizar Ícones" msgid "Failed to create MDI parent frame." msgstr "Falhou em criar o frame pai do MDI." -#: ../src/msw/mimetype.cpp:235 +#: ../src/msw/mimetype.cpp:234 #, c-format msgid "Failed to create registry entry for '%s' files." msgstr "Falhou em criar a entrada no registro para os arquivos '%s'." -#: ../src/msw/ole/automtn.cpp:496 +#: ../src/msw/ole/automtn.cpp:495 #, c-format msgid "Failed to find CLSID of \"%s\"" msgstr "Falhou em achar a CLSID do \"%s\"" -#: ../src/msw/ole/automtn.cpp:513 +#: ../src/msw/ole/automtn.cpp:512 #, c-format msgid "Failed to create an instance of \"%s\"" msgstr "Falhou em criar uma instância do \"%s\"" -#: ../src/msw/ole/automtn.cpp:553 +#: ../src/msw/ole/automtn.cpp:552 #, c-format msgid "Cannot get an active instance of \"%s\"" msgstr "Não consegue obter uma instância ativa do \"%s\"" -#: ../src/msw/ole/automtn.cpp:565 +#: ../src/msw/ole/automtn.cpp:564 #, c-format msgid "Failed to get OLE automation interface for \"%s\"" msgstr "Falhou em obter a interface de automação do OLE pro \"%s\"" -#: ../src/msw/ole/automtn.cpp:622 +#: ../src/msw/ole/automtn.cpp:621 msgid "Unknown name or named argument." msgstr "Nome ou argumento nomeado desconhecido." -#: ../src/msw/ole/automtn.cpp:626 +#: ../src/msw/ole/automtn.cpp:625 msgid "Incorrect number of arguments." msgstr "Número incorreto de argumentos." -#: ../src/msw/ole/automtn.cpp:638 +#: ../src/msw/ole/automtn.cpp:637 msgid "Unknown exception" msgstr "Exceção desconhecida" -#: ../src/msw/ole/automtn.cpp:643 +#: ../src/msw/ole/automtn.cpp:642 msgid "Method or property not found." msgstr "Método ou propriedade não achada." -#: ../src/msw/ole/automtn.cpp:647 +#: ../src/msw/ole/automtn.cpp:646 msgid "Overflow while coercing argument values." msgstr "Sobrecarga enquanto força os valores do argumento." -#: ../src/msw/ole/automtn.cpp:651 +#: ../src/msw/ole/automtn.cpp:650 msgid "Object implementation does not support named arguments." msgstr "A implementação do objeto não suporta argumentos nomeados." -#: ../src/msw/ole/automtn.cpp:655 +#: ../src/msw/ole/automtn.cpp:654 msgid "The locale ID is unknown." msgstr "A ID do idioma é desconhecida." -#: ../src/msw/ole/automtn.cpp:659 +#: ../src/msw/ole/automtn.cpp:658 msgid "Missing a required parameter." msgstr "Está faltando um parâmetro requerido." -#: ../src/msw/ole/automtn.cpp:663 +#: ../src/msw/ole/automtn.cpp:662 #, c-format msgid "Argument %u not found." msgstr "Argumento %u não achado." -#: ../src/msw/ole/automtn.cpp:667 +#: ../src/msw/ole/automtn.cpp:666 #, c-format msgid "Type mismatch in argument %u." msgstr "Incompatibilidade do tipo no argumento %u." -#: ../src/msw/ole/automtn.cpp:671 +#: ../src/msw/ole/automtn.cpp:670 msgid "The system cannot find the file specified." msgstr "O sistema não consegue achar o arquivo especificado." -#: ../src/msw/ole/automtn.cpp:675 +#: ../src/msw/ole/automtn.cpp:674 msgid "Class not registered." msgstr "Classe não registrada." -#: ../src/msw/ole/automtn.cpp:679 +#: ../src/msw/ole/automtn.cpp:678 #, c-format msgid "Unknown error %08x" msgstr "Erro %08x desconhecido" -#: ../src/msw/ole/automtn.cpp:683 +#: ../src/msw/ole/automtn.cpp:682 #, c-format msgid "OLE Automation error in %s: %s" msgstr "Erro de automação do OLE em %s: %s" @@ -6112,77 +6203,77 @@ msgstr "O formato '%d' da área de transferência não existe." msgid "Skip" msgstr "Ignorar" -#: ../src/msw/registry.cpp:139 +#: ../src/msw/registry.cpp:141 #, c-format msgid "unknown (%lu)" msgstr "desconhecido (%lu)" -#: ../src/msw/registry.cpp:407 +#: ../src/msw/registry.cpp:409 #, c-format msgid "Can't get info about registry key '%s'" msgstr "Não consegue obter a info sobre a chave de registro '%s'" -#: ../src/msw/registry.cpp:443 +#: ../src/msw/registry.cpp:445 #, c-format msgid "Can't open registry key '%s'" msgstr "Não consegue abrir a chave do registro '%s'" -#: ../src/msw/registry.cpp:476 +#: ../src/msw/registry.cpp:478 #, c-format msgid "Can't create registry key '%s'" msgstr "Não consegue criar a chave de registro '%s'" -#: ../src/msw/registry.cpp:495 +#: ../src/msw/registry.cpp:497 #, c-format msgid "Can't close registry key '%s'" msgstr "Não consegue fechar a chave de registro '%s'" -#: ../src/msw/registry.cpp:510 +#: ../src/msw/registry.cpp:512 #, c-format msgid "Registry value '%s' already exists." msgstr "O valor do registro '%s' já existe." -#: ../src/msw/registry.cpp:518 +#: ../src/msw/registry.cpp:520 #, c-format msgid "Failed to rename registry value '%s' to '%s'." msgstr "Falhou em renomear o valor do registro de '%s' para '%s'." -#: ../src/msw/registry.cpp:573 +#: ../src/msw/registry.cpp:575 #, c-format msgid "Can't copy values of unsupported type %d." msgstr "Não consegue copiar os valores dos tipos não suportados %d." -#: ../src/msw/registry.cpp:584 +#: ../src/msw/registry.cpp:586 #, c-format msgid "Registry key '%s' does not exist, cannot rename it." msgstr "A chave de registro '%s' não existe; não pode renomeá-la." -#: ../src/msw/registry.cpp:615 +#: ../src/msw/registry.cpp:617 #, c-format msgid "Registry key '%s' already exists." msgstr "A chave de registro '%s' já existe." -#: ../src/msw/registry.cpp:623 +#: ../src/msw/registry.cpp:625 #, c-format msgid "Failed to rename the registry key '%s' to '%s'." msgstr "Falhou em renomear a chave do registro de '%s' para '%s'." -#: ../src/msw/registry.cpp:668 +#: ../src/msw/registry.cpp:670 #, c-format msgid "Failed to copy the registry subkey '%s' to '%s'." msgstr "Falhou em copiar a sub-chave do registro '%s' para '%s'." -#: ../src/msw/registry.cpp:681 +#: ../src/msw/registry.cpp:683 #, c-format msgid "Failed to copy registry value '%s'" msgstr "Falhou em copiar o valor do registro '%s'" -#: ../src/msw/registry.cpp:690 +#: ../src/msw/registry.cpp:692 #, c-format msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Falhou em copiar os conteúdos da chave de registro '%s' para '%s'." -#: ../src/msw/registry.cpp:716 +#: ../src/msw/registry.cpp:718 #, c-format msgid "" "Registry key '%s' is needed for normal system operation,\n" @@ -6193,59 +6284,59 @@ msgstr "" "apagando-a deixará seu sistema num estado inutilizável:\n" "operação abortada." -#: ../src/msw/registry.cpp:752 +#: ../src/msw/registry.cpp:754 #, c-format msgid "Can't delete key '%s'" msgstr "Não consegue apagar a chave '%s'" -#: ../src/msw/registry.cpp:780 +#: ../src/msw/registry.cpp:782 #, c-format msgid "Can't delete value '%s' from key '%s'" msgstr "Não consegue apagar o valor '%s' da chave '%s'" -#: ../src/msw/registry.cpp:853 ../src/msw/registry.cpp:885 -#: ../src/msw/registry.cpp:927 ../src/msw/registry.cpp:998 +#: ../src/msw/registry.cpp:855 ../src/msw/registry.cpp:887 +#: ../src/msw/registry.cpp:929 ../src/msw/registry.cpp:1000 #, c-format msgid "Can't read value of key '%s'" msgstr "Não consegue ler o valor da chave '%s'" -#: ../src/msw/registry.cpp:871 ../src/msw/registry.cpp:913 -#: ../src/msw/registry.cpp:961 ../src/msw/registry.cpp:1104 +#: ../src/msw/registry.cpp:873 ../src/msw/registry.cpp:915 +#: ../src/msw/registry.cpp:963 ../src/msw/registry.cpp:1106 #, c-format msgid "Can't set value of '%s'" msgstr "Não consegue definir o valor de '%s'" -#: ../src/msw/registry.cpp:892 ../src/msw/registry.cpp:941 +#: ../src/msw/registry.cpp:894 ../src/msw/registry.cpp:943 #, c-format msgid "Registry value \"%s\" is not numeric (but of type %s)" msgstr "O valor do registro \"%s\" não é numérico (mas do tipo %s)" -#: ../src/msw/registry.cpp:977 +#: ../src/msw/registry.cpp:979 #, c-format msgid "Registry value \"%s\" is not binary (but of type %s)" msgstr "O valor do registro \"%s\" não é binário (mas do tipo %s)" -#: ../src/msw/registry.cpp:1026 +#: ../src/msw/registry.cpp:1028 #, c-format msgid "Registry value \"%s\" is not text (but of type %s)" msgstr "O valor do registro \"%s\" não é de texto (mas do tipo %s)" -#: ../src/msw/registry.cpp:1087 +#: ../src/msw/registry.cpp:1089 #, c-format msgid "Can't read value of '%s'" msgstr "Não consegue ler o valor de '%s'" -#: ../src/msw/registry.cpp:1155 +#: ../src/msw/registry.cpp:1157 #, c-format msgid "Can't enumerate values of key '%s'" msgstr "Não consegue enumerar os valores da chave '%s'" -#: ../src/msw/registry.cpp:1194 +#: ../src/msw/registry.cpp:1196 #, c-format msgid "Can't enumerate subkeys of key '%s'" msgstr "Não consegue enumerar as sub-chaves da chave '%s'" -#: ../src/msw/registry.cpp:1260 +#: ../src/msw/registry.cpp:1262 #, c-format msgid "" "Exporting registry key: file \"%s\" already exists and won't be overwritten." @@ -6253,17 +6344,17 @@ msgstr "" "Exportando a chave de registro: o arquivo \"%s\" já existe e não será " "sobrescrito." -#: ../src/msw/registry.cpp:1409 +#: ../src/msw/registry.cpp:1411 #, c-format msgid "Can't export value of unsupported type %d." msgstr "Não consegue exportar o valor do tipo não suportado %d." -#: ../src/msw/registry.cpp:1425 +#: ../src/msw/registry.cpp:1427 #, c-format msgid "Ignoring value \"%s\" of the key \"%s\"." msgstr "Ignorando o valor \"%s\" da chave \"%s\"." -#: ../src/msw/textctrl.cpp:564 +#: ../src/msw/textctrl.cpp:585 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -6271,41 +6362,41 @@ msgstr "" "Impossível criar um controle de edição rico, usando o controle de texto " "simples ao invés disso. Por favor reinstale o riched32.dll" -#: ../src/msw/thread.cpp:532 ../src/unix/threadpsx.cpp:856 +#: ../src/msw/thread.cpp:525 ../src/unix/threadpsx.cpp:848 msgid "Cannot start thread: error writing TLS." msgstr "Não consegue iniciar o thread: erro ao gravar o TLS." -#: ../src/msw/thread.cpp:627 +#: ../src/msw/thread.cpp:616 msgid "Can't set thread priority" msgstr "Não consegue definir a prioridade do thread" -#: ../src/msw/thread.cpp:663 +#: ../src/msw/thread.cpp:652 msgid "Can't create thread" msgstr "Não consegue criar o thread" -#: ../src/msw/thread.cpp:682 +#: ../src/msw/thread.cpp:671 msgid "Couldn't terminate thread" msgstr "Não pôde encerrar o thread" -#: ../src/msw/thread.cpp:792 +#: ../src/msw/thread.cpp:802 msgid "Cannot wait for thread termination" msgstr "Não consegue esperar pelo término do thread" -#: ../src/msw/thread.cpp:870 +#: ../src/msw/thread.cpp:876 #, c-format msgid "Cannot suspend thread %lx" msgstr "Não consegue suspender o thread %lx" -#: ../src/msw/thread.cpp:900 +#: ../src/msw/thread.cpp:906 #, c-format msgid "Cannot resume thread %lx" msgstr "Não consegue resumir o thread %lx" -#: ../src/msw/thread.cpp:929 +#: ../src/msw/thread.cpp:935 msgid "Couldn't get the current thread pointer" msgstr "Não pôde obter o ponteiro atual do thread" -#: ../src/msw/thread.cpp:1332 +#: ../src/msw/thread.cpp:1336 msgid "" "Thread module initialization failed: impossible to allocate index in thread " "local storage" @@ -6313,7 +6404,7 @@ msgstr "" "A inicialização do módulo dos threads falhou: impossível distribuir o índice " "no armazém local dos threads" -#: ../src/msw/thread.cpp:1344 +#: ../src/msw/thread.cpp:1348 msgid "" "Thread module initialization failed: cannot store value in thread local " "storage" @@ -6321,206 +6412,120 @@ msgstr "" "O módulo de inicialização do thread falhou: não pôde armazenar o valor no " "armazém local do thread" -#: ../src/msw/timer.cpp:131 +#: ../src/msw/timer.cpp:133 msgid "Couldn't create a timer" msgstr "Não pôde criar um cronômetro" -#: ../src/msw/utils.cpp:360 +#: ../src/msw/utils.cpp:372 msgid "can't find user's HOME, using current directory." msgstr "não pôde achar o HOME do usuário, usando o diretório atual." -#: ../src/msw/utils.cpp:661 +#: ../src/msw/utils.cpp:662 #, c-format msgid "Failed to kill process %d" msgstr "Falhou em matar o processo %d" -#: ../src/msw/utils.cpp:985 +#: ../src/msw/utils.cpp:986 #, c-format msgid "Failed to load resource \"%s\"." msgstr "Falhou em carregar o recurso \"%s\"." -#: ../src/msw/utils.cpp:992 +#: ../src/msw/utils.cpp:993 #, c-format msgid "Failed to lock resource \"%s\"." msgstr "Falhou em trancar o recurso \"%s\"." -#: ../src/msw/utils.cpp:1180 +#. TRANSLATORS: MS Windows build number +#: ../src/msw/utils.cpp:1209 #, c-format msgid "build %lu" msgstr "build %lu" -#: ../src/msw/utils.cpp:1188 +#: ../src/msw/utils.cpp:1218 msgid ", 64-bit edition" msgstr ", edição de 64 bits" -#: ../src/msw/utilsexc.cpp:225 +#: ../src/msw/utilsexc.cpp:224 msgid "Failed to create an anonymous pipe" msgstr "Falhou em criar um pipe anônimo" -#: ../src/msw/utilsexc.cpp:698 +#: ../src/msw/utilsexc.cpp:697 msgid "Failed to redirect the child process IO" msgstr "Falhou em redirecionar a E/S do processo filho" -#: ../src/msw/utilsexc.cpp:871 +#: ../src/msw/utilsexc.cpp:870 #, c-format msgid "Execution of command '%s' failed" msgstr "A execução do comando '%s' falhou" -#: ../src/msw/volume.cpp:333 +#: ../src/msw/volume.cpp:337 msgid "Failed to load mpr.dll." msgstr "Falhou em carregar o mpr.dll." -#: ../src/msw/volume.cpp:506 +#: ../src/msw/volume.cpp:507 #, c-format msgid "Cannot read typename from '%s'!" msgstr "Não consegue ler o nome do tipo de '%s'!" -#: ../src/msw/volume.cpp:618 +#: ../src/msw/volume.cpp:616 #, c-format msgid "Cannot load icon from '%s'." msgstr "Não consegue carregar o ícone do '%s'." -#: ../src/msw/webview_ie.cpp:1000 +#: ../src/msw/webview_edge.cpp:285 +msgid "This program was compiled without support for setting Edge proxy." +msgstr "" +"Este programa foi compilado sem suporte pra configuração de proxy do Edge." + +#: ../src/msw/webview_ie.cpp:1012 msgid "Failed to find web view emulation level in the registry" msgstr "Falhou em achar o nível da emulação da visualização da web no registro" -#: ../src/msw/webview_ie.cpp:1009 +#: ../src/msw/webview_ie.cpp:1021 msgid "Failed to set web view to modern emulation level" msgstr "Falhou em definir a visualização da web como nível da emulação moderna" -#: ../src/msw/webview_ie.cpp:1017 +#: ../src/msw/webview_ie.cpp:1029 msgid "Failed to reset web view to standard emulation level" msgstr "Falhou em resetar a visualização da web pro nível de emulação padrão" -#: ../src/msw/webview_ie.cpp:1039 +#: ../src/msw/webview_ie.cpp:1051 msgid "Can't run JavaScript script without a valid HTML document" msgstr "Não pode executar o script do JavaScript sem um documento HTML válido" -#: ../src/msw/webview_ie.cpp:1046 +#: ../src/msw/webview_ie.cpp:1058 msgid "Can't get the JavaScript object" msgstr "Não pôde obter o objeto do JavaScript" -#: ../src/msw/webview_ie.cpp:1060 +#: ../src/msw/webview_ie.cpp:1072 msgid "failed to evaluate" msgstr "falhou em avaliar" -#: ../src/osx/carbon/fontdlg.cpp:217 -msgid "Background colour" -msgstr "Côr do 2º plano" - -#: ../src/osx/carbon/fontdlg.cpp:325 -msgid "Font:" -msgstr "Fonte:" - -#: ../src/osx/carbon/fontdlg.cpp:335 -msgid "Size:" -msgstr "Tamanho:" - -#: ../src/osx/carbon/fontdlg.cpp:339 ../src/osx/carbon/fontdlg.cpp:341 -msgid "The font size in points." -msgstr "O tamanho da fonte em pontos." - -#: ../src/osx/carbon/fontdlg.cpp:344 -msgid "Style:" -msgstr "Estilo:" - -#: ../src/osx/carbon/fontdlg.cpp:352 ../src/osx/carbon/fontdlg.cpp:354 -msgid "Check to make the font bold." -msgstr "Marque pra fazer a fonte ficar em negrito." - -#: ../src/osx/carbon/fontdlg.cpp:359 ../src/osx/carbon/fontdlg.cpp:361 -msgid "Check to make the font italic." -msgstr "Marque pra fazer a fonte ficar em itálico." - -#. TRANSLATORS: Label of underlined font -#: ../src/osx/carbon/fontdlg.cpp:366 ../src/propgrid/advprops.cpp:599 -#: ../src/richtext/richtextfontpage.cpp:359 -msgid "Underlined" -msgstr "&Sublinhado" - -#: ../src/osx/carbon/fontdlg.cpp:368 ../src/osx/carbon/fontdlg.cpp:370 -msgid "Check to make the font underlined." -msgstr "Marque pra fazer a fonte ficar sublinhada." - -#: ../src/osx/carbon/fontdlg.cpp:376 -msgid "Colour:" -msgstr "Côr:" - -#: ../src/osx/carbon/fontdlg.cpp:380 ../src/osx/carbon/fontdlg.cpp:382 -msgid "Click to change the font colour." -msgstr "Clique pra mudar a côr da fonte." - -#: ../src/osx/carbon/fontdlg.cpp:390 ../src/osx/carbon/fontdlg.cpp:392 -msgid "Shows a preview of the font." -msgstr "Mostra uma pré-visualização da fonte." - -#: ../src/osx/carbon/fontdlg.cpp:399 ../src/osx/carbon/fontdlg.cpp:401 -msgid "Click to cancel changes to the font." -msgstr "Clique pra cancelar as mudanças na fonte." - -#: ../src/osx/carbon/fontdlg.cpp:406 ../src/osx/carbon/fontdlg.cpp:408 -msgid "Click to confirm changes to the font." -msgstr "Clique pra confirmar as mudanças na fonte." - -#: ../src/osx/carbon/fontdlg.cpp:416 -msgid "" -msgstr "" - -#: ../src/osx/carbon/fontdlg.cpp:417 ../src/osx/carbon/fontdlg.cpp:622 -#: ../src/osx/carbon/fontdlg.cpp:642 -msgid "" -msgstr "" - -#: ../src/osx/carbon/fontdlg.cpp:418 ../src/osx/carbon/fontdlg.cpp:624 -#: ../src/osx/carbon/fontdlg.cpp:644 -msgid "" -msgstr "" - -#: ../src/osx/carbon/fontdlg.cpp:419 ../src/osx/carbon/fontdlg.cpp:626 -#: ../src/osx/carbon/fontdlg.cpp:646 -msgid "" -msgstr "" - -#: ../src/osx/carbon/fontdlg.cpp:420 ../src/osx/carbon/fontdlg.cpp:628 -#: ../src/osx/carbon/fontdlg.cpp:648 -msgid "" -msgstr "" - -#: ../src/osx/carbon/fontdlg.cpp:421 ../src/osx/carbon/fontdlg.cpp:633 -#: ../src/osx/carbon/fontdlg.cpp:652 -msgid "" -msgstr "" - -#: ../src/osx/carbon/fontdlg.cpp:422 ../src/osx/carbon/fontdlg.cpp:630 -#: ../src/osx/carbon/fontdlg.cpp:650 -msgid "" -msgstr "" - -#: ../src/osx/cocoa/filedlg.mm:337 +#: ../src/osx/cocoa/filedlg.mm:412 msgid "File type:" msgstr "Tipo de Arquivo:" -#: ../src/osx/cocoa/menu.mm:243 +#: ../src/osx/cocoa/menu.mm:242 msgctxt "macOS menu name" msgid "Window" msgstr "Janela" -#: ../src/osx/cocoa/menu.mm:260 +#: ../src/osx/cocoa/menu.mm:259 msgctxt "macOS menu name" msgid "Help" msgstr "Ajuda" -#: ../src/osx/cocoa/menu.mm:299 +#: ../src/osx/cocoa/menu.mm:298 msgctxt "macOS menu item" msgid "Minimize" msgstr "Minimizar" -#: ../src/osx/cocoa/menu.mm:304 +#: ../src/osx/cocoa/menu.mm:303 msgctxt "macOS menu item" msgid "Zoom" msgstr "Zoom" -#: ../src/osx/cocoa/menu.mm:310 +#: ../src/osx/cocoa/menu.mm:309 msgctxt "macOS menu item" msgid "Bring All to Front" msgstr "Trazer Tudo pra Frente" @@ -6530,12 +6535,12 @@ msgstr "Trazer Tudo pra Frente" msgid "Failed to load sound from \"%s\" (error %d)." msgstr "Falhou em carregar o som do \"%s\" (erro %d)." -#: ../src/osx/fontutil.cpp:81 +#: ../src/osx/fontutil.cpp:80 #, c-format msgid "Font file \"%s\" doesn't exist." msgstr "O arquivo da fonte \"%s\" não existe." -#: ../src/osx/fontutil.cpp:89 +#: ../src/osx/fontutil.cpp:88 #, c-format msgid "" "Font file \"%s\" cannot be used as it is not inside the font directory " @@ -6555,7 +6560,7 @@ msgctxt "macOS menu item" msgid "About..." msgstr "Sobre..." -#: ../src/osx/menu_osx.cpp:507 +#: ../src/osx/menu_osx.cpp:508 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferências..." @@ -6576,439 +6581,443 @@ msgctxt "macOS menu item" msgid "Hide Application" msgstr "Esconder Aplicativo" -#: ../src/osx/menu_osx.cpp:525 +#: ../src/osx/menu_osx.cpp:526 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Esconder os Outros" -#: ../src/osx/menu_osx.cpp:527 +#: ../src/osx/menu_osx.cpp:528 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostrar Tudo" -#: ../src/osx/menu_osx.cpp:533 +#: ../src/osx/menu_osx.cpp:534 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Sair %s" -#: ../src/osx/menu_osx.cpp:536 +#: ../src/osx/menu_osx.cpp:537 msgctxt "macOS menu item" msgid "Quit Application" msgstr "Sair do Aplicativo" -#: ../src/osx/webview_webkit.mm:316 +#: ../src/osx/webview_webkit.mm:448 msgid "Printing is not supported by the system web control" msgstr "A impressão não é suportada pelo controle da rede do sistema" -#: ../src/osx/webview_webkit.mm:325 +#: ../src/osx/webview_webkit.mm:457 msgid "Print operation could not be initialized" msgstr "A operação de impressão não pôde ser inicializada" #. TRANSLATORS: Label of font point size -#: ../src/propgrid/advprops.cpp:571 +#: ../src/propgrid/advprops.cpp:605 msgid "Point Size" msgstr "Tamanho do Ponto" #. TRANSLATORS: Label of font face name -#: ../src/propgrid/advprops.cpp:581 +#: ../src/propgrid/advprops.cpp:615 msgid "Face Name" msgstr "Nome da Face" #. TRANSLATORS: Label of font style -#: ../src/propgrid/advprops.cpp:589 ../src/richtext/richtextformatdlg.cpp:332 +#: ../src/propgrid/advprops.cpp:623 ../src/richtext/richtextformatdlg.cpp:331 msgid "Style" msgstr "Estilo" #. TRANSLATORS: Label of font weight -#: ../src/propgrid/advprops.cpp:594 +#: ../src/propgrid/advprops.cpp:628 msgid "Weight" msgstr "Peso" +#. TRANSLATORS: Label of underlined font +#: ../src/propgrid/advprops.cpp:633 ../src/richtext/richtextfontpage.cpp:358 +msgid "Underlined" +msgstr "&Sublinhado" + #. TRANSLATORS: Label of font family -#: ../src/propgrid/advprops.cpp:603 +#: ../src/propgrid/advprops.cpp:637 msgid "Family" msgstr "Família" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:770 +#: ../src/propgrid/advprops.cpp:801 msgid "AppWorkspace" msgstr "AppWorkspace" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:771 +#: ../src/propgrid/advprops.cpp:802 msgid "ActiveBorder" msgstr "BordaAtiva" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:772 +#: ../src/propgrid/advprops.cpp:803 msgid "ActiveCaption" msgstr "CaptionAtivo" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:773 +#: ../src/propgrid/advprops.cpp:804 msgid "ButtonFace" msgstr "FaceDoBotão" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:774 +#: ../src/propgrid/advprops.cpp:805 msgid "ButtonHighlight" msgstr "DestaqueDoBotão" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:775 +#: ../src/propgrid/advprops.cpp:806 msgid "ButtonShadow" msgstr "SombraDoBotão" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:776 +#: ../src/propgrid/advprops.cpp:807 msgid "ButtonText" msgstr "TextoDoBotão" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:777 +#: ../src/propgrid/advprops.cpp:808 msgid "CaptionText" msgstr "TextoDoCaption" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:778 +#: ../src/propgrid/advprops.cpp:809 msgid "ControlDark" msgstr "ControlEscuro" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:779 +#: ../src/propgrid/advprops.cpp:810 msgid "ControlLight" msgstr "ControlClaro" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:781 +#: ../src/propgrid/advprops.cpp:812 msgid "GrayText" msgstr "TextoCinza" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:782 +#: ../src/propgrid/advprops.cpp:813 msgid "Highlight" msgstr "Destacar" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:783 +#: ../src/propgrid/advprops.cpp:814 msgid "HighlightText" msgstr "DestacarTexto" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:784 +#: ../src/propgrid/advprops.cpp:815 msgid "InactiveBorder" msgstr "BordaInativa" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:785 +#: ../src/propgrid/advprops.cpp:816 msgid "InactiveCaption" msgstr "CaptionInativo" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:786 +#: ../src/propgrid/advprops.cpp:817 msgid "InactiveCaptionText" msgstr "TextoDoCaptionInativo" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:787 +#: ../src/propgrid/advprops.cpp:818 msgid "Menu" msgstr "Menu" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:788 +#: ../src/propgrid/advprops.cpp:819 msgid "Scrollbar" msgstr "Barra de Rolagem" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:789 +#: ../src/propgrid/advprops.cpp:820 msgid "Tooltip" msgstr "Dica da ferramenta" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:790 +#: ../src/propgrid/advprops.cpp:821 msgid "TooltipText" msgstr "TextoDaDicaDaFerramenta" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:791 +#: ../src/propgrid/advprops.cpp:822 msgid "Window" msgstr "Janela" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:792 +#: ../src/propgrid/advprops.cpp:823 msgid "WindowFrame" msgstr "FrameDaJanela" #. TRANSLATORS: Keyword of system colour -#: ../src/propgrid/advprops.cpp:793 +#: ../src/propgrid/advprops.cpp:824 msgid "WindowText" msgstr "TextoDaJanela" #. TRANSLATORS: Custom colour choice entry -#: ../src/propgrid/advprops.cpp:794 ../src/propgrid/advprops.cpp:1468 -#: ../src/propgrid/advprops.cpp:1511 +#: ../src/propgrid/advprops.cpp:825 ../src/propgrid/advprops.cpp:1532 +#: ../src/propgrid/advprops.cpp:1576 msgid "Custom" msgstr "Personalizado" -#: ../src/propgrid/advprops.cpp:1493 +#: ../src/propgrid/advprops.cpp:1558 msgid "Black" msgstr "Preto" -#: ../src/propgrid/advprops.cpp:1494 +#: ../src/propgrid/advprops.cpp:1559 msgid "Maroon" msgstr "Castanho" -#: ../src/propgrid/advprops.cpp:1495 +#: ../src/propgrid/advprops.cpp:1560 msgid "Navy" msgstr "Marinho" -#: ../src/propgrid/advprops.cpp:1496 +#: ../src/propgrid/advprops.cpp:1561 msgid "Purple" msgstr "Púrpura" -#: ../src/propgrid/advprops.cpp:1497 +#: ../src/propgrid/advprops.cpp:1562 msgid "Teal" msgstr "Azul petróleo" -#: ../src/propgrid/advprops.cpp:1498 +#: ../src/propgrid/advprops.cpp:1563 msgid "Gray" msgstr "Cinza" -#: ../src/propgrid/advprops.cpp:1499 +#: ../src/propgrid/advprops.cpp:1564 msgid "Green" msgstr "Verde" -#: ../src/propgrid/advprops.cpp:1500 +#: ../src/propgrid/advprops.cpp:1565 msgid "Olive" msgstr "Oliva" -#: ../src/propgrid/advprops.cpp:1501 +#: ../src/propgrid/advprops.cpp:1566 msgid "Brown" msgstr "Marrom" -#: ../src/propgrid/advprops.cpp:1502 +#: ../src/propgrid/advprops.cpp:1567 msgid "Blue" msgstr "Azul" -#: ../src/propgrid/advprops.cpp:1503 +#: ../src/propgrid/advprops.cpp:1568 msgid "Fuchsia" msgstr "Fúcsia" -#: ../src/propgrid/advprops.cpp:1504 +#: ../src/propgrid/advprops.cpp:1569 msgid "Red" msgstr "Vermelho" -#: ../src/propgrid/advprops.cpp:1505 +#: ../src/propgrid/advprops.cpp:1570 msgid "Orange" msgstr "Laranja" -#: ../src/propgrid/advprops.cpp:1506 +#: ../src/propgrid/advprops.cpp:1571 msgid "Silver" msgstr "Prata" -#: ../src/propgrid/advprops.cpp:1507 +#: ../src/propgrid/advprops.cpp:1572 msgid "Lime" msgstr "Lima" -#: ../src/propgrid/advprops.cpp:1508 +#: ../src/propgrid/advprops.cpp:1573 msgid "Aqua" msgstr "Aqua" -#: ../src/propgrid/advprops.cpp:1509 +#: ../src/propgrid/advprops.cpp:1574 msgid "Yellow" msgstr "Amarelo" -#: ../src/propgrid/advprops.cpp:1510 +#: ../src/propgrid/advprops.cpp:1575 msgid "White" msgstr "Branco" -#: ../src/propgrid/advprops.cpp:1642 +#: ../src/propgrid/advprops.cpp:1718 msgctxt "system cursor name" msgid "Default" msgstr "Padrão" -#: ../src/propgrid/advprops.cpp:1643 +#: ../src/propgrid/advprops.cpp:1719 msgctxt "system cursor name" msgid "Arrow" msgstr "Seta" -#: ../src/propgrid/advprops.cpp:1644 +#: ../src/propgrid/advprops.cpp:1720 msgctxt "system cursor name" msgid "Right Arrow" msgstr "Seta Direita" -#: ../src/propgrid/advprops.cpp:1645 +#: ../src/propgrid/advprops.cpp:1721 msgctxt "system cursor name" msgid "Blank" msgstr "Em branco" -#: ../src/propgrid/advprops.cpp:1646 +#: ../src/propgrid/advprops.cpp:1722 msgctxt "system cursor name" msgid "Bullseye" msgstr "Alvo" -#: ../src/propgrid/advprops.cpp:1647 +#: ../src/propgrid/advprops.cpp:1723 msgctxt "system cursor name" msgid "Character" msgstr "Caractere" -#: ../src/propgrid/advprops.cpp:1648 +#: ../src/propgrid/advprops.cpp:1724 msgctxt "system cursor name" msgid "Cross" msgstr "Cruz" -#: ../src/propgrid/advprops.cpp:1649 +#: ../src/propgrid/advprops.cpp:1725 msgctxt "system cursor name" msgid "Hand" msgstr "Mão" -#: ../src/propgrid/advprops.cpp:1650 -#| msgid "I-Beam" +#: ../src/propgrid/advprops.cpp:1726 msgctxt "system cursor name" msgid "I-Beam" msgstr "I-Beam" -#: ../src/propgrid/advprops.cpp:1651 +#: ../src/propgrid/advprops.cpp:1727 msgctxt "system cursor name" msgid "Left Button" msgstr "Botão Esquerdo" -#: ../src/propgrid/advprops.cpp:1652 +#: ../src/propgrid/advprops.cpp:1728 msgctxt "system cursor name" msgid "Magnifier" msgstr "Lupa" -#: ../src/propgrid/advprops.cpp:1653 +#: ../src/propgrid/advprops.cpp:1729 msgctxt "system cursor name" msgid "Middle Button" msgstr "Botão do Meio" -#: ../src/propgrid/advprops.cpp:1654 +#: ../src/propgrid/advprops.cpp:1730 msgctxt "system cursor name" msgid "No Entry" msgstr "Nenhuma Entrada" -#: ../src/propgrid/advprops.cpp:1655 +#: ../src/propgrid/advprops.cpp:1731 msgctxt "system cursor name" msgid "Paint Brush" msgstr "Pincel do Paint" -#: ../src/propgrid/advprops.cpp:1656 +#: ../src/propgrid/advprops.cpp:1732 msgctxt "system cursor name" msgid "Pencil" msgstr "Lápis" -#: ../src/propgrid/advprops.cpp:1657 +#: ../src/propgrid/advprops.cpp:1733 msgctxt "system cursor name" msgid "Point Left" msgstr "Ponto a Esquerda" -#: ../src/propgrid/advprops.cpp:1658 +#: ../src/propgrid/advprops.cpp:1734 msgctxt "system cursor name" msgid "Point Right" msgstr "Ponto a Direita" -#: ../src/propgrid/advprops.cpp:1659 +#: ../src/propgrid/advprops.cpp:1735 msgctxt "system cursor name" msgid "Question Arrow" msgstr "Seta da Pergunta" -#: ../src/propgrid/advprops.cpp:1660 +#: ../src/propgrid/advprops.cpp:1736 msgctxt "system cursor name" msgid "Right Button" msgstr "Botão Direito" -#: ../src/propgrid/advprops.cpp:1661 +#: ../src/propgrid/advprops.cpp:1737 msgctxt "system cursor name" msgid "Sizing NE-SW" msgstr "Dimensionamento NE-SO" -#: ../src/propgrid/advprops.cpp:1662 +#: ../src/propgrid/advprops.cpp:1738 msgctxt "system cursor name" msgid "Sizing N-S" msgstr "Dimensionamento N-S" -#: ../src/propgrid/advprops.cpp:1663 +#: ../src/propgrid/advprops.cpp:1739 msgctxt "system cursor name" msgid "Sizing NW-SE" msgstr "Dimensionamento NO-SE" -#: ../src/propgrid/advprops.cpp:1664 +#: ../src/propgrid/advprops.cpp:1740 msgctxt "system cursor name" msgid "Sizing W-E" msgstr "Dimensionamento O-L" -#: ../src/propgrid/advprops.cpp:1665 +#: ../src/propgrid/advprops.cpp:1741 msgctxt "system cursor name" msgid "Sizing" msgstr "Dimensionamento" -#: ../src/propgrid/advprops.cpp:1666 +#: ../src/propgrid/advprops.cpp:1742 msgctxt "system cursor name" msgid "Spraycan" msgstr "Lata de spray" -#: ../src/propgrid/advprops.cpp:1667 +#: ../src/propgrid/advprops.cpp:1743 msgctxt "system cursor name" msgid "Wait" msgstr "Aguardar" -#: ../src/propgrid/advprops.cpp:1668 +#: ../src/propgrid/advprops.cpp:1744 msgctxt "system cursor name" msgid "Watch" msgstr "Observar" -#: ../src/propgrid/advprops.cpp:1669 +#: ../src/propgrid/advprops.cpp:1745 msgctxt "system cursor name" msgid "Wait Arrow" msgstr "Seta de Espera" -#: ../src/propgrid/advprops.cpp:2024 +#: ../src/propgrid/advprops.cpp:2109 msgid "Make a selection:" msgstr "Fazer uma seleção:" -#: ../src/propgrid/manager.cpp:401 +#: ../src/propgrid/manager.cpp:394 msgid "Property" msgstr "Propriedade" -#: ../src/propgrid/manager.cpp:402 +#: ../src/propgrid/manager.cpp:395 msgid "Value" msgstr "Valor" -#: ../src/propgrid/manager.cpp:1691 +#: ../src/propgrid/manager.cpp:1683 msgid "Categorized Mode" msgstr "Modo Categorizado" -#: ../src/propgrid/manager.cpp:1717 +#: ../src/propgrid/manager.cpp:1709 msgid "Alphabetic Mode" msgstr "Modo Alfabético" #. TRANSLATORS: Name of Boolean false value -#: ../src/propgrid/propgrid.cpp:208 +#: ../src/propgrid/propgrid.cpp:230 msgid "False" msgstr "Falso" #. TRANSLATORS: Name of Boolean true value -#: ../src/propgrid/propgrid.cpp:210 +#: ../src/propgrid/propgrid.cpp:232 msgid "True" msgstr "Verdadeiro" #. TRANSLATORS: Text displayed for unspecified value -#: ../src/propgrid/propgrid.cpp:396 +#: ../src/propgrid/propgrid.cpp:428 msgid "Unspecified" msgstr "Não especificado" #. TRANSLATORS: Caption of message box displaying any property error -#: ../src/propgrid/propgrid.cpp:3147 ../src/propgrid/propgrid.cpp:3284 +#: ../src/propgrid/propgrid.cpp:3145 ../src/propgrid/propgrid.cpp:3282 msgid "Property Error" msgstr "Erro da Propriedade" -#: ../src/propgrid/propgrid.cpp:3261 +#: ../src/propgrid/propgrid.cpp:3259 msgid "You have entered invalid value. Press ESC to cancel editing." msgstr "Você inseriu um valor inválido. Pressione ESC pra cancelar a edição." -#: ../src/propgrid/propgrid.cpp:6577 +#: ../src/propgrid/propgrid.cpp:6608 #, c-format msgid "Error in resource: %s" msgstr "Erro no recurso: %s" @@ -7022,177 +7031,211 @@ msgstr "" "A operação do tipo \"%s\" falhou: A propriedade rotulada \"%s\" é do tipo " "\"%s\", NÃO \"%s\"." -#: ../src/propgrid/props.cpp:156 +#: ../src/propgrid/props.cpp:159 #, c-format msgid "Unknown base %d. Base 10 will be used." msgstr "Base desconhecida %d. A base 10 será usada." -#: ../src/propgrid/props.cpp:306 +#: ../src/propgrid/props.cpp:324 #, c-format msgid "Value must be %s or higher." msgstr "O valor deve ser %s ou maior." -#: ../src/propgrid/props.cpp:311 ../src/propgrid/props.cpp:338 +#: ../src/propgrid/props.cpp:329 ../src/propgrid/props.cpp:356 #, c-format msgid "Value must be between %s and %s." msgstr "O valor deve estar entre %s e %s." -#: ../src/propgrid/props.cpp:333 +#: ../src/propgrid/props.cpp:351 #, c-format msgid "Value must be %s or less." msgstr "O valor deve ser %s ou menor." -#: ../src/propgrid/props.cpp:1093 +#: ../src/propgrid/props.cpp:1058 #, c-format msgid "Not %s" msgstr "Não %s" -#: ../src/propgrid/props.cpp:1866 +#: ../src/propgrid/props.cpp:1770 msgid "Choose a directory:" msgstr "Escolha um diretório:" -#: ../src/propgrid/props.cpp:2151 +#: ../src/propgrid/props.cpp:2055 msgid "Choose a file" msgstr "Escolha um arquivo" -#: ../src/richtext/richtextbackgroundpage.cpp:148 -#: ../src/richtext/richtextformatdlg.cpp:377 +#: ../src/richtext/richtextbackgroundpage.cpp:147 +#: ../src/richtext/richtextformatdlg.cpp:376 msgid "Background" msgstr "2º plano" -#: ../src/richtext/richtextbackgroundpage.cpp:160 +#: ../src/richtext/richtextbackgroundpage.cpp:159 msgid "Background &colour:" msgstr "Côr do &2º plano:" -#: ../src/richtext/richtextbackgroundpage.cpp:162 -#: ../src/richtext/richtextbackgroundpage.cpp:164 +#: ../src/richtext/richtextbackgroundpage.cpp:161 +#: ../src/richtext/richtextbackgroundpage.cpp:163 msgid "Enables a background colour." msgstr "Ativar uma côr de fundo." -#: ../src/richtext/richtextbackgroundpage.cpp:168 -#: ../src/richtext/richtextbackgroundpage.cpp:170 +#: ../src/richtext/richtextbackgroundpage.cpp:167 +#: ../src/richtext/richtextbackgroundpage.cpp:169 msgid "The background colour." msgstr "A côr de fundo." -#: ../src/richtext/richtextbackgroundpage.cpp:179 +#: ../src/richtext/richtextbackgroundpage.cpp:178 msgid "Shadow" msgstr "Sombra" -#: ../src/richtext/richtextbackgroundpage.cpp:194 +#: ../src/richtext/richtextbackgroundpage.cpp:193 msgid "Use &shadow" msgstr "Usar &sombra" -#: ../src/richtext/richtextbackgroundpage.cpp:196 -#: ../src/richtext/richtextbackgroundpage.cpp:198 +#: ../src/richtext/richtextbackgroundpage.cpp:195 +#: ../src/richtext/richtextbackgroundpage.cpp:197 msgid "Enables a shadow." msgstr "Ativa uma sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:212 +#: ../src/richtext/richtextbackgroundpage.cpp:211 msgid "&Horizontal offset:" msgstr "&Offset horizontal:" -#: ../src/richtext/richtextbackgroundpage.cpp:219 -#: ../src/richtext/richtextbackgroundpage.cpp:221 +#: ../src/richtext/richtextbackgroundpage.cpp:218 +#: ../src/richtext/richtextbackgroundpage.cpp:220 msgid "The horizontal offset." msgstr "O offset horizontal." -#: ../src/richtext/richtextbackgroundpage.cpp:225 +#: ../src/richtext/richtextbackgroundpage.cpp:224 +#: ../src/richtext/richtextbackgroundpage.cpp:227 #: ../src/richtext/richtextbackgroundpage.cpp:228 -#: ../src/richtext/richtextbackgroundpage.cpp:229 -#: ../src/richtext/richtextbackgroundpage.cpp:248 +#: ../src/richtext/richtextbackgroundpage.cpp:247 +#: ../src/richtext/richtextbackgroundpage.cpp:250 #: ../src/richtext/richtextbackgroundpage.cpp:251 -#: ../src/richtext/richtextbackgroundpage.cpp:252 -#: ../src/richtext/richtextbackgroundpage.cpp:288 +#: ../src/richtext/richtextbackgroundpage.cpp:287 +#: ../src/richtext/richtextbackgroundpage.cpp:290 #: ../src/richtext/richtextbackgroundpage.cpp:291 -#: ../src/richtext/richtextbackgroundpage.cpp:292 -#: ../src/richtext/richtextbackgroundpage.cpp:315 +#: ../src/richtext/richtextbackgroundpage.cpp:314 +#: ../src/richtext/richtextbackgroundpage.cpp:317 #: ../src/richtext/richtextbackgroundpage.cpp:318 -#: ../src/richtext/richtextbackgroundpage.cpp:319 -#: ../src/richtext/richtextborderspage.cpp:253 +#: ../src/richtext/richtextborderspage.cpp:252 +#: ../src/richtext/richtextborderspage.cpp:255 #: ../src/richtext/richtextborderspage.cpp:256 -#: ../src/richtext/richtextborderspage.cpp:257 -#: ../src/richtext/richtextborderspage.cpp:287 +#: ../src/richtext/richtextborderspage.cpp:286 +#: ../src/richtext/richtextborderspage.cpp:289 #: ../src/richtext/richtextborderspage.cpp:290 -#: ../src/richtext/richtextborderspage.cpp:291 -#: ../src/richtext/richtextborderspage.cpp:321 +#: ../src/richtext/richtextborderspage.cpp:320 +#: ../src/richtext/richtextborderspage.cpp:323 #: ../src/richtext/richtextborderspage.cpp:324 -#: ../src/richtext/richtextborderspage.cpp:325 -#: ../src/richtext/richtextborderspage.cpp:355 +#: ../src/richtext/richtextborderspage.cpp:354 +#: ../src/richtext/richtextborderspage.cpp:357 #: ../src/richtext/richtextborderspage.cpp:358 -#: ../src/richtext/richtextborderspage.cpp:359 -#: ../src/richtext/richtextborderspage.cpp:421 +#: ../src/richtext/richtextborderspage.cpp:420 +#: ../src/richtext/richtextborderspage.cpp:423 #: ../src/richtext/richtextborderspage.cpp:424 -#: ../src/richtext/richtextborderspage.cpp:425 -#: ../src/richtext/richtextborderspage.cpp:455 +#: ../src/richtext/richtextborderspage.cpp:454 +#: ../src/richtext/richtextborderspage.cpp:457 #: ../src/richtext/richtextborderspage.cpp:458 -#: ../src/richtext/richtextborderspage.cpp:459 -#: ../src/richtext/richtextborderspage.cpp:489 +#: ../src/richtext/richtextborderspage.cpp:488 +#: ../src/richtext/richtextborderspage.cpp:491 #: ../src/richtext/richtextborderspage.cpp:492 -#: ../src/richtext/richtextborderspage.cpp:493 -#: ../src/richtext/richtextborderspage.cpp:523 +#: ../src/richtext/richtextborderspage.cpp:522 +#: ../src/richtext/richtextborderspage.cpp:525 #: ../src/richtext/richtextborderspage.cpp:526 -#: ../src/richtext/richtextborderspage.cpp:527 -#: ../src/richtext/richtextborderspage.cpp:591 +#: ../src/richtext/richtextborderspage.cpp:590 +#: ../src/richtext/richtextborderspage.cpp:593 #: ../src/richtext/richtextborderspage.cpp:594 -#: ../src/richtext/richtextborderspage.cpp:595 -#: ../src/richtext/richtextfontpage.cpp:178 -#: ../src/richtext/richtextmarginspage.cpp:200 +#: ../src/richtext/richtextfontpage.cpp:177 +#: ../src/richtext/richtextmarginspage.cpp:199 +#: ../src/richtext/richtextmarginspage.cpp:201 #: ../src/richtext/richtextmarginspage.cpp:202 -#: ../src/richtext/richtextmarginspage.cpp:203 -#: ../src/richtext/richtextmarginspage.cpp:225 +#: ../src/richtext/richtextmarginspage.cpp:224 +#: ../src/richtext/richtextmarginspage.cpp:226 #: ../src/richtext/richtextmarginspage.cpp:227 -#: ../src/richtext/richtextmarginspage.cpp:228 -#: ../src/richtext/richtextmarginspage.cpp:248 +#: ../src/richtext/richtextmarginspage.cpp:247 +#: ../src/richtext/richtextmarginspage.cpp:249 #: ../src/richtext/richtextmarginspage.cpp:250 -#: ../src/richtext/richtextmarginspage.cpp:251 -#: ../src/richtext/richtextmarginspage.cpp:273 +#: ../src/richtext/richtextmarginspage.cpp:272 +#: ../src/richtext/richtextmarginspage.cpp:274 #: ../src/richtext/richtextmarginspage.cpp:275 -#: ../src/richtext/richtextmarginspage.cpp:276 -#: ../src/richtext/richtextmarginspage.cpp:314 +#: ../src/richtext/richtextmarginspage.cpp:313 +#: ../src/richtext/richtextmarginspage.cpp:315 #: ../src/richtext/richtextmarginspage.cpp:316 -#: ../src/richtext/richtextmarginspage.cpp:317 -#: ../src/richtext/richtextmarginspage.cpp:339 +#: ../src/richtext/richtextmarginspage.cpp:338 +#: ../src/richtext/richtextmarginspage.cpp:340 #: ../src/richtext/richtextmarginspage.cpp:341 -#: ../src/richtext/richtextmarginspage.cpp:342 -#: ../src/richtext/richtextmarginspage.cpp:362 +#: ../src/richtext/richtextmarginspage.cpp:361 +#: ../src/richtext/richtextmarginspage.cpp:363 #: ../src/richtext/richtextmarginspage.cpp:364 -#: ../src/richtext/richtextmarginspage.cpp:365 -#: ../src/richtext/richtextmarginspage.cpp:387 +#: ../src/richtext/richtextmarginspage.cpp:386 +#: ../src/richtext/richtextmarginspage.cpp:388 #: ../src/richtext/richtextmarginspage.cpp:389 -#: ../src/richtext/richtextmarginspage.cpp:390 -#: ../src/richtext/richtextsizepage.cpp:338 +#: ../src/richtext/richtextsizepage.cpp:337 +#: ../src/richtext/richtextsizepage.cpp:340 #: ../src/richtext/richtextsizepage.cpp:341 -#: ../src/richtext/richtextsizepage.cpp:342 -#: ../src/richtext/richtextsizepage.cpp:372 +#: ../src/richtext/richtextsizepage.cpp:371 +#: ../src/richtext/richtextsizepage.cpp:374 #: ../src/richtext/richtextsizepage.cpp:375 -#: ../src/richtext/richtextsizepage.cpp:376 -#: ../src/richtext/richtextsizepage.cpp:399 +#: ../src/richtext/richtextsizepage.cpp:398 +#: ../src/richtext/richtextsizepage.cpp:401 #: ../src/richtext/richtextsizepage.cpp:402 -#: ../src/richtext/richtextsizepage.cpp:403 -#: ../src/richtext/richtextsizepage.cpp:426 +#: ../src/richtext/richtextsizepage.cpp:425 +#: ../src/richtext/richtextsizepage.cpp:428 #: ../src/richtext/richtextsizepage.cpp:429 -#: ../src/richtext/richtextsizepage.cpp:430 -#: ../src/richtext/richtextsizepage.cpp:453 +#: ../src/richtext/richtextsizepage.cpp:452 +#: ../src/richtext/richtextsizepage.cpp:455 #: ../src/richtext/richtextsizepage.cpp:456 -#: ../src/richtext/richtextsizepage.cpp:457 -#: ../src/richtext/richtextsizepage.cpp:480 +#: ../src/richtext/richtextsizepage.cpp:479 +#: ../src/richtext/richtextsizepage.cpp:482 #: ../src/richtext/richtextsizepage.cpp:483 -#: ../src/richtext/richtextsizepage.cpp:484 -#: ../src/richtext/richtextsizepage.cpp:554 +#: ../src/richtext/richtextsizepage.cpp:553 +#: ../src/richtext/richtextsizepage.cpp:556 #: ../src/richtext/richtextsizepage.cpp:557 -#: ../src/richtext/richtextsizepage.cpp:558 -#: ../src/richtext/richtextsizepage.cpp:589 +#: ../src/richtext/richtextsizepage.cpp:588 +#: ../src/richtext/richtextsizepage.cpp:591 #: ../src/richtext/richtextsizepage.cpp:592 -#: ../src/richtext/richtextsizepage.cpp:593 -#: ../src/richtext/richtextsizepage.cpp:624 +#: ../src/richtext/richtextsizepage.cpp:623 +#: ../src/richtext/richtextsizepage.cpp:626 #: ../src/richtext/richtextsizepage.cpp:627 -#: ../src/richtext/richtextsizepage.cpp:628 -#: ../src/richtext/richtextsizepage.cpp:659 +#: ../src/richtext/richtextsizepage.cpp:658 +#: ../src/richtext/richtextsizepage.cpp:661 #: ../src/richtext/richtextsizepage.cpp:662 -#: ../src/richtext/richtextsizepage.cpp:663 msgid "px" msgstr "px" +#: ../src/richtext/richtextbackgroundpage.cpp:225 +#: ../src/richtext/richtextbackgroundpage.cpp:248 +#: ../src/richtext/richtextbackgroundpage.cpp:288 +#: ../src/richtext/richtextbackgroundpage.cpp:315 +#: ../src/richtext/richtextborderspage.cpp:253 +#: ../src/richtext/richtextborderspage.cpp:287 +#: ../src/richtext/richtextborderspage.cpp:321 +#: ../src/richtext/richtextborderspage.cpp:355 +#: ../src/richtext/richtextborderspage.cpp:421 +#: ../src/richtext/richtextborderspage.cpp:455 +#: ../src/richtext/richtextborderspage.cpp:489 +#: ../src/richtext/richtextborderspage.cpp:523 +#: ../src/richtext/richtextborderspage.cpp:591 +#: ../src/richtext/richtextmarginspage.cpp:200 +#: ../src/richtext/richtextmarginspage.cpp:225 +#: ../src/richtext/richtextmarginspage.cpp:248 +#: ../src/richtext/richtextmarginspage.cpp:273 +#: ../src/richtext/richtextmarginspage.cpp:314 +#: ../src/richtext/richtextmarginspage.cpp:339 +#: ../src/richtext/richtextmarginspage.cpp:362 +#: ../src/richtext/richtextmarginspage.cpp:387 +#: ../src/richtext/richtextsizepage.cpp:338 +#: ../src/richtext/richtextsizepage.cpp:372 +#: ../src/richtext/richtextsizepage.cpp:399 +#: ../src/richtext/richtextsizepage.cpp:426 +#: ../src/richtext/richtextsizepage.cpp:453 +#: ../src/richtext/richtextsizepage.cpp:480 +#: ../src/richtext/richtextsizepage.cpp:554 +#: ../src/richtext/richtextsizepage.cpp:589 +#: ../src/richtext/richtextsizepage.cpp:624 +#: ../src/richtext/richtextsizepage.cpp:659 +msgid "cm" +msgstr "cm" + #: ../src/richtext/richtextbackgroundpage.cpp:226 #: ../src/richtext/richtextbackgroundpage.cpp:249 #: ../src/richtext/richtextbackgroundpage.cpp:289 @@ -7206,1761 +7249,1734 @@ msgstr "px" #: ../src/richtext/richtextborderspage.cpp:490 #: ../src/richtext/richtextborderspage.cpp:524 #: ../src/richtext/richtextborderspage.cpp:592 -#: ../src/richtext/richtextmarginspage.cpp:201 -#: ../src/richtext/richtextmarginspage.cpp:226 -#: ../src/richtext/richtextmarginspage.cpp:249 -#: ../src/richtext/richtextmarginspage.cpp:274 -#: ../src/richtext/richtextmarginspage.cpp:315 -#: ../src/richtext/richtextmarginspage.cpp:340 -#: ../src/richtext/richtextmarginspage.cpp:363 -#: ../src/richtext/richtextmarginspage.cpp:388 -#: ../src/richtext/richtextsizepage.cpp:339 -#: ../src/richtext/richtextsizepage.cpp:373 -#: ../src/richtext/richtextsizepage.cpp:400 -#: ../src/richtext/richtextsizepage.cpp:427 -#: ../src/richtext/richtextsizepage.cpp:454 -#: ../src/richtext/richtextsizepage.cpp:481 -#: ../src/richtext/richtextsizepage.cpp:555 -#: ../src/richtext/richtextsizepage.cpp:590 -#: ../src/richtext/richtextsizepage.cpp:625 -#: ../src/richtext/richtextsizepage.cpp:660 -msgid "cm" -msgstr "cm" - -#: ../src/richtext/richtextbackgroundpage.cpp:227 -#: ../src/richtext/richtextbackgroundpage.cpp:250 -#: ../src/richtext/richtextbackgroundpage.cpp:290 -#: ../src/richtext/richtextbackgroundpage.cpp:317 -#: ../src/richtext/richtextborderspage.cpp:255 -#: ../src/richtext/richtextborderspage.cpp:289 -#: ../src/richtext/richtextborderspage.cpp:323 -#: ../src/richtext/richtextborderspage.cpp:357 -#: ../src/richtext/richtextborderspage.cpp:423 -#: ../src/richtext/richtextborderspage.cpp:457 -#: ../src/richtext/richtextborderspage.cpp:491 -#: ../src/richtext/richtextborderspage.cpp:525 -#: ../src/richtext/richtextborderspage.cpp:593 -#: ../src/richtext/richtextfontpage.cpp:177 -#: ../src/richtext/richtextfontpage.cpp:180 +#: ../src/richtext/richtextfontpage.cpp:176 +#: ../src/richtext/richtextfontpage.cpp:179 msgid "pt" msgstr "pt" -#: ../src/richtext/richtextbackgroundpage.cpp:230 -#: ../src/richtext/richtextbackgroundpage.cpp:232 -#: ../src/richtext/richtextbackgroundpage.cpp:253 -#: ../src/richtext/richtextbackgroundpage.cpp:255 -#: ../src/richtext/richtextbackgroundpage.cpp:293 -#: ../src/richtext/richtextbackgroundpage.cpp:295 -#: ../src/richtext/richtextbackgroundpage.cpp:320 -#: ../src/richtext/richtextbackgroundpage.cpp:322 +#: ../src/richtext/richtextbackgroundpage.cpp:229 +#: ../src/richtext/richtextbackgroundpage.cpp:231 +#: ../src/richtext/richtextbackgroundpage.cpp:252 +#: ../src/richtext/richtextbackgroundpage.cpp:254 +#: ../src/richtext/richtextbackgroundpage.cpp:292 +#: ../src/richtext/richtextbackgroundpage.cpp:294 +#: ../src/richtext/richtextbackgroundpage.cpp:319 +#: ../src/richtext/richtextbackgroundpage.cpp:321 msgid "Units for this value." msgstr "Unidades pra este valor." -#: ../src/richtext/richtextbackgroundpage.cpp:235 +#: ../src/richtext/richtextbackgroundpage.cpp:234 msgid "&Vertical offset:" msgstr "&Offset Vertical:" -#: ../src/richtext/richtextbackgroundpage.cpp:242 -#: ../src/richtext/richtextbackgroundpage.cpp:244 +#: ../src/richtext/richtextbackgroundpage.cpp:241 +#: ../src/richtext/richtextbackgroundpage.cpp:243 msgid "The vertical offset." msgstr "O offset vertical." -#: ../src/richtext/richtextbackgroundpage.cpp:258 +#: ../src/richtext/richtextbackgroundpage.cpp:257 msgid "Shadow c&olour:" msgstr "Côr da S&ombra:" -#: ../src/richtext/richtextbackgroundpage.cpp:260 -#: ../src/richtext/richtextbackgroundpage.cpp:262 +#: ../src/richtext/richtextbackgroundpage.cpp:259 +#: ../src/richtext/richtextbackgroundpage.cpp:261 msgid "Enables the shadow colour." msgstr "Ativa a côr da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:266 -#: ../src/richtext/richtextbackgroundpage.cpp:268 +#: ../src/richtext/richtextbackgroundpage.cpp:265 +#: ../src/richtext/richtextbackgroundpage.cpp:267 msgid "The shadow colour." msgstr "A côr da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:271 +#: ../src/richtext/richtextbackgroundpage.cpp:270 msgid "Sh&adow spread:" msgstr "Es&palhar sombra:" -#: ../src/richtext/richtextbackgroundpage.cpp:273 -#: ../src/richtext/richtextbackgroundpage.cpp:275 +#: ../src/richtext/richtextbackgroundpage.cpp:272 +#: ../src/richtext/richtextbackgroundpage.cpp:274 msgid "Enables the shadow spread." msgstr "Ativa o espalhar da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:282 -#: ../src/richtext/richtextbackgroundpage.cpp:284 +#: ../src/richtext/richtextbackgroundpage.cpp:281 +#: ../src/richtext/richtextbackgroundpage.cpp:283 msgid "The shadow spread." msgstr "O espalhar da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:298 +#: ../src/richtext/richtextbackgroundpage.cpp:297 msgid "&Blur distance:" msgstr "&Distância do blur:" -#: ../src/richtext/richtextbackgroundpage.cpp:300 -#: ../src/richtext/richtextbackgroundpage.cpp:302 +#: ../src/richtext/richtextbackgroundpage.cpp:299 +#: ../src/richtext/richtextbackgroundpage.cpp:301 msgid "Enables the blur distance." msgstr "Ativa a distância do blur." -#: ../src/richtext/richtextbackgroundpage.cpp:309 -#: ../src/richtext/richtextbackgroundpage.cpp:311 +#: ../src/richtext/richtextbackgroundpage.cpp:308 +#: ../src/richtext/richtextbackgroundpage.cpp:310 msgid "The shadow blur distance." msgstr "A distância do blur da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:325 +#: ../src/richtext/richtextbackgroundpage.cpp:324 msgid "Opaci&ty:" msgstr "Opaci&dade:" -#: ../src/richtext/richtextbackgroundpage.cpp:327 -#: ../src/richtext/richtextbackgroundpage.cpp:329 +#: ../src/richtext/richtextbackgroundpage.cpp:326 +#: ../src/richtext/richtextbackgroundpage.cpp:328 msgid "Enables the shadow opacity." msgstr "Ativa a opacidade da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:336 -#: ../src/richtext/richtextbackgroundpage.cpp:338 +#: ../src/richtext/richtextbackgroundpage.cpp:335 +#: ../src/richtext/richtextbackgroundpage.cpp:337 msgid "The shadow opacity." msgstr "A opacidade da sombra." -#: ../src/richtext/richtextbackgroundpage.cpp:341 -#: ../src/richtext/richtextsizepage.cpp:340 -#: ../src/richtext/richtextsizepage.cpp:374 -#: ../src/richtext/richtextsizepage.cpp:401 -#: ../src/richtext/richtextsizepage.cpp:428 -#: ../src/richtext/richtextsizepage.cpp:455 -#: ../src/richtext/richtextsizepage.cpp:482 -#: ../src/richtext/richtextsizepage.cpp:556 -#: ../src/richtext/richtextsizepage.cpp:591 -#: ../src/richtext/richtextsizepage.cpp:626 -#: ../src/richtext/richtextsizepage.cpp:661 +#. TRANSLATORS: Rich text page units (percentage) +#: ../src/richtext/richtextbackgroundpage.cpp:340 +#: ../src/richtext/richtextsizepage.cpp:339 +#: ../src/richtext/richtextsizepage.cpp:373 +#: ../src/richtext/richtextsizepage.cpp:400 +#: ../src/richtext/richtextsizepage.cpp:427 +#: ../src/richtext/richtextsizepage.cpp:454 +#: ../src/richtext/richtextsizepage.cpp:481 +#: ../src/richtext/richtextsizepage.cpp:555 +#: ../src/richtext/richtextsizepage.cpp:590 +#: ../src/richtext/richtextsizepage.cpp:625 +#: ../src/richtext/richtextsizepage.cpp:660 msgid "%" msgstr "%" -#: ../src/richtext/richtextborderspage.cpp:230 -#: ../src/richtext/richtextborderspage.cpp:388 +#: ../src/richtext/richtextborderspage.cpp:229 +#: ../src/richtext/richtextborderspage.cpp:387 msgid "Border" msgstr "Borda" -#: ../src/richtext/richtextborderspage.cpp:243 -#: ../src/richtext/richtextborderspage.cpp:411 -#: ../src/richtext/richtextindentspage.cpp:195 -#: ../src/richtext/richtextliststylepage.cpp:381 -#: ../src/richtext/richtextmarginspage.cpp:186 -#: ../src/richtext/richtextmarginspage.cpp:300 -#: ../src/richtext/richtextsizepage.cpp:532 -#: ../src/richtext/richtextsizepage.cpp:539 +#: ../src/richtext/richtextborderspage.cpp:242 +#: ../src/richtext/richtextborderspage.cpp:410 +#: ../src/richtext/richtextindentspage.cpp:194 +#: ../src/richtext/richtextliststylepage.cpp:384 +#: ../src/richtext/richtextmarginspage.cpp:185 +#: ../src/richtext/richtextmarginspage.cpp:299 +#: ../src/richtext/richtextsizepage.cpp:531 +#: ../src/richtext/richtextsizepage.cpp:538 msgid "&Left:" msgstr "&Esquerda:" -#: ../src/richtext/richtextborderspage.cpp:258 -#: ../src/richtext/richtextborderspage.cpp:260 +#: ../src/richtext/richtextborderspage.cpp:257 +#: ../src/richtext/richtextborderspage.cpp:259 msgid "Units for the left border width." msgstr "Unidades para a largura da borda a esquerda." -#: ../src/richtext/richtextborderspage.cpp:267 -#: ../src/richtext/richtextborderspage.cpp:269 -#: ../src/richtext/richtextborderspage.cpp:301 -#: ../src/richtext/richtextborderspage.cpp:303 -#: ../src/richtext/richtextborderspage.cpp:335 -#: ../src/richtext/richtextborderspage.cpp:337 -#: ../src/richtext/richtextborderspage.cpp:369 -#: ../src/richtext/richtextborderspage.cpp:371 -#: ../src/richtext/richtextborderspage.cpp:435 -#: ../src/richtext/richtextborderspage.cpp:437 -#: ../src/richtext/richtextborderspage.cpp:469 -#: ../src/richtext/richtextborderspage.cpp:471 -#: ../src/richtext/richtextborderspage.cpp:503 -#: ../src/richtext/richtextborderspage.cpp:505 -#: ../src/richtext/richtextborderspage.cpp:537 -#: ../src/richtext/richtextborderspage.cpp:539 +#: ../src/richtext/richtextborderspage.cpp:266 +#: ../src/richtext/richtextborderspage.cpp:268 +#: ../src/richtext/richtextborderspage.cpp:300 +#: ../src/richtext/richtextborderspage.cpp:302 +#: ../src/richtext/richtextborderspage.cpp:334 +#: ../src/richtext/richtextborderspage.cpp:336 +#: ../src/richtext/richtextborderspage.cpp:368 +#: ../src/richtext/richtextborderspage.cpp:370 +#: ../src/richtext/richtextborderspage.cpp:434 +#: ../src/richtext/richtextborderspage.cpp:436 +#: ../src/richtext/richtextborderspage.cpp:468 +#: ../src/richtext/richtextborderspage.cpp:470 +#: ../src/richtext/richtextborderspage.cpp:502 +#: ../src/richtext/richtextborderspage.cpp:504 +#: ../src/richtext/richtextborderspage.cpp:536 +#: ../src/richtext/richtextborderspage.cpp:538 msgid "The border line style." msgstr "O estilo da linha da borda." -#: ../src/richtext/richtextborderspage.cpp:277 -#: ../src/richtext/richtextborderspage.cpp:445 -#: ../src/richtext/richtextindentspage.cpp:213 -#: ../src/richtext/richtextliststylepage.cpp:399 -#: ../src/richtext/richtextmarginspage.cpp:211 -#: ../src/richtext/richtextmarginspage.cpp:325 -#: ../src/richtext/richtextsizepage.cpp:602 -#: ../src/richtext/richtextsizepage.cpp:609 +#: ../src/richtext/richtextborderspage.cpp:276 +#: ../src/richtext/richtextborderspage.cpp:444 +#: ../src/richtext/richtextindentspage.cpp:212 +#: ../src/richtext/richtextliststylepage.cpp:402 +#: ../src/richtext/richtextmarginspage.cpp:210 +#: ../src/richtext/richtextmarginspage.cpp:324 +#: ../src/richtext/richtextsizepage.cpp:601 +#: ../src/richtext/richtextsizepage.cpp:608 msgid "&Right:" msgstr "&Direita:" -#: ../src/richtext/richtextborderspage.cpp:292 -#: ../src/richtext/richtextborderspage.cpp:294 +#: ../src/richtext/richtextborderspage.cpp:291 +#: ../src/richtext/richtextborderspage.cpp:293 msgid "Units for the right border width." msgstr "Unidades para a largura da borda a direita." -#: ../src/richtext/richtextborderspage.cpp:311 -#: ../src/richtext/richtextborderspage.cpp:479 -#: ../src/richtext/richtextmarginspage.cpp:234 -#: ../src/richtext/richtextmarginspage.cpp:348 -#: ../src/richtext/richtextsizepage.cpp:567 -#: ../src/richtext/richtextsizepage.cpp:574 +#: ../src/richtext/richtextborderspage.cpp:310 +#: ../src/richtext/richtextborderspage.cpp:478 +#: ../src/richtext/richtextmarginspage.cpp:233 +#: ../src/richtext/richtextmarginspage.cpp:347 +#: ../src/richtext/richtextsizepage.cpp:566 +#: ../src/richtext/richtextsizepage.cpp:573 msgid "&Top:" msgstr "&Topo:" -#: ../src/richtext/richtextborderspage.cpp:326 -#: ../src/richtext/richtextborderspage.cpp:328 +#: ../src/richtext/richtextborderspage.cpp:325 +#: ../src/richtext/richtextborderspage.cpp:327 msgid "Units for the top border width." msgstr "Unidades para a largura da borda do topo." -#: ../src/richtext/richtextborderspage.cpp:345 -#: ../src/richtext/richtextborderspage.cpp:513 -#: ../src/richtext/richtextmarginspage.cpp:259 -#: ../src/richtext/richtextmarginspage.cpp:373 -#: ../src/richtext/richtextsizepage.cpp:637 -#: ../src/richtext/richtextsizepage.cpp:644 +#: ../src/richtext/richtextborderspage.cpp:344 +#: ../src/richtext/richtextborderspage.cpp:512 +#: ../src/richtext/richtextmarginspage.cpp:258 +#: ../src/richtext/richtextmarginspage.cpp:372 +#: ../src/richtext/richtextsizepage.cpp:636 +#: ../src/richtext/richtextsizepage.cpp:643 msgid "&Bottom:" msgstr "&Fundo:" -#: ../src/richtext/richtextborderspage.cpp:360 -#: ../src/richtext/richtextborderspage.cpp:362 +#: ../src/richtext/richtextborderspage.cpp:359 +#: ../src/richtext/richtextborderspage.cpp:361 msgid "Units for the bottom border width." msgstr "Unidades para a largura da borda do rodapé." -#: ../src/richtext/richtextborderspage.cpp:381 -#: ../src/richtext/richtextborderspage.cpp:549 +#: ../src/richtext/richtextborderspage.cpp:380 +#: ../src/richtext/richtextborderspage.cpp:548 msgid "&Synchronize values" msgstr "&Sincronizar valores" -#: ../src/richtext/richtextborderspage.cpp:383 -#: ../src/richtext/richtextborderspage.cpp:385 -#: ../src/richtext/richtextborderspage.cpp:551 -#: ../src/richtext/richtextborderspage.cpp:553 +#: ../src/richtext/richtextborderspage.cpp:382 +#: ../src/richtext/richtextborderspage.cpp:384 +#: ../src/richtext/richtextborderspage.cpp:550 +#: ../src/richtext/richtextborderspage.cpp:552 msgid "Check to edit all borders simultaneously." msgstr "Marque pra editar todas as bordas simultâneamente." -#: ../src/richtext/richtextborderspage.cpp:398 -#: ../src/richtext/richtextborderspage.cpp:556 +#: ../src/richtext/richtextborderspage.cpp:397 +#: ../src/richtext/richtextborderspage.cpp:555 msgid "Outline" msgstr "Contorno" -#: ../src/richtext/richtextborderspage.cpp:426 -#: ../src/richtext/richtextborderspage.cpp:428 +#: ../src/richtext/richtextborderspage.cpp:425 +#: ../src/richtext/richtextborderspage.cpp:427 msgid "Units for the left outline width." msgstr "Unidades para a largura do contorno a esquerda." -#: ../src/richtext/richtextborderspage.cpp:460 -#: ../src/richtext/richtextborderspage.cpp:462 +#: ../src/richtext/richtextborderspage.cpp:459 +#: ../src/richtext/richtextborderspage.cpp:461 msgid "Units for the right outline width." msgstr "Unidades para a largura do contorno a direita." -#: ../src/richtext/richtextborderspage.cpp:494 -#: ../src/richtext/richtextborderspage.cpp:496 +#: ../src/richtext/richtextborderspage.cpp:493 +#: ../src/richtext/richtextborderspage.cpp:495 msgid "Units for the top outline width." msgstr "Unidades para a largura do contorno do topo." -#: ../src/richtext/richtextborderspage.cpp:528 -#: ../src/richtext/richtextborderspage.cpp:530 +#: ../src/richtext/richtextborderspage.cpp:527 +#: ../src/richtext/richtextborderspage.cpp:529 msgid "Units for the bottom outline width." msgstr "Unidades para a largura do contorno do rodapé." -#: ../src/richtext/richtextborderspage.cpp:566 -#: ../src/richtext/richtextborderspage.cpp:601 +#: ../src/richtext/richtextborderspage.cpp:565 +#: ../src/richtext/richtextborderspage.cpp:600 msgid "Corner" msgstr "Canto" -#: ../src/richtext/richtextborderspage.cpp:575 +#: ../src/richtext/richtextborderspage.cpp:574 msgid "Corner &radius:" msgstr "Raio do &canto:" -#: ../src/richtext/richtextborderspage.cpp:577 -#: ../src/richtext/richtextborderspage.cpp:579 +#: ../src/richtext/richtextborderspage.cpp:576 +#: ../src/richtext/richtextborderspage.cpp:578 msgid "An optional corner radius for adding rounded corners." msgstr "Um raio adicional do canto para adicionar cantos arredondados." -#: ../src/richtext/richtextborderspage.cpp:585 -#: ../src/richtext/richtextborderspage.cpp:587 +#: ../src/richtext/richtextborderspage.cpp:584 +#: ../src/richtext/richtextborderspage.cpp:586 msgid "The value of the corner radius." msgstr "O valor do raio do canto." -#: ../src/richtext/richtextborderspage.cpp:596 -#: ../src/richtext/richtextborderspage.cpp:598 +#: ../src/richtext/richtextborderspage.cpp:595 +#: ../src/richtext/richtextborderspage.cpp:597 msgid "Units for the corner radius." msgstr "Unidades para o raio do canto." -#: ../src/richtext/richtextborderspage.cpp:610 -#: ../src/richtext/richtextsizepage.cpp:248 -#: ../src/richtext/richtextsizepage.cpp:252 +#: ../src/richtext/richtextborderspage.cpp:609 +#: ../src/richtext/richtextsizepage.cpp:247 +#: ../src/richtext/richtextsizepage.cpp:251 msgid "None" msgstr "Nenhum" -#: ../src/richtext/richtextborderspage.cpp:611 +#: ../src/richtext/richtextborderspage.cpp:610 msgid "Solid" msgstr "Sólido" -#: ../src/richtext/richtextborderspage.cpp:612 +#: ../src/richtext/richtextborderspage.cpp:611 msgid "Dotted" msgstr "Pontilhado" -#: ../src/richtext/richtextborderspage.cpp:613 +#: ../src/richtext/richtextborderspage.cpp:612 msgid "Dashed" msgstr "Tracejado" -#: ../src/richtext/richtextborderspage.cpp:614 +#: ../src/richtext/richtextborderspage.cpp:613 msgid "Double" msgstr "Duplo" -#: ../src/richtext/richtextborderspage.cpp:615 +#: ../src/richtext/richtextborderspage.cpp:614 msgid "Groove" msgstr "Ranhura" -#: ../src/richtext/richtextborderspage.cpp:616 +#: ../src/richtext/richtextborderspage.cpp:615 msgid "Ridge" msgstr "Cume" -#: ../src/richtext/richtextborderspage.cpp:617 +#: ../src/richtext/richtextborderspage.cpp:616 msgid "Inset" msgstr "Inserir" -#: ../src/richtext/richtextborderspage.cpp:618 +#: ../src/richtext/richtextborderspage.cpp:617 msgid "Outset" msgstr "Começo" -#: ../src/richtext/richtextbuffer.cpp:3519 +#: ../src/richtext/richtextbuffer.cpp:3518 msgid "Change Style" msgstr "Mudar o Estilo" -#: ../src/richtext/richtextbuffer.cpp:3702 +#: ../src/richtext/richtextbuffer.cpp:3701 msgid "Change Object Style" msgstr "Mudar o Estilo do Objeto" -#: ../src/richtext/richtextbuffer.cpp:3975 -#: ../src/richtext/richtextbuffer.cpp:8175 +#: ../src/richtext/richtextbuffer.cpp:3974 +#: ../src/richtext/richtextbuffer.cpp:8174 msgid "Change Properties" msgstr "Mudar Propriedades" -#: ../src/richtext/richtextbuffer.cpp:4347 +#: ../src/richtext/richtextbuffer.cpp:4346 msgid "Change List Style" msgstr "Mudar o Estilo da Lista" -#: ../src/richtext/richtextbuffer.cpp:4520 +#: ../src/richtext/richtextbuffer.cpp:4519 msgid "Renumber List" msgstr "Renumerar a Lista" -#: ../src/richtext/richtextbuffer.cpp:7868 -#: ../src/richtext/richtextbuffer.cpp:7898 -#: ../src/richtext/richtextbuffer.cpp:7940 -#: ../src/richtext/richtextctrl.cpp:1287 ../src/richtext/richtextctrl.cpp:1481 +#: ../src/richtext/richtextbuffer.cpp:7867 +#: ../src/richtext/richtextbuffer.cpp:7897 +#: ../src/richtext/richtextbuffer.cpp:7939 +#: ../src/richtext/richtextctrl.cpp:1279 ../src/richtext/richtextctrl.cpp:1473 msgid "Insert Text" msgstr "Inserir Texto" -#: ../src/richtext/richtextbuffer.cpp:8024 -#: ../src/richtext/richtextbuffer.cpp:8982 +#: ../src/richtext/richtextbuffer.cpp:8023 +#: ../src/richtext/richtextbuffer.cpp:8981 msgid "Insert Image" msgstr "Inserir Imagem" -#: ../src/richtext/richtextbuffer.cpp:8071 +#: ../src/richtext/richtextbuffer.cpp:8070 msgid "Insert Object" msgstr "Inserir Objeto" -#: ../src/richtext/richtextbuffer.cpp:8113 +#: ../src/richtext/richtextbuffer.cpp:8112 msgid "Insert Field" msgstr "Inserir Campo" -#: ../src/richtext/richtextbuffer.cpp:8411 +#: ../src/richtext/richtextbuffer.cpp:8410 msgid "Too many EndStyle calls!" msgstr "Chamadas demais do EndStyle!" -#: ../src/richtext/richtextbuffer.cpp:8786 +#: ../src/richtext/richtextbuffer.cpp:8785 msgid "files" msgstr "arquivos" -#: ../src/richtext/richtextbuffer.cpp:9383 +#: ../src/richtext/richtextbuffer.cpp:9382 msgid "standard/circle" msgstr "padrão/círculo" -#: ../src/richtext/richtextbuffer.cpp:9384 +#: ../src/richtext/richtextbuffer.cpp:9383 msgid "standard/circle-outline" msgstr "padrão/círculo-contorno" -#: ../src/richtext/richtextbuffer.cpp:9385 +#: ../src/richtext/richtextbuffer.cpp:9384 msgid "standard/square" msgstr "padrão/quadrado" -#: ../src/richtext/richtextbuffer.cpp:9386 +#: ../src/richtext/richtextbuffer.cpp:9385 msgid "standard/diamond" msgstr "padrão/diamante" -#: ../src/richtext/richtextbuffer.cpp:9387 +#: ../src/richtext/richtextbuffer.cpp:9386 msgid "standard/triangle" msgstr "padrão/triângulo" -#: ../src/richtext/richtextbuffer.cpp:9426 +#: ../src/richtext/richtextbuffer.cpp:9425 msgid "Box Properties" msgstr "Propriedades da Caixa" -#: ../src/richtext/richtextbuffer.cpp:10009 +#: ../src/richtext/richtextbuffer.cpp:10008 msgid "Multiple Cell Properties" msgstr "Propriedades Múltiplas das Células" -#: ../src/richtext/richtextbuffer.cpp:10011 +#: ../src/richtext/richtextbuffer.cpp:10010 msgid "Cell Properties" msgstr "Propriedades da Célula" -#: ../src/richtext/richtextbuffer.cpp:11262 +#: ../src/richtext/richtextbuffer.cpp:11258 msgid "Set Cell Style" msgstr "Definir o Estilo da Célula" -#: ../src/richtext/richtextbuffer.cpp:11336 +#: ../src/richtext/richtextbuffer.cpp:11332 msgid "Delete Row" msgstr "Apagar a Fileira" -#: ../src/richtext/richtextbuffer.cpp:11386 +#: ../src/richtext/richtextbuffer.cpp:11382 msgid "Delete Column" msgstr "Apagar a Coluna" -#: ../src/richtext/richtextbuffer.cpp:11437 +#: ../src/richtext/richtextbuffer.cpp:11433 msgid "Add Row" msgstr "Adicionar Fileira" -#: ../src/richtext/richtextbuffer.cpp:11500 +#: ../src/richtext/richtextbuffer.cpp:11496 msgid "Add Column" msgstr "Adicionar Coluna" -#: ../src/richtext/richtextbuffer.cpp:11543 +#: ../src/richtext/richtextbuffer.cpp:11539 msgid "Table Properties" msgstr "Propriedades da Tabela" -#: ../src/richtext/richtextbuffer.cpp:12906 +#: ../src/richtext/richtextbuffer.cpp:12901 msgid "Picture Properties" msgstr "Propriedades da Foto" -#: ../src/richtext/richtextbuffer.cpp:13176 -#: ../src/richtext/richtextbuffer.cpp:13286 +#: ../src/richtext/richtextbuffer.cpp:13171 +#: ../src/richtext/richtextbuffer.cpp:13281 msgid "image" msgstr "imagem" -#: ../src/richtext/richtextbulletspage.cpp:146 -#: ../src/richtext/richtextliststylepage.cpp:210 +#: ../src/richtext/richtextbulletspage.cpp:145 +#: ../src/richtext/richtextliststylepage.cpp:209 msgid "&Bullet style:" msgstr "&Estilo da projétil:" -#: ../src/richtext/richtextbulletspage.cpp:151 -#: ../src/richtext/richtextbulletspage.cpp:153 -#: ../src/richtext/richtextliststylepage.cpp:215 -#: ../src/richtext/richtextliststylepage.cpp:217 +#: ../src/richtext/richtextbulletspage.cpp:150 +#: ../src/richtext/richtextbulletspage.cpp:152 +#: ../src/richtext/richtextliststylepage.cpp:214 +#: ../src/richtext/richtextliststylepage.cpp:216 msgid "The available bullet styles." msgstr "Os estilos dos projéteis disponíveis." -#: ../src/richtext/richtextbulletspage.cpp:159 -#: ../src/richtext/richtextliststylepage.cpp:222 +#: ../src/richtext/richtextbulletspage.cpp:158 +#: ../src/richtext/richtextliststylepage.cpp:221 msgid "Peri&od" msgstr "Pon&to" -#: ../src/richtext/richtextbulletspage.cpp:161 -#: ../src/richtext/richtextbulletspage.cpp:163 -#: ../src/richtext/richtextliststylepage.cpp:224 -#: ../src/richtext/richtextliststylepage.cpp:226 +#: ../src/richtext/richtextbulletspage.cpp:160 +#: ../src/richtext/richtextbulletspage.cpp:162 +#: ../src/richtext/richtextliststylepage.cpp:223 +#: ../src/richtext/richtextliststylepage.cpp:225 msgid "Check to add a period after the bullet." msgstr "Marque pra adicionar um período após a projétil." -#: ../src/richtext/richtextbulletspage.cpp:166 -#: ../src/richtext/richtextliststylepage.cpp:229 +#. TRANSLATORS: Bullet point in parentheses option +#: ../src/richtext/richtextbulletspage.cpp:167 +#: ../src/richtext/richtextliststylepage.cpp:230 msgid "(*)" msgstr "(*)" -#: ../src/richtext/richtextbulletspage.cpp:168 -#: ../src/richtext/richtextbulletspage.cpp:170 -#: ../src/richtext/richtextliststylepage.cpp:231 -#: ../src/richtext/richtextliststylepage.cpp:233 +#: ../src/richtext/richtextbulletspage.cpp:169 +#: ../src/richtext/richtextbulletspage.cpp:171 +#: ../src/richtext/richtextliststylepage.cpp:232 +#: ../src/richtext/richtextliststylepage.cpp:234 msgid "Check to enclose the bullet in parentheses." msgstr "Marque pra cercar a projétil com parênteses." -#: ../src/richtext/richtextbulletspage.cpp:173 -#: ../src/richtext/richtextliststylepage.cpp:236 +#. TRANSLATORS: Right parenthesis bullet point option +#: ../src/richtext/richtextbulletspage.cpp:176 +#: ../src/richtext/richtextliststylepage.cpp:239 msgid "*)" msgstr "*)" -#: ../src/richtext/richtextbulletspage.cpp:175 -#: ../src/richtext/richtextbulletspage.cpp:177 -#: ../src/richtext/richtextliststylepage.cpp:238 -#: ../src/richtext/richtextliststylepage.cpp:240 +#: ../src/richtext/richtextbulletspage.cpp:178 +#: ../src/richtext/richtextbulletspage.cpp:180 +#: ../src/richtext/richtextliststylepage.cpp:241 +#: ../src/richtext/richtextliststylepage.cpp:243 msgid "Check to add a right parenthesis." msgstr "Marque pra adicionar um parêntese direito." -#: ../src/richtext/richtextbulletspage.cpp:182 -#: ../src/richtext/richtextliststylepage.cpp:245 +#: ../src/richtext/richtextbulletspage.cpp:185 +#: ../src/richtext/richtextliststylepage.cpp:248 msgid "Bullet &Alignment:" msgstr "Alinhamento da &Bala:" -#: ../src/richtext/richtextbulletspage.cpp:187 -#: ../src/richtext/richtextliststylepage.cpp:250 +#: ../src/richtext/richtextbulletspage.cpp:190 +#: ../src/richtext/richtextliststylepage.cpp:253 msgid "Centre" msgstr "Centro" -#: ../src/richtext/richtextbulletspage.cpp:191 -#: ../src/richtext/richtextbulletspage.cpp:193 -#: ../src/richtext/richtextbulletspage.cpp:214 -#: ../src/richtext/richtextbulletspage.cpp:216 -#: ../src/richtext/richtextliststylepage.cpp:254 -#: ../src/richtext/richtextliststylepage.cpp:256 -#: ../src/richtext/richtextliststylepage.cpp:275 -#: ../src/richtext/richtextliststylepage.cpp:277 +#: ../src/richtext/richtextbulletspage.cpp:194 +#: ../src/richtext/richtextbulletspage.cpp:196 +#: ../src/richtext/richtextbulletspage.cpp:217 +#: ../src/richtext/richtextbulletspage.cpp:219 +#: ../src/richtext/richtextliststylepage.cpp:257 +#: ../src/richtext/richtextliststylepage.cpp:259 +#: ../src/richtext/richtextliststylepage.cpp:278 +#: ../src/richtext/richtextliststylepage.cpp:280 msgid "The bullet character." msgstr "O caractere do projétil." -#: ../src/richtext/richtextbulletspage.cpp:209 -#: ../src/richtext/richtextliststylepage.cpp:268 +#: ../src/richtext/richtextbulletspage.cpp:212 +#: ../src/richtext/richtextliststylepage.cpp:271 msgid "&Symbol:" msgstr "&Símbolo:" -#: ../src/richtext/richtextbulletspage.cpp:219 -#: ../src/richtext/richtextliststylepage.cpp:280 +#: ../src/richtext/richtextbulletspage.cpp:222 +#: ../src/richtext/richtextliststylepage.cpp:283 msgid "Ch&oose..." msgstr "Es&colher..." -#: ../src/richtext/richtextbulletspage.cpp:220 -#: ../src/richtext/richtextbulletspage.cpp:222 -#: ../src/richtext/richtextliststylepage.cpp:281 -#: ../src/richtext/richtextliststylepage.cpp:283 +#: ../src/richtext/richtextbulletspage.cpp:223 +#: ../src/richtext/richtextbulletspage.cpp:225 +#: ../src/richtext/richtextliststylepage.cpp:284 +#: ../src/richtext/richtextliststylepage.cpp:286 msgid "Click to browse for a symbol." msgstr "Clique pra procurar por um símbolo." -#: ../src/richtext/richtextbulletspage.cpp:227 -#: ../src/richtext/richtextliststylepage.cpp:288 +#: ../src/richtext/richtextbulletspage.cpp:230 +#: ../src/richtext/richtextliststylepage.cpp:291 msgid "Symbol &font:" msgstr "Fonte dos &símbolos:" -#: ../src/richtext/richtextbulletspage.cpp:232 -#: ../src/richtext/richtextbulletspage.cpp:234 -#: ../src/richtext/richtextliststylepage.cpp:294 +#: ../src/richtext/richtextbulletspage.cpp:235 +#: ../src/richtext/richtextbulletspage.cpp:237 +#: ../src/richtext/richtextliststylepage.cpp:297 msgid "Available fonts." msgstr "Fontes disponíveis." -#: ../src/richtext/richtextbulletspage.cpp:239 -#: ../src/richtext/richtextliststylepage.cpp:299 +#: ../src/richtext/richtextbulletspage.cpp:242 +#: ../src/richtext/richtextliststylepage.cpp:302 msgid "S&tandard bullet name:" msgstr "N&ome padrão da projétil:" -#: ../src/richtext/richtextbulletspage.cpp:244 -#: ../src/richtext/richtextbulletspage.cpp:246 -#: ../src/richtext/richtextliststylepage.cpp:304 -#: ../src/richtext/richtextliststylepage.cpp:306 +#: ../src/richtext/richtextbulletspage.cpp:247 +#: ../src/richtext/richtextbulletspage.cpp:249 +#: ../src/richtext/richtextliststylepage.cpp:307 +#: ../src/richtext/richtextliststylepage.cpp:309 msgid "A standard bullet name." msgstr "Um nome padrão para a projétil." -#: ../src/richtext/richtextbulletspage.cpp:251 +#: ../src/richtext/richtextbulletspage.cpp:254 msgid "&Number:" msgstr "&Número:" -#: ../src/richtext/richtextbulletspage.cpp:255 -#: ../src/richtext/richtextbulletspage.cpp:257 +#: ../src/richtext/richtextbulletspage.cpp:258 +#: ../src/richtext/richtextbulletspage.cpp:260 msgid "The list item number." msgstr "O número do item da lista." -#: ../src/richtext/richtextbulletspage.cpp:263 -#: ../src/richtext/richtextbulletspage.cpp:265 -#: ../src/richtext/richtextliststylepage.cpp:472 -#: ../src/richtext/richtextliststylepage.cpp:474 +#: ../src/richtext/richtextbulletspage.cpp:266 +#: ../src/richtext/richtextbulletspage.cpp:268 +#: ../src/richtext/richtextliststylepage.cpp:475 +#: ../src/richtext/richtextliststylepage.cpp:477 msgid "Shows a preview of the bullet settings." msgstr "Mostra uma pré-visualização das configurações das projéteis." -#: ../src/richtext/richtextbulletspage.cpp:273 -#: ../src/richtext/richtextliststylepage.cpp:481 +#: ../src/richtext/richtextbulletspage.cpp:276 +#: ../src/richtext/richtextliststylepage.cpp:484 msgid "(None)" msgstr "(Nenhum)" -#: ../src/richtext/richtextbulletspage.cpp:274 -#: ../src/richtext/richtextliststylepage.cpp:482 +#: ../src/richtext/richtextbulletspage.cpp:277 +#: ../src/richtext/richtextliststylepage.cpp:485 msgid "Arabic" msgstr "Árabe" -#: ../src/richtext/richtextbulletspage.cpp:275 -#: ../src/richtext/richtextliststylepage.cpp:483 +#: ../src/richtext/richtextbulletspage.cpp:278 +#: ../src/richtext/richtextliststylepage.cpp:486 msgid "Upper case letters" msgstr "Letras maiúsculas" -#: ../src/richtext/richtextbulletspage.cpp:276 -#: ../src/richtext/richtextliststylepage.cpp:484 +#: ../src/richtext/richtextbulletspage.cpp:279 +#: ../src/richtext/richtextliststylepage.cpp:487 msgid "Lower case letters" msgstr "Letras minúsculas" -#: ../src/richtext/richtextbulletspage.cpp:277 -#: ../src/richtext/richtextliststylepage.cpp:485 +#: ../src/richtext/richtextbulletspage.cpp:280 +#: ../src/richtext/richtextliststylepage.cpp:488 msgid "Upper case roman numerals" msgstr "Numerais romanos maiúsculos" -#: ../src/richtext/richtextbulletspage.cpp:278 -#: ../src/richtext/richtextliststylepage.cpp:486 +#: ../src/richtext/richtextbulletspage.cpp:281 +#: ../src/richtext/richtextliststylepage.cpp:489 msgid "Lower case roman numerals" msgstr "Numerais romanos minúsculos" -#: ../src/richtext/richtextbulletspage.cpp:279 -#: ../src/richtext/richtextliststylepage.cpp:487 +#: ../src/richtext/richtextbulletspage.cpp:282 +#: ../src/richtext/richtextliststylepage.cpp:490 msgid "Numbered outline" msgstr "Contornos numerados" -#: ../src/richtext/richtextbulletspage.cpp:280 -#: ../src/richtext/richtextliststylepage.cpp:488 +#: ../src/richtext/richtextbulletspage.cpp:283 +#: ../src/richtext/richtextliststylepage.cpp:491 msgid "Symbol" msgstr "Símbolo" -#: ../src/richtext/richtextbulletspage.cpp:281 -#: ../src/richtext/richtextliststylepage.cpp:489 +#: ../src/richtext/richtextbulletspage.cpp:284 +#: ../src/richtext/richtextliststylepage.cpp:492 msgid "Bitmap" msgstr "Bitmap" -#: ../src/richtext/richtextbulletspage.cpp:282 -#: ../src/richtext/richtextliststylepage.cpp:490 +#: ../src/richtext/richtextbulletspage.cpp:285 +#: ../src/richtext/richtextliststylepage.cpp:493 msgid "Standard" msgstr "Padrão" -#: ../src/richtext/richtextbulletspage.cpp:284 -#: ../src/richtext/richtextliststylepage.cpp:492 +#: ../src/richtext/richtextbulletspage.cpp:287 +#: ../src/richtext/richtextliststylepage.cpp:495 msgid "*" msgstr "*" -#: ../src/richtext/richtextbulletspage.cpp:285 -#: ../src/richtext/richtextliststylepage.cpp:493 +#: ../src/richtext/richtextbulletspage.cpp:288 +#: ../src/richtext/richtextliststylepage.cpp:496 msgid "-" msgstr "-" -#: ../src/richtext/richtextbulletspage.cpp:286 -#: ../src/richtext/richtextliststylepage.cpp:494 +#: ../src/richtext/richtextbulletspage.cpp:289 +#: ../src/richtext/richtextliststylepage.cpp:497 msgid ">" msgstr ">" -#: ../src/richtext/richtextbulletspage.cpp:287 -#: ../src/richtext/richtextliststylepage.cpp:495 +#: ../src/richtext/richtextbulletspage.cpp:290 +#: ../src/richtext/richtextliststylepage.cpp:498 msgid "+" msgstr "+" -#: ../src/richtext/richtextbulletspage.cpp:288 -#: ../src/richtext/richtextliststylepage.cpp:496 +#: ../src/richtext/richtextbulletspage.cpp:291 +#: ../src/richtext/richtextliststylepage.cpp:499 msgid "~" msgstr "~" -#: ../src/richtext/richtextctrl.cpp:864 +#: ../src/richtext/richtextctrl.cpp:859 msgid "Drag" msgstr "Arrastar" -#: ../src/richtext/richtextctrl.cpp:1346 ../src/richtext/richtextctrl.cpp:1567 +#: ../src/richtext/richtextctrl.cpp:1338 ../src/richtext/richtextctrl.cpp:1559 msgid "Delete Text" msgstr "Apagar o Texto" -#: ../src/richtext/richtextctrl.cpp:1545 +#: ../src/richtext/richtextctrl.cpp:1537 msgid "Remove Bullet" msgstr "Remover a Bala" -#: ../src/richtext/richtextctrl.cpp:3075 +#: ../src/richtext/richtextctrl.cpp:3070 msgid "The text couldn't be saved." msgstr "O texto não pôde ser salvo." -#: ../src/richtext/richtextctrl.cpp:3650 +#: ../src/richtext/richtextctrl.cpp:3644 msgid "Replace" msgstr "Substituir" -#: ../src/richtext/richtextfontpage.cpp:147 -#: ../src/richtext/richtextsymboldlg.cpp:385 +#: ../src/richtext/richtextfontpage.cpp:146 +#: ../src/richtext/richtextsymboldlg.cpp:384 msgid "&Font:" msgstr "&Fonte:" -#: ../src/richtext/richtextfontpage.cpp:151 -#: ../src/richtext/richtextfontpage.cpp:153 +#: ../src/richtext/richtextfontpage.cpp:150 +#: ../src/richtext/richtextfontpage.cpp:152 msgid "Type a font name." msgstr "Digite um nome de fonte." -#: ../src/richtext/richtextfontpage.cpp:159 +#: ../src/richtext/richtextfontpage.cpp:158 msgid "&Size:" msgstr "&Tamanho:" -#: ../src/richtext/richtextfontpage.cpp:166 -#: ../src/richtext/richtextfontpage.cpp:168 +#: ../src/richtext/richtextfontpage.cpp:165 +#: ../src/richtext/richtextfontpage.cpp:167 msgid "Type a size in points." msgstr "Digite um tamanho em pontos." -#: ../src/richtext/richtextfontpage.cpp:181 -#: ../src/richtext/richtextfontpage.cpp:183 +#: ../src/richtext/richtextfontpage.cpp:180 +#: ../src/richtext/richtextfontpage.cpp:182 msgid "The font size units, points or pixels." msgstr "As unidades de tamanho da fonte, pontos ou pixels." -#: ../src/richtext/richtextfontpage.cpp:190 -#: ../src/richtext/richtextfontpage.cpp:192 +#: ../src/richtext/richtextfontpage.cpp:189 +#: ../src/richtext/richtextfontpage.cpp:191 msgid "Lists the available fonts." msgstr "Lista as fontes disponíveis." -#: ../src/richtext/richtextfontpage.cpp:197 -#: ../src/richtext/richtextfontpage.cpp:199 +#: ../src/richtext/richtextfontpage.cpp:196 +#: ../src/richtext/richtextfontpage.cpp:198 msgid "Lists font sizes in points." msgstr "Lista os tamanhos das fontes em pontos." -#: ../src/richtext/richtextfontpage.cpp:208 +#: ../src/richtext/richtextfontpage.cpp:207 msgid "Font st&yle:" msgstr "Estilo da f&onte:" -#: ../src/richtext/richtextfontpage.cpp:213 -#: ../src/richtext/richtextfontpage.cpp:215 +#: ../src/richtext/richtextfontpage.cpp:212 +#: ../src/richtext/richtextfontpage.cpp:214 msgid "Select regular or italic style." msgstr "Selecione o estilo regular ou itálico." -#: ../src/richtext/richtextfontpage.cpp:221 +#: ../src/richtext/richtextfontpage.cpp:220 msgid "Font &weight:" msgstr "Peso da &fonte:" -#: ../src/richtext/richtextfontpage.cpp:226 -#: ../src/richtext/richtextfontpage.cpp:228 +#: ../src/richtext/richtextfontpage.cpp:225 +#: ../src/richtext/richtextfontpage.cpp:227 msgid "Select regular or bold." msgstr "Selecione regular ou negrito." -#: ../src/richtext/richtextfontpage.cpp:234 +#: ../src/richtext/richtextfontpage.cpp:233 msgid "&Underlining:" msgstr "&Sublinhado:" -#: ../src/richtext/richtextfontpage.cpp:239 -#: ../src/richtext/richtextfontpage.cpp:241 +#: ../src/richtext/richtextfontpage.cpp:238 +#: ../src/richtext/richtextfontpage.cpp:240 msgid "Select underlining or no underlining." msgstr "Selecione sublinhado ou sem sublinhado." -#: ../src/richtext/richtextfontpage.cpp:249 +#: ../src/richtext/richtextfontpage.cpp:248 msgid "&Colour:" msgstr "&Côr:" -#: ../src/richtext/richtextfontpage.cpp:254 -#: ../src/richtext/richtextfontpage.cpp:256 +#: ../src/richtext/richtextfontpage.cpp:253 +#: ../src/richtext/richtextfontpage.cpp:255 msgid "Click to change the text colour." msgstr "Clique pra mudar a côr do texto." -#: ../src/richtext/richtextfontpage.cpp:262 +#: ../src/richtext/richtextfontpage.cpp:261 msgid "&Bg colour:" msgstr "&Côr de fundo:" -#: ../src/richtext/richtextfontpage.cpp:267 -#: ../src/richtext/richtextfontpage.cpp:269 +#: ../src/richtext/richtextfontpage.cpp:266 +#: ../src/richtext/richtextfontpage.cpp:268 msgid "Click to change the text background colour." msgstr "Clique pra mudar a côr do texto em 2º Plano." -#: ../src/richtext/richtextfontpage.cpp:277 -#: ../src/richtext/richtextfontpage.cpp:279 +#: ../src/richtext/richtextfontpage.cpp:276 +#: ../src/richtext/richtextfontpage.cpp:278 msgid "Check to show a line through the text." msgstr "Marque para mostrar uma linha através do texto." -#: ../src/richtext/richtextfontpage.cpp:282 +#: ../src/richtext/richtextfontpage.cpp:281 msgid "Ca&pitals" msgstr "Ma&iúsculas" -#: ../src/richtext/richtextfontpage.cpp:284 -#: ../src/richtext/richtextfontpage.cpp:286 +#: ../src/richtext/richtextfontpage.cpp:283 +#: ../src/richtext/richtextfontpage.cpp:285 msgid "Check to show the text in capitals." msgstr "Marque para mostrar o texto em maiúsculas." -#: ../src/richtext/richtextfontpage.cpp:289 +#: ../src/richtext/richtextfontpage.cpp:288 msgid "Small C&apitals" msgstr "Mi&núsculas" -#: ../src/richtext/richtextfontpage.cpp:291 -#: ../src/richtext/richtextfontpage.cpp:293 +#: ../src/richtext/richtextfontpage.cpp:290 +#: ../src/richtext/richtextfontpage.cpp:292 msgid "Check to show the text in small capitals." msgstr "Marque para mostrar o texto em minúsculas." -#: ../src/richtext/richtextfontpage.cpp:296 +#: ../src/richtext/richtextfontpage.cpp:295 msgid "Supe&rscript" msgstr "Supe&rscript" -#: ../src/richtext/richtextfontpage.cpp:298 -#: ../src/richtext/richtextfontpage.cpp:300 +#: ../src/richtext/richtextfontpage.cpp:297 +#: ../src/richtext/richtextfontpage.cpp:299 msgid "Check to show the text in superscript." msgstr "Marque para mostrar o texto em superscript." -#: ../src/richtext/richtextfontpage.cpp:303 +#: ../src/richtext/richtextfontpage.cpp:302 msgid "Subscrip&t" msgstr "Subscrip&t" -#: ../src/richtext/richtextfontpage.cpp:305 -#: ../src/richtext/richtextfontpage.cpp:307 +#: ../src/richtext/richtextfontpage.cpp:304 +#: ../src/richtext/richtextfontpage.cpp:306 msgid "Check to show the text in subscript." msgstr "Marque para mostrar o texto no subscript." -#: ../src/richtext/richtextfontpage.cpp:313 +#: ../src/richtext/richtextfontpage.cpp:312 msgid "Rig&ht-to-left" msgstr "Dir&eita-pra-esquerda" -#: ../src/richtext/richtextfontpage.cpp:315 -#: ../src/richtext/richtextfontpage.cpp:317 +#: ../src/richtext/richtextfontpage.cpp:314 +#: ../src/richtext/richtextfontpage.cpp:316 msgid "Check to indicate right-to-left text layout." msgstr "Marque pra indicar o layout do texto da direita-pra-esquerda." -#: ../src/richtext/richtextfontpage.cpp:320 +#: ../src/richtext/richtextfontpage.cpp:319 msgid "Suppress hyphe&nation" msgstr "Suprimir hifen&ação" -#: ../src/richtext/richtextfontpage.cpp:322 -#: ../src/richtext/richtextfontpage.cpp:324 +#: ../src/richtext/richtextfontpage.cpp:321 +#: ../src/richtext/richtextfontpage.cpp:323 msgid "Check to suppress hyphenation." msgstr "Marque pra suprimir a hifenação." -#: ../src/richtext/richtextfontpage.cpp:330 -#: ../src/richtext/richtextfontpage.cpp:332 +#: ../src/richtext/richtextfontpage.cpp:329 +#: ../src/richtext/richtextfontpage.cpp:331 msgid "Shows a preview of the font settings." msgstr "Mostra uma pré-visualização das configurações da fonte." -#: ../src/richtext/richtextfontpage.cpp:349 -#: ../src/richtext/richtextfontpage.cpp:353 -#: ../src/richtext/richtextfontpage.cpp:357 -#: ../src/richtext/richtextformatdlg.cpp:876 -#: ../src/richtext/richtextindentspage.cpp:274 +#: ../src/richtext/richtextfontpage.cpp:348 +#: ../src/richtext/richtextfontpage.cpp:352 +#: ../src/richtext/richtextfontpage.cpp:356 +#: ../src/richtext/richtextformatdlg.cpp:873 +#: ../src/richtext/richtextindentspage.cpp:273 +#: ../src/richtext/richtextindentspage.cpp:285 #: ../src/richtext/richtextindentspage.cpp:286 -#: ../src/richtext/richtextindentspage.cpp:287 -#: ../src/richtext/richtextindentspage.cpp:311 -#: ../src/richtext/richtextindentspage.cpp:326 -#: ../src/richtext/richtextliststylepage.cpp:448 -#: ../src/richtext/richtextliststylepage.cpp:460 -#: ../src/richtext/richtextliststylepage.cpp:461 +#: ../src/richtext/richtextindentspage.cpp:310 +#: ../src/richtext/richtextindentspage.cpp:325 +#: ../src/richtext/richtextliststylepage.cpp:451 +#: ../src/richtext/richtextliststylepage.cpp:463 +#: ../src/richtext/richtextliststylepage.cpp:464 msgid "(none)" msgstr "(nenhum)" -#: ../src/richtext/richtextfontpage.cpp:350 -#: ../src/richtext/richtextfontpage.cpp:354 +#: ../src/richtext/richtextfontpage.cpp:349 +#: ../src/richtext/richtextfontpage.cpp:353 msgid "Regular" msgstr "Regular" -#: ../src/richtext/richtextfontpage.cpp:358 +#: ../src/richtext/richtextfontpage.cpp:357 msgid "Not underlined" msgstr "Não sublinhado" -#: ../src/richtext/richtextformatdlg.cpp:342 +#: ../src/richtext/richtextformatdlg.cpp:341 msgid "Indents && Spacing" msgstr "Recuos && Espaçamento" -#: ../src/richtext/richtextformatdlg.cpp:347 +#: ../src/richtext/richtextformatdlg.cpp:346 msgid "Tabs" msgstr "Abas" -#: ../src/richtext/richtextformatdlg.cpp:352 +#: ../src/richtext/richtextformatdlg.cpp:351 msgid "Bullets" msgstr "Balas" -#: ../src/richtext/richtextformatdlg.cpp:357 +#: ../src/richtext/richtextformatdlg.cpp:356 msgid "List Style" msgstr "Estilo das Listas" -#: ../src/richtext/richtextformatdlg.cpp:367 -#: ../src/richtext/richtextmarginspage.cpp:171 +#: ../src/richtext/richtextformatdlg.cpp:366 +#: ../src/richtext/richtextmarginspage.cpp:170 msgid "Margins" msgstr "Margens" -#: ../src/richtext/richtextformatdlg.cpp:372 +#: ../src/richtext/richtextformatdlg.cpp:371 msgid "Borders" msgstr "Bordas" -#: ../src/richtext/richtextformatdlg.cpp:768 +#: ../src/richtext/richtextformatdlg.cpp:765 msgid "Colour" msgstr "Côr" -#: ../src/richtext/richtextindentspage.cpp:128 -#: ../src/richtext/richtextliststylepage.cpp:319 +#: ../src/richtext/richtextindentspage.cpp:127 +#: ../src/richtext/richtextliststylepage.cpp:322 msgid "&Alignment" msgstr "&Alinhamento" -#: ../src/richtext/richtextindentspage.cpp:139 -#: ../src/richtext/richtextliststylepage.cpp:328 +#: ../src/richtext/richtextindentspage.cpp:138 +#: ../src/richtext/richtextliststylepage.cpp:331 msgid "&Left" msgstr "&Esquerda" -#: ../src/richtext/richtextindentspage.cpp:141 -#: ../src/richtext/richtextindentspage.cpp:143 -#: ../src/richtext/richtextliststylepage.cpp:330 -#: ../src/richtext/richtextliststylepage.cpp:332 +#: ../src/richtext/richtextindentspage.cpp:140 +#: ../src/richtext/richtextindentspage.cpp:142 +#: ../src/richtext/richtextliststylepage.cpp:333 +#: ../src/richtext/richtextliststylepage.cpp:335 msgid "Left-align text." msgstr "Alinhar o texto a esquerda." -#: ../src/richtext/richtextindentspage.cpp:146 -#: ../src/richtext/richtextliststylepage.cpp:335 +#: ../src/richtext/richtextindentspage.cpp:145 +#: ../src/richtext/richtextliststylepage.cpp:338 msgid "&Right" msgstr "&Direita" -#: ../src/richtext/richtextindentspage.cpp:148 -#: ../src/richtext/richtextindentspage.cpp:150 -#: ../src/richtext/richtextliststylepage.cpp:337 -#: ../src/richtext/richtextliststylepage.cpp:339 +#: ../src/richtext/richtextindentspage.cpp:147 +#: ../src/richtext/richtextindentspage.cpp:149 +#: ../src/richtext/richtextliststylepage.cpp:340 +#: ../src/richtext/richtextliststylepage.cpp:342 msgid "Right-align text." msgstr "Alinhar o texto a direita." -#: ../src/richtext/richtextindentspage.cpp:153 -#: ../src/richtext/richtextliststylepage.cpp:342 +#: ../src/richtext/richtextindentspage.cpp:152 +#: ../src/richtext/richtextliststylepage.cpp:345 msgid "&Justified" msgstr "&Justificado" -#: ../src/richtext/richtextindentspage.cpp:155 -#: ../src/richtext/richtextindentspage.cpp:157 -#: ../src/richtext/richtextliststylepage.cpp:344 -#: ../src/richtext/richtextliststylepage.cpp:346 +#: ../src/richtext/richtextindentspage.cpp:154 +#: ../src/richtext/richtextindentspage.cpp:156 +#: ../src/richtext/richtextliststylepage.cpp:347 +#: ../src/richtext/richtextliststylepage.cpp:349 msgid "Justify text left and right." msgstr "Justificar o texto a esquerda e a direita." -#: ../src/richtext/richtextindentspage.cpp:160 -#: ../src/richtext/richtextliststylepage.cpp:349 +#: ../src/richtext/richtextindentspage.cpp:159 +#: ../src/richtext/richtextliststylepage.cpp:352 msgid "Cen&tred" msgstr "Cen&tralizado" -#: ../src/richtext/richtextindentspage.cpp:162 -#: ../src/richtext/richtextindentspage.cpp:164 -#: ../src/richtext/richtextliststylepage.cpp:351 -#: ../src/richtext/richtextliststylepage.cpp:353 +#: ../src/richtext/richtextindentspage.cpp:161 +#: ../src/richtext/richtextindentspage.cpp:163 +#: ../src/richtext/richtextliststylepage.cpp:354 +#: ../src/richtext/richtextliststylepage.cpp:356 msgid "Centre text." msgstr "Centralizar texto." -#: ../src/richtext/richtextindentspage.cpp:167 -#: ../src/richtext/richtextliststylepage.cpp:356 +#: ../src/richtext/richtextindentspage.cpp:166 +#: ../src/richtext/richtextliststylepage.cpp:359 msgid "&Indeterminate" msgstr "&Indeterminado" -#: ../src/richtext/richtextindentspage.cpp:169 -#: ../src/richtext/richtextindentspage.cpp:171 -#: ../src/richtext/richtextliststylepage.cpp:358 -#: ../src/richtext/richtextliststylepage.cpp:360 +#: ../src/richtext/richtextindentspage.cpp:168 +#: ../src/richtext/richtextindentspage.cpp:170 +#: ../src/richtext/richtextliststylepage.cpp:361 +#: ../src/richtext/richtextliststylepage.cpp:363 msgid "Use the current alignment setting." msgstr "Usar a configuração de alinhamento atual." -#: ../src/richtext/richtextindentspage.cpp:184 -#: ../src/richtext/richtextliststylepage.cpp:372 +#: ../src/richtext/richtextindentspage.cpp:183 +#: ../src/richtext/richtextliststylepage.cpp:375 msgid "&Indentation (tenths of a mm)" msgstr "&Recorte (décimos de um mm)" -#: ../src/richtext/richtextindentspage.cpp:199 -#: ../src/richtext/richtextindentspage.cpp:201 -#: ../src/richtext/richtextliststylepage.cpp:385 -#: ../src/richtext/richtextliststylepage.cpp:387 +#: ../src/richtext/richtextindentspage.cpp:198 +#: ../src/richtext/richtextindentspage.cpp:200 +#: ../src/richtext/richtextliststylepage.cpp:388 +#: ../src/richtext/richtextliststylepage.cpp:390 msgid "The left indent." msgstr "O recuo a esquerda." -#: ../src/richtext/richtextindentspage.cpp:204 -#: ../src/richtext/richtextliststylepage.cpp:390 +#: ../src/richtext/richtextindentspage.cpp:203 +#: ../src/richtext/richtextliststylepage.cpp:393 msgid "Left (&first line):" msgstr "Esquerda (&primeira linha):" -#: ../src/richtext/richtextindentspage.cpp:208 -#: ../src/richtext/richtextindentspage.cpp:210 -#: ../src/richtext/richtextliststylepage.cpp:394 -#: ../src/richtext/richtextliststylepage.cpp:396 +#: ../src/richtext/richtextindentspage.cpp:207 +#: ../src/richtext/richtextindentspage.cpp:209 +#: ../src/richtext/richtextliststylepage.cpp:397 +#: ../src/richtext/richtextliststylepage.cpp:399 msgid "The first line indent." msgstr "O recuo da primeira linha." -#: ../src/richtext/richtextindentspage.cpp:217 -#: ../src/richtext/richtextindentspage.cpp:219 -#: ../src/richtext/richtextliststylepage.cpp:403 -#: ../src/richtext/richtextliststylepage.cpp:405 +#: ../src/richtext/richtextindentspage.cpp:216 +#: ../src/richtext/richtextindentspage.cpp:218 +#: ../src/richtext/richtextliststylepage.cpp:406 +#: ../src/richtext/richtextliststylepage.cpp:408 msgid "The right indent." msgstr "O recuo a direita." -#: ../src/richtext/richtextindentspage.cpp:222 +#: ../src/richtext/richtextindentspage.cpp:221 msgid "&Outline level:" msgstr "&Nível do contorno:" -#: ../src/richtext/richtextindentspage.cpp:227 -#: ../src/richtext/richtextindentspage.cpp:229 +#: ../src/richtext/richtextindentspage.cpp:226 +#: ../src/richtext/richtextindentspage.cpp:228 msgid "The outline level." msgstr "O nível do contorno." -#: ../src/richtext/richtextindentspage.cpp:242 -#: ../src/richtext/richtextliststylepage.cpp:417 +#: ../src/richtext/richtextindentspage.cpp:241 +#: ../src/richtext/richtextliststylepage.cpp:420 msgid "&Spacing (tenths of a mm)" msgstr "&Espaçamento (décimos de um mm)" -#: ../src/richtext/richtextindentspage.cpp:253 +#: ../src/richtext/richtextindentspage.cpp:252 msgid "&Before a paragraph:" msgstr "&Antes de um parágrafo:" -#: ../src/richtext/richtextindentspage.cpp:257 -#: ../src/richtext/richtextindentspage.cpp:259 -#: ../src/richtext/richtextliststylepage.cpp:430 -#: ../src/richtext/richtextliststylepage.cpp:432 +#: ../src/richtext/richtextindentspage.cpp:256 +#: ../src/richtext/richtextindentspage.cpp:258 +#: ../src/richtext/richtextliststylepage.cpp:433 +#: ../src/richtext/richtextliststylepage.cpp:435 msgid "The spacing before the paragraph." msgstr "O espaçamento antes do parágrafo." -#: ../src/richtext/richtextindentspage.cpp:262 +#: ../src/richtext/richtextindentspage.cpp:261 msgid "&After a paragraph:" msgstr "&Após um parágrafo:" -#: ../src/richtext/richtextindentspage.cpp:267 -#: ../src/richtext/richtextliststylepage.cpp:439 -#: ../src/richtext/richtextliststylepage.cpp:441 +#: ../src/richtext/richtextindentspage.cpp:266 +#: ../src/richtext/richtextliststylepage.cpp:442 +#: ../src/richtext/richtextliststylepage.cpp:444 msgid "The spacing after the paragraph." msgstr "O espaçamento após o parágrafo." -#: ../src/richtext/richtextindentspage.cpp:270 +#: ../src/richtext/richtextindentspage.cpp:269 msgid "L&ine spacing:" msgstr "E&spaçamento das linhas:" -#: ../src/richtext/richtextindentspage.cpp:275 -#: ../src/richtext/richtextliststylepage.cpp:449 +#: ../src/richtext/richtextindentspage.cpp:274 +#: ../src/richtext/richtextliststylepage.cpp:452 msgid "Single" msgstr "Único" -#: ../src/richtext/richtextindentspage.cpp:276 -#: ../src/richtext/richtextliststylepage.cpp:450 +#: ../src/richtext/richtextindentspage.cpp:275 +#: ../src/richtext/richtextliststylepage.cpp:453 msgid "1.1" msgstr "1.1" -#: ../src/richtext/richtextindentspage.cpp:277 -#: ../src/richtext/richtextliststylepage.cpp:451 +#: ../src/richtext/richtextindentspage.cpp:276 +#: ../src/richtext/richtextliststylepage.cpp:454 msgid "1.2" msgstr "1.2" -#: ../src/richtext/richtextindentspage.cpp:278 -#: ../src/richtext/richtextliststylepage.cpp:452 +#: ../src/richtext/richtextindentspage.cpp:277 +#: ../src/richtext/richtextliststylepage.cpp:455 msgid "1.3" msgstr "1.3" -#: ../src/richtext/richtextindentspage.cpp:279 -#: ../src/richtext/richtextliststylepage.cpp:453 +#: ../src/richtext/richtextindentspage.cpp:278 +#: ../src/richtext/richtextliststylepage.cpp:456 msgid "1.4" msgstr "1.4" -#: ../src/richtext/richtextindentspage.cpp:280 -#: ../src/richtext/richtextliststylepage.cpp:454 +#: ../src/richtext/richtextindentspage.cpp:279 +#: ../src/richtext/richtextliststylepage.cpp:457 msgid "1.5" msgstr "1.5" -#: ../src/richtext/richtextindentspage.cpp:281 -#: ../src/richtext/richtextliststylepage.cpp:455 +#: ../src/richtext/richtextindentspage.cpp:280 +#: ../src/richtext/richtextliststylepage.cpp:458 msgid "1.6" msgstr "1.6" -#: ../src/richtext/richtextindentspage.cpp:282 -#: ../src/richtext/richtextliststylepage.cpp:456 +#: ../src/richtext/richtextindentspage.cpp:281 +#: ../src/richtext/richtextliststylepage.cpp:459 msgid "1.7" msgstr "1.7" -#: ../src/richtext/richtextindentspage.cpp:283 -#: ../src/richtext/richtextliststylepage.cpp:457 +#: ../src/richtext/richtextindentspage.cpp:282 +#: ../src/richtext/richtextliststylepage.cpp:460 msgid "1.8" msgstr "1.8" -#: ../src/richtext/richtextindentspage.cpp:284 -#: ../src/richtext/richtextliststylepage.cpp:458 +#: ../src/richtext/richtextindentspage.cpp:283 +#: ../src/richtext/richtextliststylepage.cpp:461 msgid "1.9" msgstr "1.9" -#: ../src/richtext/richtextindentspage.cpp:285 -#: ../src/richtext/richtextliststylepage.cpp:459 +#: ../src/richtext/richtextindentspage.cpp:284 +#: ../src/richtext/richtextliststylepage.cpp:462 msgid "2" msgstr "2" -#: ../src/richtext/richtextindentspage.cpp:288 -#: ../src/richtext/richtextindentspage.cpp:290 -#: ../src/richtext/richtextliststylepage.cpp:462 -#: ../src/richtext/richtextliststylepage.cpp:464 +#: ../src/richtext/richtextindentspage.cpp:287 +#: ../src/richtext/richtextindentspage.cpp:289 +#: ../src/richtext/richtextliststylepage.cpp:465 +#: ../src/richtext/richtextliststylepage.cpp:467 msgid "The line spacing." msgstr "O espaçamento da linha." -#: ../src/richtext/richtextindentspage.cpp:293 +#: ../src/richtext/richtextindentspage.cpp:292 msgid "&Page Break" msgstr "&Quebra da Página" -#: ../src/richtext/richtextindentspage.cpp:295 -#: ../src/richtext/richtextindentspage.cpp:297 +#: ../src/richtext/richtextindentspage.cpp:294 +#: ../src/richtext/richtextindentspage.cpp:296 msgid "Inserts a page break before the paragraph." msgstr "Insere uma quebra de página antes do parágrafo." -#: ../src/richtext/richtextindentspage.cpp:303 -#: ../src/richtext/richtextindentspage.cpp:305 +#: ../src/richtext/richtextindentspage.cpp:302 +#: ../src/richtext/richtextindentspage.cpp:304 msgid "Shows a preview of the paragraph settings." msgstr "Mostra uma pré-visualização das configurações do parágrafo." -#: ../src/richtext/richtextliststylepage.cpp:183 +#: ../src/richtext/richtextliststylepage.cpp:182 msgid "&List level:" msgstr "&Nível da lista:" -#: ../src/richtext/richtextliststylepage.cpp:187 -#: ../src/richtext/richtextliststylepage.cpp:189 +#: ../src/richtext/richtextliststylepage.cpp:186 +#: ../src/richtext/richtextliststylepage.cpp:188 msgid "Selects the list level to edit." msgstr "Seleciona o nível da lista para editar." -#: ../src/richtext/richtextliststylepage.cpp:194 +#: ../src/richtext/richtextliststylepage.cpp:193 msgid "&Font for Level..." msgstr "&Fonte para o Nível..." -#: ../src/richtext/richtextliststylepage.cpp:195 -#: ../src/richtext/richtextliststylepage.cpp:197 +#: ../src/richtext/richtextliststylepage.cpp:194 +#: ../src/richtext/richtextliststylepage.cpp:196 msgid "Click to choose the font for this level." msgstr "Clique pra escolher a fonte para este nível." -#: ../src/richtext/richtextliststylepage.cpp:309 +#: ../src/richtext/richtextliststylepage.cpp:312 msgid "Bullet style" msgstr "Estilo da projétil" -#: ../src/richtext/richtextliststylepage.cpp:426 +#: ../src/richtext/richtextliststylepage.cpp:429 msgid "Before a paragraph:" msgstr "Antes de um parágrafo:" -#: ../src/richtext/richtextliststylepage.cpp:435 +#: ../src/richtext/richtextliststylepage.cpp:438 msgid "After a paragraph:" msgstr "Após um parágrafo:" -#: ../src/richtext/richtextliststylepage.cpp:444 +#: ../src/richtext/richtextliststylepage.cpp:447 msgid "Line spacing:" msgstr "Espaçamento das linhas:" -#: ../src/richtext/richtextliststylepage.cpp:467 +#: ../src/richtext/richtextliststylepage.cpp:470 msgid "Spacing" msgstr "Espaçamento" -#: ../src/richtext/richtextmarginspage.cpp:194 -#: ../src/richtext/richtextmarginspage.cpp:196 +#: ../src/richtext/richtextmarginspage.cpp:193 +#: ../src/richtext/richtextmarginspage.cpp:195 msgid "The left margin size." msgstr "O tamanho da margem esquerda." -#: ../src/richtext/richtextmarginspage.cpp:204 -#: ../src/richtext/richtextmarginspage.cpp:206 +#: ../src/richtext/richtextmarginspage.cpp:203 +#: ../src/richtext/richtextmarginspage.cpp:205 msgid "Units for the left margin." msgstr "Unidades para a margem esquerda." -#: ../src/richtext/richtextmarginspage.cpp:219 -#: ../src/richtext/richtextmarginspage.cpp:221 +#: ../src/richtext/richtextmarginspage.cpp:218 +#: ../src/richtext/richtextmarginspage.cpp:220 msgid "The right margin size." msgstr "O tamanho da margem a direita." -#: ../src/richtext/richtextmarginspage.cpp:229 -#: ../src/richtext/richtextmarginspage.cpp:231 +#: ../src/richtext/richtextmarginspage.cpp:228 +#: ../src/richtext/richtextmarginspage.cpp:230 msgid "Units for the right margin." msgstr "Unidades para a margem a direita." -#: ../src/richtext/richtextmarginspage.cpp:242 -#: ../src/richtext/richtextmarginspage.cpp:244 +#: ../src/richtext/richtextmarginspage.cpp:241 +#: ../src/richtext/richtextmarginspage.cpp:243 msgid "The top margin size." msgstr "O tamanho da margem do topo." -#: ../src/richtext/richtextmarginspage.cpp:252 -#: ../src/richtext/richtextmarginspage.cpp:254 +#: ../src/richtext/richtextmarginspage.cpp:251 +#: ../src/richtext/richtextmarginspage.cpp:253 msgid "Units for the top margin." msgstr "Unidades para a margem do topo." -#: ../src/richtext/richtextmarginspage.cpp:267 -#: ../src/richtext/richtextmarginspage.cpp:269 +#: ../src/richtext/richtextmarginspage.cpp:266 +#: ../src/richtext/richtextmarginspage.cpp:268 msgid "The bottom margin size." msgstr "O tamanho da margem do rodapé." -#: ../src/richtext/richtextmarginspage.cpp:277 -#: ../src/richtext/richtextmarginspage.cpp:279 +#: ../src/richtext/richtextmarginspage.cpp:276 +#: ../src/richtext/richtextmarginspage.cpp:278 msgid "Units for the bottom margin." msgstr "Unidades para a margem do rodapé." -#: ../src/richtext/richtextmarginspage.cpp:285 +#: ../src/richtext/richtextmarginspage.cpp:284 msgid "Padding" msgstr "Enchimento" -#: ../src/richtext/richtextmarginspage.cpp:308 -#: ../src/richtext/richtextmarginspage.cpp:310 +#: ../src/richtext/richtextmarginspage.cpp:307 +#: ../src/richtext/richtextmarginspage.cpp:309 msgid "The left padding size." msgstr "O tamanho do preenchimento a esquerda." -#: ../src/richtext/richtextmarginspage.cpp:318 -#: ../src/richtext/richtextmarginspage.cpp:320 +#: ../src/richtext/richtextmarginspage.cpp:317 +#: ../src/richtext/richtextmarginspage.cpp:319 msgid "Units for the left padding." msgstr "Unidades para o preenchimento a esquerda." -#: ../src/richtext/richtextmarginspage.cpp:333 -#: ../src/richtext/richtextmarginspage.cpp:335 +#: ../src/richtext/richtextmarginspage.cpp:332 +#: ../src/richtext/richtextmarginspage.cpp:334 msgid "The right padding size." msgstr "O tamanho do preenchimento a direita." -#: ../src/richtext/richtextmarginspage.cpp:343 -#: ../src/richtext/richtextmarginspage.cpp:345 +#: ../src/richtext/richtextmarginspage.cpp:342 +#: ../src/richtext/richtextmarginspage.cpp:344 msgid "Units for the right padding." msgstr "Unidades para o preenchimento a direita." -#: ../src/richtext/richtextmarginspage.cpp:356 -#: ../src/richtext/richtextmarginspage.cpp:358 +#: ../src/richtext/richtextmarginspage.cpp:355 +#: ../src/richtext/richtextmarginspage.cpp:357 msgid "The top padding size." msgstr "O tamanho do preenchimento do topo." -#: ../src/richtext/richtextmarginspage.cpp:366 -#: ../src/richtext/richtextmarginspage.cpp:368 +#: ../src/richtext/richtextmarginspage.cpp:365 +#: ../src/richtext/richtextmarginspage.cpp:367 msgid "Units for the top padding." msgstr "Unidades para o preenchimento do topo." -#: ../src/richtext/richtextmarginspage.cpp:381 -#: ../src/richtext/richtextmarginspage.cpp:383 +#: ../src/richtext/richtextmarginspage.cpp:380 +#: ../src/richtext/richtextmarginspage.cpp:382 msgid "The bottom padding size." msgstr "O tamanho do preenchimento do rodapé." -#: ../src/richtext/richtextmarginspage.cpp:391 -#: ../src/richtext/richtextmarginspage.cpp:393 +#: ../src/richtext/richtextmarginspage.cpp:390 +#: ../src/richtext/richtextmarginspage.cpp:392 msgid "Units for the bottom padding." msgstr "Unidades para o preenchimento do rodapé." -#: ../src/richtext/richtextsizepage.cpp:229 +#: ../src/richtext/richtextprint.cpp:589 +msgid " Preview" +msgstr " Pré-visualizar" + +#: ../src/richtext/richtextsizepage.cpp:228 msgid "Floating" msgstr "Flutuante" -#: ../src/richtext/richtextsizepage.cpp:244 +#: ../src/richtext/richtextsizepage.cpp:243 msgid "&Floating mode:" msgstr "&Modo flutuante:" -#: ../src/richtext/richtextsizepage.cpp:253 -#: ../src/richtext/richtextsizepage.cpp:255 +#: ../src/richtext/richtextsizepage.cpp:252 +#: ../src/richtext/richtextsizepage.cpp:254 msgid "How the object will float relative to the text." msgstr "Como o objeto flutuará relativo ao texto." -#: ../src/richtext/richtextsizepage.cpp:266 +#: ../src/richtext/richtextsizepage.cpp:265 msgid "Alignment" msgstr "Alinhamento" -#: ../src/richtext/richtextsizepage.cpp:278 +#: ../src/richtext/richtextsizepage.cpp:277 msgid "&Vertical alignment:" msgstr "&Alinhamento vertical:" -#: ../src/richtext/richtextsizepage.cpp:280 -#: ../src/richtext/richtextsizepage.cpp:282 +#: ../src/richtext/richtextsizepage.cpp:279 +#: ../src/richtext/richtextsizepage.cpp:281 msgid "Enable vertical alignment." msgstr "Ativar alinhamento vertical." -#: ../src/richtext/richtextsizepage.cpp:287 +#: ../src/richtext/richtextsizepage.cpp:286 msgid "Centred" msgstr "Centralizado" -#: ../src/richtext/richtextsizepage.cpp:291 -#: ../src/richtext/richtextsizepage.cpp:293 +#: ../src/richtext/richtextsizepage.cpp:290 +#: ../src/richtext/richtextsizepage.cpp:292 msgid "Vertical alignment." msgstr "Alinhamento vertical." -#: ../src/richtext/richtextsizepage.cpp:317 -#: ../src/richtext/richtextsizepage.cpp:324 +#: ../src/richtext/richtextsizepage.cpp:316 +#: ../src/richtext/richtextsizepage.cpp:323 msgid "&Width:" msgstr "&Largura:" -#: ../src/richtext/richtextsizepage.cpp:319 -#: ../src/richtext/richtextsizepage.cpp:321 +#: ../src/richtext/richtextsizepage.cpp:318 +#: ../src/richtext/richtextsizepage.cpp:320 msgid "Enable the width value." msgstr "Ativar o valor largura." -#: ../src/richtext/richtextsizepage.cpp:332 -#: ../src/richtext/richtextsizepage.cpp:334 +#: ../src/richtext/richtextsizepage.cpp:331 +#: ../src/richtext/richtextsizepage.cpp:333 msgid "The object width." msgstr "A largura do objeto." -#: ../src/richtext/richtextsizepage.cpp:343 -#: ../src/richtext/richtextsizepage.cpp:345 +#: ../src/richtext/richtextsizepage.cpp:342 +#: ../src/richtext/richtextsizepage.cpp:344 msgid "Units for the object width." msgstr "Unidades para a largura do objeto." -#: ../src/richtext/richtextsizepage.cpp:351 -#: ../src/richtext/richtextsizepage.cpp:358 +#: ../src/richtext/richtextsizepage.cpp:350 +#: ../src/richtext/richtextsizepage.cpp:357 msgid "&Height:" msgstr "&Altura:" -#: ../src/richtext/richtextsizepage.cpp:353 -#: ../src/richtext/richtextsizepage.cpp:355 -#: ../src/richtext/richtextsizepage.cpp:465 -#: ../src/richtext/richtextsizepage.cpp:467 +#: ../src/richtext/richtextsizepage.cpp:352 +#: ../src/richtext/richtextsizepage.cpp:354 +#: ../src/richtext/richtextsizepage.cpp:464 +#: ../src/richtext/richtextsizepage.cpp:466 msgid "Enable the height value." msgstr "Ativar o valor altura." -#: ../src/richtext/richtextsizepage.cpp:366 -#: ../src/richtext/richtextsizepage.cpp:368 +#: ../src/richtext/richtextsizepage.cpp:365 +#: ../src/richtext/richtextsizepage.cpp:367 msgid "The object height." msgstr "A altura do objeto." -#: ../src/richtext/richtextsizepage.cpp:377 -#: ../src/richtext/richtextsizepage.cpp:379 +#: ../src/richtext/richtextsizepage.cpp:376 +#: ../src/richtext/richtextsizepage.cpp:378 msgid "Units for the object height." msgstr "Unidades para a altura do objeto." -#: ../src/richtext/richtextsizepage.cpp:382 +#: ../src/richtext/richtextsizepage.cpp:381 msgid "Min width:" msgstr "Largura mín:" -#: ../src/richtext/richtextsizepage.cpp:384 -#: ../src/richtext/richtextsizepage.cpp:386 +#: ../src/richtext/richtextsizepage.cpp:383 +#: ../src/richtext/richtextsizepage.cpp:385 msgid "Enable the minimum width value." msgstr "Ativar o valor mínimo da largura." -#: ../src/richtext/richtextsizepage.cpp:393 -#: ../src/richtext/richtextsizepage.cpp:395 +#: ../src/richtext/richtextsizepage.cpp:392 +#: ../src/richtext/richtextsizepage.cpp:394 msgid "The object minimum width." msgstr "A largura mínima do objeto." -#: ../src/richtext/richtextsizepage.cpp:404 -#: ../src/richtext/richtextsizepage.cpp:406 +#: ../src/richtext/richtextsizepage.cpp:403 +#: ../src/richtext/richtextsizepage.cpp:405 msgid "Units for the minimum object width." msgstr "Unidades para a largura mínima do objeto." -#: ../src/richtext/richtextsizepage.cpp:409 +#: ../src/richtext/richtextsizepage.cpp:408 msgid "Min height:" msgstr "Altura mín:" -#: ../src/richtext/richtextsizepage.cpp:411 -#: ../src/richtext/richtextsizepage.cpp:413 +#: ../src/richtext/richtextsizepage.cpp:410 +#: ../src/richtext/richtextsizepage.cpp:412 msgid "Enable the minimum height value." msgstr "Ativar o valor mínimo da altura." -#: ../src/richtext/richtextsizepage.cpp:420 -#: ../src/richtext/richtextsizepage.cpp:422 +#: ../src/richtext/richtextsizepage.cpp:419 +#: ../src/richtext/richtextsizepage.cpp:421 msgid "The object minimum height." msgstr "A altura mínima do objeto." -#: ../src/richtext/richtextsizepage.cpp:431 -#: ../src/richtext/richtextsizepage.cpp:433 +#: ../src/richtext/richtextsizepage.cpp:430 +#: ../src/richtext/richtextsizepage.cpp:432 msgid "Units for the minimum object height." msgstr "Unidades para a altura mínima do objeto." -#: ../src/richtext/richtextsizepage.cpp:436 +#: ../src/richtext/richtextsizepage.cpp:435 msgid "Max width:" msgstr "Largura máx:" -#: ../src/richtext/richtextsizepage.cpp:438 -#: ../src/richtext/richtextsizepage.cpp:440 +#: ../src/richtext/richtextsizepage.cpp:437 +#: ../src/richtext/richtextsizepage.cpp:439 msgid "Enable the maximum width value." msgstr "Ativar o valor máximo da largura." -#: ../src/richtext/richtextsizepage.cpp:447 -#: ../src/richtext/richtextsizepage.cpp:449 +#: ../src/richtext/richtextsizepage.cpp:446 +#: ../src/richtext/richtextsizepage.cpp:448 msgid "The object maximum width." msgstr "A largura máxima do objeto." -#: ../src/richtext/richtextsizepage.cpp:458 -#: ../src/richtext/richtextsizepage.cpp:460 +#: ../src/richtext/richtextsizepage.cpp:457 +#: ../src/richtext/richtextsizepage.cpp:459 msgid "Units for the maximum object width." msgstr "Unidades para a largura máxima do objeto." -#: ../src/richtext/richtextsizepage.cpp:463 +#: ../src/richtext/richtextsizepage.cpp:462 msgid "Max height:" msgstr "Altura máx:" -#: ../src/richtext/richtextsizepage.cpp:474 -#: ../src/richtext/richtextsizepage.cpp:476 +#: ../src/richtext/richtextsizepage.cpp:473 +#: ../src/richtext/richtextsizepage.cpp:475 msgid "The object maximum height." msgstr "A altura máxima do objeto." -#: ../src/richtext/richtextsizepage.cpp:485 -#: ../src/richtext/richtextsizepage.cpp:487 +#: ../src/richtext/richtextsizepage.cpp:484 +#: ../src/richtext/richtextsizepage.cpp:486 msgid "Units for the maximum object height." msgstr "Unidades para a altura máxima do objeto." -#: ../src/richtext/richtextsizepage.cpp:496 +#: ../src/richtext/richtextsizepage.cpp:495 msgid "Position" msgstr "Posição" -#: ../src/richtext/richtextsizepage.cpp:514 +#: ../src/richtext/richtextsizepage.cpp:513 msgid "&Position mode:" msgstr "&Modo da posição:" -#: ../src/richtext/richtextsizepage.cpp:518 -#: ../src/richtext/richtextsizepage.cpp:523 +#: ../src/richtext/richtextsizepage.cpp:517 +#: ../src/richtext/richtextsizepage.cpp:522 msgid "Static" msgstr "Estático" -#: ../src/richtext/richtextsizepage.cpp:519 +#: ../src/richtext/richtextsizepage.cpp:518 msgid "Relative" msgstr "Relativo" -#: ../src/richtext/richtextsizepage.cpp:520 +#: ../src/richtext/richtextsizepage.cpp:519 msgid "Absolute" msgstr "Absoluto" -#: ../src/richtext/richtextsizepage.cpp:521 +#: ../src/richtext/richtextsizepage.cpp:520 msgid "Fixed" msgstr "Fixo" -#: ../src/richtext/richtextsizepage.cpp:534 -#: ../src/richtext/richtextsizepage.cpp:536 -#: ../src/richtext/richtextsizepage.cpp:548 -#: ../src/richtext/richtextsizepage.cpp:550 +#: ../src/richtext/richtextsizepage.cpp:533 +#: ../src/richtext/richtextsizepage.cpp:535 +#: ../src/richtext/richtextsizepage.cpp:547 +#: ../src/richtext/richtextsizepage.cpp:549 msgid "The left position." msgstr "A posição da esquerda." -#: ../src/richtext/richtextsizepage.cpp:559 -#: ../src/richtext/richtextsizepage.cpp:561 +#: ../src/richtext/richtextsizepage.cpp:558 +#: ../src/richtext/richtextsizepage.cpp:560 msgid "Units for the left position." msgstr "Unidades para a posição da esquerda." -#: ../src/richtext/richtextsizepage.cpp:569 -#: ../src/richtext/richtextsizepage.cpp:571 -#: ../src/richtext/richtextsizepage.cpp:583 -#: ../src/richtext/richtextsizepage.cpp:585 +#: ../src/richtext/richtextsizepage.cpp:568 +#: ../src/richtext/richtextsizepage.cpp:570 +#: ../src/richtext/richtextsizepage.cpp:582 +#: ../src/richtext/richtextsizepage.cpp:584 msgid "The top position." msgstr "A posição do topo." -#: ../src/richtext/richtextsizepage.cpp:594 -#: ../src/richtext/richtextsizepage.cpp:596 +#: ../src/richtext/richtextsizepage.cpp:593 +#: ../src/richtext/richtextsizepage.cpp:595 msgid "Units for the top position." msgstr "Unidades para a posição do topo." -#: ../src/richtext/richtextsizepage.cpp:604 -#: ../src/richtext/richtextsizepage.cpp:606 -#: ../src/richtext/richtextsizepage.cpp:618 -#: ../src/richtext/richtextsizepage.cpp:620 +#: ../src/richtext/richtextsizepage.cpp:603 +#: ../src/richtext/richtextsizepage.cpp:605 +#: ../src/richtext/richtextsizepage.cpp:617 +#: ../src/richtext/richtextsizepage.cpp:619 msgid "The right position." msgstr "A posição da direta." -#: ../src/richtext/richtextsizepage.cpp:629 -#: ../src/richtext/richtextsizepage.cpp:631 +#: ../src/richtext/richtextsizepage.cpp:628 +#: ../src/richtext/richtextsizepage.cpp:630 msgid "Units for the right position." msgstr "Unidades para a posição da direita." -#: ../src/richtext/richtextsizepage.cpp:639 -#: ../src/richtext/richtextsizepage.cpp:641 -#: ../src/richtext/richtextsizepage.cpp:653 -#: ../src/richtext/richtextsizepage.cpp:655 +#: ../src/richtext/richtextsizepage.cpp:638 +#: ../src/richtext/richtextsizepage.cpp:640 +#: ../src/richtext/richtextsizepage.cpp:652 +#: ../src/richtext/richtextsizepage.cpp:654 msgid "The bottom position." msgstr "A posição do rodapé." -#: ../src/richtext/richtextsizepage.cpp:664 -#: ../src/richtext/richtextsizepage.cpp:666 +#: ../src/richtext/richtextsizepage.cpp:663 +#: ../src/richtext/richtextsizepage.cpp:665 msgid "Units for the bottom position." msgstr "Unidades para a posição do rodapé." -#: ../src/richtext/richtextsizepage.cpp:672 +#: ../src/richtext/richtextsizepage.cpp:671 msgid "&Move the object to:" msgstr "&Mover o objeto para:" -#: ../src/richtext/richtextsizepage.cpp:675 +#: ../src/richtext/richtextsizepage.cpp:674 msgid "&Previous Paragraph" msgstr "&Parágrafo Anterior" -#: ../src/richtext/richtextsizepage.cpp:676 -#: ../src/richtext/richtextsizepage.cpp:678 +#: ../src/richtext/richtextsizepage.cpp:675 +#: ../src/richtext/richtextsizepage.cpp:677 msgid "Moves the object to the previous paragraph." msgstr "Move o objeto para o parágrafo anterior." -#: ../src/richtext/richtextsizepage.cpp:681 +#: ../src/richtext/richtextsizepage.cpp:680 msgid "&Next Paragraph" msgstr "&Parágrafo Seguinte" -#: ../src/richtext/richtextsizepage.cpp:682 -#: ../src/richtext/richtextsizepage.cpp:684 +#: ../src/richtext/richtextsizepage.cpp:681 +#: ../src/richtext/richtextsizepage.cpp:683 msgid "Moves the object to the next paragraph." msgstr "Move o objeto para o próximo parágrafo." -#: ../src/richtext/richtextstyledlg.cpp:194 +#: ../src/richtext/richtextstyledlg.cpp:193 msgid "&Styles:" msgstr "&Estilos:" -#: ../src/richtext/richtextstyledlg.cpp:198 -#: ../src/richtext/richtextstyledlg.cpp:200 +#: ../src/richtext/richtextstyledlg.cpp:197 +#: ../src/richtext/richtextstyledlg.cpp:199 msgid "The available styles." msgstr "Os estilos disponíveis." -#: ../src/richtext/richtextstyledlg.cpp:206 -#: ../src/richtext/richtextstyledlg.cpp:218 +#: ../src/richtext/richtextstyledlg.cpp:205 +#: ../src/richtext/richtextstyledlg.cpp:217 msgid " " msgstr " " -#: ../src/richtext/richtextstyledlg.cpp:210 -#: ../src/richtext/richtextstyledlg.cpp:212 +#: ../src/richtext/richtextstyledlg.cpp:209 +#: ../src/richtext/richtextstyledlg.cpp:211 msgid "The style preview." msgstr "A pré-visualização do estilo." -#: ../src/richtext/richtextstyledlg.cpp:221 +#: ../src/richtext/richtextstyledlg.cpp:220 msgid "New &Character Style..." msgstr "Novo &Estilo de Caractere..." -#: ../src/richtext/richtextstyledlg.cpp:222 -#: ../src/richtext/richtextstyledlg.cpp:224 +#: ../src/richtext/richtextstyledlg.cpp:221 +#: ../src/richtext/richtextstyledlg.cpp:223 msgid "Click to create a new character style." msgstr "Clique pra criar um novo estilo de caracteres." -#: ../src/richtext/richtextstyledlg.cpp:227 +#: ../src/richtext/richtextstyledlg.cpp:226 msgid "New &Paragraph Style..." msgstr "Novo &Estilo de Parágrafo..." -#: ../src/richtext/richtextstyledlg.cpp:228 -#: ../src/richtext/richtextstyledlg.cpp:230 +#: ../src/richtext/richtextstyledlg.cpp:227 +#: ../src/richtext/richtextstyledlg.cpp:229 msgid "Click to create a new paragraph style." msgstr "Clique pra criar um novo estilo de parágrafo." -#: ../src/richtext/richtextstyledlg.cpp:233 +#: ../src/richtext/richtextstyledlg.cpp:232 msgid "New &List Style..." msgstr "Novo &Estilo de Lista..." -#: ../src/richtext/richtextstyledlg.cpp:234 -#: ../src/richtext/richtextstyledlg.cpp:236 +#: ../src/richtext/richtextstyledlg.cpp:233 +#: ../src/richtext/richtextstyledlg.cpp:235 msgid "Click to create a new list style." msgstr "Clique pra criar um novo estilo de listas." -#: ../src/richtext/richtextstyledlg.cpp:239 +#: ../src/richtext/richtextstyledlg.cpp:238 msgid "New &Box Style..." msgstr "Novo &Estilo da Caixa..." -#: ../src/richtext/richtextstyledlg.cpp:240 -#: ../src/richtext/richtextstyledlg.cpp:242 +#: ../src/richtext/richtextstyledlg.cpp:239 +#: ../src/richtext/richtextstyledlg.cpp:241 msgid "Click to create a new box style." msgstr "Clique pra criar um novo estilo de caixas." -#: ../src/richtext/richtextstyledlg.cpp:247 +#: ../src/richtext/richtextstyledlg.cpp:246 msgid "&Apply Style" msgstr "&Aplicar Estilo" -#: ../src/richtext/richtextstyledlg.cpp:248 -#: ../src/richtext/richtextstyledlg.cpp:250 +#: ../src/richtext/richtextstyledlg.cpp:247 +#: ../src/richtext/richtextstyledlg.cpp:249 msgid "Click to apply the selected style." msgstr "Clique pra aplicar o estilo selecionado." -#: ../src/richtext/richtextstyledlg.cpp:253 +#: ../src/richtext/richtextstyledlg.cpp:252 msgid "&Rename Style..." msgstr "&Renomear Estilo..." -#: ../src/richtext/richtextstyledlg.cpp:254 -#: ../src/richtext/richtextstyledlg.cpp:256 +#: ../src/richtext/richtextstyledlg.cpp:253 +#: ../src/richtext/richtextstyledlg.cpp:255 msgid "Click to rename the selected style." msgstr "Clique pra renomear o estilo selecionado." -#: ../src/richtext/richtextstyledlg.cpp:259 +#: ../src/richtext/richtextstyledlg.cpp:258 msgid "&Edit Style..." msgstr "&Editar Estilo..." -#: ../src/richtext/richtextstyledlg.cpp:260 -#: ../src/richtext/richtextstyledlg.cpp:262 +#: ../src/richtext/richtextstyledlg.cpp:259 +#: ../src/richtext/richtextstyledlg.cpp:261 msgid "Click to edit the selected style." msgstr "Clique pra editar o estilo selecionado." -#: ../src/richtext/richtextstyledlg.cpp:265 +#: ../src/richtext/richtextstyledlg.cpp:264 msgid "&Delete Style..." msgstr "&Apagar o Estilo..." -#: ../src/richtext/richtextstyledlg.cpp:266 -#: ../src/richtext/richtextstyledlg.cpp:268 +#: ../src/richtext/richtextstyledlg.cpp:265 +#: ../src/richtext/richtextstyledlg.cpp:267 msgid "Click to delete the selected style." msgstr "Clique pra apagar o estilo selecionado." -#: ../src/richtext/richtextstyledlg.cpp:275 -#: ../src/richtext/richtextstyledlg.cpp:277 +#: ../src/richtext/richtextstyledlg.cpp:274 +#: ../src/richtext/richtextstyledlg.cpp:276 msgid "Click to close this window." msgstr "Clique pra fechar esta janela." -#: ../src/richtext/richtextstyledlg.cpp:283 +#: ../src/richtext/richtextstyledlg.cpp:282 msgid "&Restart numbering" msgstr "&Reiniciar a numeração" -#: ../src/richtext/richtextstyledlg.cpp:285 -#: ../src/richtext/richtextstyledlg.cpp:287 +#: ../src/richtext/richtextstyledlg.cpp:284 +#: ../src/richtext/richtextstyledlg.cpp:286 msgid "Check to restart numbering." msgstr "Marque pra reiniciar a numeração." -#: ../src/richtext/richtextstyledlg.cpp:602 +#: ../src/richtext/richtextstyledlg.cpp:601 msgid "Enter a character style name" msgstr "Insira um nome de estilo de caracteres" -#: ../src/richtext/richtextstyledlg.cpp:602 -#: ../src/richtext/richtextstyledlg.cpp:607 -#: ../src/richtext/richtextstyledlg.cpp:650 -#: ../src/richtext/richtextstyledlg.cpp:655 -#: ../src/richtext/richtextstyledlg.cpp:816 -#: ../src/richtext/richtextstyledlg.cpp:821 -#: ../src/richtext/richtextstyledlg.cpp:889 -#: ../src/richtext/richtextstyledlg.cpp:897 -#: ../src/richtext/richtextstyledlg.cpp:930 -#: ../src/richtext/richtextstyledlg.cpp:935 +#: ../src/richtext/richtextstyledlg.cpp:601 +#: ../src/richtext/richtextstyledlg.cpp:606 +#: ../src/richtext/richtextstyledlg.cpp:649 +#: ../src/richtext/richtextstyledlg.cpp:654 +#: ../src/richtext/richtextstyledlg.cpp:815 +#: ../src/richtext/richtextstyledlg.cpp:820 +#: ../src/richtext/richtextstyledlg.cpp:888 +#: ../src/richtext/richtextstyledlg.cpp:896 +#: ../src/richtext/richtextstyledlg.cpp:929 +#: ../src/richtext/richtextstyledlg.cpp:934 msgid "New Style" msgstr "Novo Estilo" -#: ../src/richtext/richtextstyledlg.cpp:607 -#: ../src/richtext/richtextstyledlg.cpp:655 -#: ../src/richtext/richtextstyledlg.cpp:821 -#: ../src/richtext/richtextstyledlg.cpp:897 -#: ../src/richtext/richtextstyledlg.cpp:935 +#: ../src/richtext/richtextstyledlg.cpp:606 +#: ../src/richtext/richtextstyledlg.cpp:654 +#: ../src/richtext/richtextstyledlg.cpp:820 +#: ../src/richtext/richtextstyledlg.cpp:896 +#: ../src/richtext/richtextstyledlg.cpp:934 msgid "Sorry, that name is taken. Please choose another." msgstr "Lamento, este nome está tomado. Por favor escolha outro." -#: ../src/richtext/richtextstyledlg.cpp:650 +#: ../src/richtext/richtextstyledlg.cpp:649 msgid "Enter a paragraph style name" msgstr "Insira um nome de estilo do parágrafo" -#: ../src/richtext/richtextstyledlg.cpp:778 +#: ../src/richtext/richtextstyledlg.cpp:777 #, c-format msgid "Delete style %s?" msgstr "Apagar o estilo %s?" -#: ../src/richtext/richtextstyledlg.cpp:778 +#: ../src/richtext/richtextstyledlg.cpp:777 msgid "Delete Style" msgstr "Apagar o Estilo" -#: ../src/richtext/richtextstyledlg.cpp:816 +#: ../src/richtext/richtextstyledlg.cpp:815 msgid "Enter a list style name" msgstr "Insira um nome de estilo de listas" -#: ../src/richtext/richtextstyledlg.cpp:889 +#: ../src/richtext/richtextstyledlg.cpp:888 msgid "Enter a new style name" msgstr "Insira um novo nome de estilo" -#: ../src/richtext/richtextstyledlg.cpp:930 +#: ../src/richtext/richtextstyledlg.cpp:929 msgid "Enter a box style name" msgstr "Insira um nome de estilo da caixa" -#: ../src/richtext/richtextstylepage.cpp:110 -#: ../src/richtext/richtextstylepage.cpp:112 +#: ../src/richtext/richtextstylepage.cpp:109 +#: ../src/richtext/richtextstylepage.cpp:111 msgid "The style name." msgstr "O nome do estilo." -#: ../src/richtext/richtextstylepage.cpp:115 +#: ../src/richtext/richtextstylepage.cpp:114 msgid "&Based on:" msgstr "&Baseado em:" -#: ../src/richtext/richtextstylepage.cpp:120 -#: ../src/richtext/richtextstylepage.cpp:122 +#: ../src/richtext/richtextstylepage.cpp:119 +#: ../src/richtext/richtextstylepage.cpp:121 msgid "The style on which this style is based." msgstr "O estilo no qual este estilo é baseado." -#: ../src/richtext/richtextstylepage.cpp:125 +#: ../src/richtext/richtextstylepage.cpp:124 msgid "&Next style:" msgstr "&Próximo estilo:" -#: ../src/richtext/richtextstylepage.cpp:130 -#: ../src/richtext/richtextstylepage.cpp:132 +#: ../src/richtext/richtextstylepage.cpp:129 +#: ../src/richtext/richtextstylepage.cpp:131 msgid "The default style for the next paragraph." msgstr "O estilo padrão para o próximo parágrafo." -#: ../src/richtext/richtextstyles.cpp:1058 +#: ../src/richtext/richtextstyles.cpp:1057 msgid "All styles" msgstr "Todos os estilos" -#: ../src/richtext/richtextstyles.cpp:1059 +#: ../src/richtext/richtextstyles.cpp:1058 msgid "Paragraph styles" msgstr "Estilos de parágrafo" -#: ../src/richtext/richtextstyles.cpp:1060 +#: ../src/richtext/richtextstyles.cpp:1059 msgid "Character styles" msgstr "Estilos dos caracteres" -#: ../src/richtext/richtextstyles.cpp:1061 +#: ../src/richtext/richtextstyles.cpp:1060 msgid "List styles" msgstr "Estilos das listas" -#: ../src/richtext/richtextstyles.cpp:1062 +#: ../src/richtext/richtextstyles.cpp:1061 msgid "Box styles" msgstr "Estilos de caixa" -#: ../src/richtext/richtextsymboldlg.cpp:390 -#: ../src/richtext/richtextsymboldlg.cpp:392 +#: ../src/richtext/richtextsymboldlg.cpp:389 +#: ../src/richtext/richtextsymboldlg.cpp:391 msgid "The font from which to take the symbol." msgstr "A fonte da qual tomar o símbolo." -#: ../src/richtext/richtextsymboldlg.cpp:397 +#: ../src/richtext/richtextsymboldlg.cpp:396 msgid "&Subset:" msgstr "&Subset:" -#: ../src/richtext/richtextsymboldlg.cpp:402 -#: ../src/richtext/richtextsymboldlg.cpp:404 +#: ../src/richtext/richtextsymboldlg.cpp:401 +#: ../src/richtext/richtextsymboldlg.cpp:403 msgid "Shows a Unicode subset." msgstr "Mostra um subset do Unicode." -#: ../src/richtext/richtextsymboldlg.cpp:413 +#: ../src/richtext/richtextsymboldlg.cpp:412 msgid "xxxx" msgstr "xxxx" -#: ../src/richtext/richtextsymboldlg.cpp:418 +#: ../src/richtext/richtextsymboldlg.cpp:417 msgid "&Character code:" msgstr "&Código dos caracteres:" -#: ../src/richtext/richtextsymboldlg.cpp:422 -#: ../src/richtext/richtextsymboldlg.cpp:424 +#: ../src/richtext/richtextsymboldlg.cpp:421 +#: ../src/richtext/richtextsymboldlg.cpp:423 msgid "The character code." msgstr "O código do caractere." -#: ../src/richtext/richtextsymboldlg.cpp:429 +#: ../src/richtext/richtextsymboldlg.cpp:428 msgid "&From:" msgstr "&De:" +#: ../src/richtext/richtextsymboldlg.cpp:433 #: ../src/richtext/richtextsymboldlg.cpp:434 #: ../src/richtext/richtextsymboldlg.cpp:435 -#: ../src/richtext/richtextsymboldlg.cpp:436 msgid "Unicode" msgstr "Unicode" -#: ../src/richtext/richtextsymboldlg.cpp:437 -#: ../src/richtext/richtextsymboldlg.cpp:439 +#: ../src/richtext/richtextsymboldlg.cpp:436 +#: ../src/richtext/richtextsymboldlg.cpp:438 msgid "The range to show." msgstr "O alcance a mostrar." -#: ../src/richtext/richtextsymboldlg.cpp:445 +#: ../src/richtext/richtextsymboldlg.cpp:444 msgid "Insert" msgstr "Insert" -#: ../src/richtext/richtextsymboldlg.cpp:479 +#: ../src/richtext/richtextsymboldlg.cpp:478 msgid "(Normal text)" msgstr "(Texto normal)" -#: ../src/richtext/richtexttabspage.cpp:110 +#: ../src/richtext/richtexttabspage.cpp:109 msgid "&Position (tenths of a mm):" msgstr "&Posição (décimos de um milímetro):" -#: ../src/richtext/richtexttabspage.cpp:114 -#: ../src/richtext/richtexttabspage.cpp:116 +#: ../src/richtext/richtexttabspage.cpp:113 +#: ../src/richtext/richtexttabspage.cpp:115 msgid "The tab position." msgstr "A posição da aba." -#: ../src/richtext/richtexttabspage.cpp:120 +#: ../src/richtext/richtexttabspage.cpp:119 msgid "The tab positions." msgstr "As posições das abas." -#: ../src/richtext/richtexttabspage.cpp:133 -#: ../src/richtext/richtexttabspage.cpp:135 +#: ../src/richtext/richtexttabspage.cpp:132 +#: ../src/richtext/richtexttabspage.cpp:134 msgid "Click to create a new tab position." msgstr "Clique pra criar uma nova posição da aba." -#: ../src/richtext/richtexttabspage.cpp:139 -#: ../src/richtext/richtexttabspage.cpp:141 +#: ../src/richtext/richtexttabspage.cpp:138 +#: ../src/richtext/richtexttabspage.cpp:140 msgid "Click to delete the selected tab position." msgstr "Clique para apagar a posição da aba selecionada." -#: ../src/richtext/richtexttabspage.cpp:144 +#: ../src/richtext/richtexttabspage.cpp:143 msgid "Delete A&ll" msgstr "Apagar T&udo" -#: ../src/richtext/richtexttabspage.cpp:145 -#: ../src/richtext/richtexttabspage.cpp:147 +#: ../src/richtext/richtexttabspage.cpp:144 +#: ../src/richtext/richtexttabspage.cpp:146 msgid "Click to delete all tab positions." msgstr "Clique para apagar todas as posições da aba." -#: ../src/univ/theme.cpp:111 +#: ../src/univ/theme.cpp:110 msgid "Failed to initialize GUI: no built-in themes found." msgstr "Falhou em inicializar a GUI: não foram achados temas embutidos." -#: ../src/univ/themes/gtk.cpp:522 +#: ../src/univ/themes/gtk.cpp:521 msgid "GTK+ theme" msgstr "Tema do GTK+" -#: ../src/univ/themes/metal.cpp:165 +#: ../src/univ/themes/metal.cpp:164 msgid "Metal theme" msgstr "Tema Metal" -#: ../src/univ/themes/mono.cpp:513 +#: ../src/univ/themes/mono.cpp:512 msgid "Simple monochrome theme" msgstr "Tema Monocromático Simples" -#: ../src/univ/themes/win32.cpp:1099 +#: ../src/univ/themes/win32.cpp:1098 msgid "Win32 theme" msgstr "Tema do Win32" -#: ../src/univ/themes/win32.cpp:3744 +#: ../src/univ/themes/win32.cpp:3743 msgid "&Restore" msgstr "&Restaurar" -#: ../src/univ/themes/win32.cpp:3745 +#: ../src/univ/themes/win32.cpp:3744 msgid "&Move" msgstr "&Mover" -#: ../src/univ/themes/win32.cpp:3747 +#: ../src/univ/themes/win32.cpp:3746 msgid "&Size" msgstr "&Tamanho" -#: ../src/univ/themes/win32.cpp:3749 +#: ../src/univ/themes/win32.cpp:3748 msgid "Mi&nimize" msgstr "Mi&nimizar" -#: ../src/univ/themes/win32.cpp:3751 +#: ../src/univ/themes/win32.cpp:3750 msgid "Ma&ximize" msgstr "Ma&ximizar" -#: ../src/univ/themes/win32.cpp:3753 +#: ../src/univ/themes/win32.cpp:3752 msgid "Alt+" msgstr "Alt+" -#: ../src/unix/appunix.cpp:179 +#: ../src/unix/appunix.cpp:178 msgid "Failed to install signal handler" msgstr "Falhou em instalar o manipulador do sinal" -#: ../src/unix/dialup.cpp:352 +#: ../src/unix/dialup.cpp:351 msgid "Already dialling ISP." msgstr "Já discando pro ISP." -#: ../src/unix/dlunix.cpp:90 +#: ../src/unix/dlunix.cpp:93 msgid "Failed to unload shared library" msgstr "Falhou em descarregar a biblioteca compartilhada" -#: ../src/unix/dlunix.cpp:118 +#: ../src/unix/dlunix.cpp:121 msgid "Unknown dynamic library error" msgstr "Erro desconhecido da biblioteca dinâmica" @@ -9048,103 +9064,103 @@ msgstr "Incapaz de removar a observação do kqueue" msgid "Unable to get events from kqueue" msgstr "Incapaz de obter eventos do kqueue" -#: ../src/unix/mediactrl.cpp:967 +#: ../src/unix/mediactrl.cpp:966 #, c-format msgid "Media playback error: %s" msgstr "Erro do playback da mídia: %s" -#: ../src/unix/mediactrl.cpp:1229 +#: ../src/unix/mediactrl.cpp:1228 #, c-format msgid "Failed to prepare playing \"%s\"." msgstr "Falhou em preparar a reprodução do \"%s\"." -#: ../src/unix/snglinst.cpp:165 +#: ../src/unix/snglinst.cpp:164 #, c-format msgid "Failed to write to lock file '%s'" msgstr "Falhou em gravar no arquivo da tranca '%s'" -#: ../src/unix/snglinst.cpp:178 +#: ../src/unix/snglinst.cpp:177 #, c-format msgid "Failed to set permissions on lock file '%s'" msgstr "Falhou em definir as permissões sobre o arquivo da tranca '%s'" -#: ../src/unix/snglinst.cpp:195 +#: ../src/unix/snglinst.cpp:194 #, c-format msgid "Failed to lock the lock file '%s'" msgstr "Falhou em trancar o arquivo da tranca '%s'" -#: ../src/unix/snglinst.cpp:238 +#: ../src/unix/snglinst.cpp:237 #, c-format msgid "Failed to inspect the lock file '%s'" msgstr "Falhou em inspecionar o arquivo da tranca '%s'" -#: ../src/unix/snglinst.cpp:243 +#: ../src/unix/snglinst.cpp:242 #, c-format msgid "Lock file '%s' has incorrect owner." msgstr "O arquivo da tranca '%s' tem um dono incorreto." -#: ../src/unix/snglinst.cpp:248 +#: ../src/unix/snglinst.cpp:247 #, c-format msgid "Lock file '%s' has incorrect permissions." msgstr "O arquivo da tranca '%s' tem permissões incorretas." -#: ../src/unix/snglinst.cpp:266 +#: ../src/unix/snglinst.cpp:265 msgid "Failed to access lock file." msgstr "Falhou em acessar o arquivo da tranca." -#: ../src/unix/snglinst.cpp:275 +#: ../src/unix/snglinst.cpp:274 msgid "Failed to read PID from lock file." msgstr "Falhou em ler o PID do arquivo da tranca." -#: ../src/unix/snglinst.cpp:285 +#: ../src/unix/snglinst.cpp:284 #, c-format msgid "Failed to remove stale lock file '%s'." msgstr "Falhou em remover o arquivo do stale lock '%s'." -#: ../src/unix/snglinst.cpp:298 +#: ../src/unix/snglinst.cpp:297 #, c-format msgid "Deleted stale lock file '%s'." msgstr "Arquivo do stale lock apagado '%s'." -#: ../src/unix/snglinst.cpp:309 +#: ../src/unix/snglinst.cpp:308 #, c-format msgid "Invalid lock file '%s'." msgstr "Arquivo da tranca '%s' inválido." -#: ../src/unix/snglinst.cpp:325 +#: ../src/unix/snglinst.cpp:324 #, c-format msgid "Failed to remove lock file '%s'" msgstr "Falhou em remover o arquivo da tranca '%s'" -#: ../src/unix/snglinst.cpp:331 +#: ../src/unix/snglinst.cpp:330 #, c-format msgid "Failed to unlock lock file '%s'" msgstr "Falhou em destrancar o arquivo da tranca '%s'" -#: ../src/unix/snglinst.cpp:337 +#: ../src/unix/snglinst.cpp:336 #, c-format msgid "Failed to close lock file '%s'" msgstr "Falhou em fechar o arquivo da tranca '%s'" -#: ../src/unix/sound.cpp:78 +#: ../src/unix/sound.cpp:77 msgid "No sound" msgstr "Sem som" -#: ../src/unix/sound.cpp:365 +#: ../src/unix/sound.cpp:364 msgid "Unable to play sound asynchronously." msgstr "Incapaz de reproduzir o som de forma assíncrona." -#: ../src/unix/sound.cpp:459 +#: ../src/unix/sound.cpp:458 #, c-format msgid "Couldn't load sound data from '%s'." msgstr "Não pôde carregar os dados do som do '%s'." -#: ../src/unix/sound.cpp:466 +#: ../src/unix/sound.cpp:465 #, c-format msgid "Sound file '%s' is in unsupported format." msgstr "O arquivo de som '%s' está num formato não suportado." -#: ../src/unix/sound.cpp:481 +#: ../src/unix/sound.cpp:480 msgid "Sound data are in unsupported format." msgstr "Os dados do som estão num formato não suportado." @@ -9153,22 +9169,22 @@ msgstr "Os dados do som estão num formato não suportado." msgid "Couldn't open audio: %s" msgstr "Não pôde abrir o áudio: %s" -#: ../src/unix/threadpsx.cpp:1029 +#: ../src/unix/threadpsx.cpp:1021 msgid "Cannot retrieve thread scheduling policy." msgstr "Não consegue recuperar a norma de conduta do agendamento dos threads." -#: ../src/unix/threadpsx.cpp:1054 +#: ../src/unix/threadpsx.cpp:1046 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "" "Não consegue obter o alcance da prioridade para a norma de conduta do " "agendamento do %d." -#: ../src/unix/threadpsx.cpp:1062 +#: ../src/unix/threadpsx.cpp:1054 msgid "Thread priority setting is ignored." msgstr "A configuração da prioridade do thread é ignorada." -#: ../src/unix/threadpsx.cpp:1217 +#: ../src/unix/threadpsx.cpp:1209 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -9176,60 +9192,60 @@ msgstr "" "Falhou em se juntar a um thread, vazamento potencial de memória detectado - " "por favor reinicie o programa" -#: ../src/unix/threadpsx.cpp:1348 +#: ../src/unix/threadpsx.cpp:1340 #, c-format msgid "Failed to set thread concurrency level to %lu" msgstr "Falhou em definir o nível de concordância do thread em %lu" -#: ../src/unix/threadpsx.cpp:1474 +#: ../src/unix/threadpsx.cpp:1469 #, c-format msgid "Failed to set thread priority %d." msgstr "Falhou em definir a prioridade do thread %d." -#: ../src/unix/threadpsx.cpp:1655 +#: ../src/unix/threadpsx.cpp:1654 msgid "Failed to terminate a thread." msgstr "Falhou em concluir um thread." -#: ../src/unix/threadpsx.cpp:1881 +#: ../src/unix/threadpsx.cpp:1882 msgid "Thread module initialization failed: failed to create thread key" msgstr "" "A inicialização do módulo dos threads falhou: falhou em criar a chave do " "thread" -#: ../src/unix/utilsunx.cpp:336 +#: ../src/unix/utilsunx.cpp:338 msgid "Impossible to get child process input" msgstr "Impossível obter a entrada do processo filho" -#: ../src/unix/utilsunx.cpp:386 +#: ../src/unix/utilsunx.cpp:388 msgid "Can't write to child process's stdin" msgstr "Não consegue gravar como processo criança do stdin" -#: ../src/unix/utilsunx.cpp:640 +#: ../src/unix/utilsunx.cpp:642 #, c-format msgid "Failed to execute '%s'\n" msgstr "Falhou em executar o '%s'\n" -#: ../src/unix/utilsunx.cpp:674 +#: ../src/unix/utilsunx.cpp:676 msgid "Fork failed" msgstr "A bifurcação falhou" -#: ../src/unix/utilsunx.cpp:697 +#: ../src/unix/utilsunx.cpp:699 msgid "Failed to set process priority" msgstr "Falhou em definir a prioridade do processo" -#: ../src/unix/utilsunx.cpp:708 +#: ../src/unix/utilsunx.cpp:710 msgid "Failed to redirect child process input/output" msgstr "Falhou em redirecionar a entrada/saída do processo filho" -#: ../src/unix/utilsunx.cpp:812 +#: ../src/unix/utilsunx.cpp:814 msgid "Failed to set up non-blocking pipe, the program might hang." msgstr "Falhou em configurar o pipe não-bloqueador, o programa poderia travar." -#: ../src/unix/utilsunx.cpp:1020 +#: ../src/unix/utilsunx.cpp:1021 msgid "Cannot get the hostname" msgstr "Não consegue obter o nome do host" -#: ../src/unix/utilsunx.cpp:1056 +#: ../src/unix/utilsunx.cpp:1057 msgid "Cannot get the official hostname" msgstr "Não consegue obter o nome oficial do host" @@ -9245,50 +9261,146 @@ msgstr "Falhou em trocar o wake up pipe para o modo não bloqueador" msgid "Failed to read from wake-up pipe" msgstr "Falhou em ler do wake-up pipe" -#: ../src/x11/app.cpp:126 +#: ../src/x11/app.cpp:124 #, c-format msgid "Invalid geometry specification '%s'" msgstr "Inválida a especificação da geometria '%s'" -#: ../src/x11/app.cpp:169 +#: ../src/x11/app.cpp:167 msgid "wxWidgets could not open display. Exiting." msgstr "O wxWidgets não pôde abrir a tela. Saindo." -#: ../src/x11/utils.cpp:170 +#: ../src/x11/utils.cpp:169 #, c-format msgid "Failed to close the display \"%s\"" msgstr "Falhou em fechar a exibição \"%s\"" -#: ../src/x11/utils.cpp:189 +#: ../src/x11/utils.cpp:188 #, c-format msgid "Failed to open display \"%s\"." msgstr "Falhou em abrir a exibição \"%s\"." -#: ../src/xml/xml.cpp:882 +#: ../src/xml/xml.cpp:868 #, c-format msgid "XML parsing error: '%s' at line %d" msgstr "Erro de análise do XML: '%s' na linha %d" -#: ../src/xrc/xmlres.cpp:443 +#: ../src/xrc/xh_propgrid.cpp:239 +#, c-format +msgid "Page %i" +msgstr "Página %i" + +#: ../src/xrc/xmlres.cpp:448 #, c-format msgid "Cannot load resources from '%s'." msgstr "Não consegue carregar os recursos de '%s'." -#: ../src/xrc/xmlres.cpp:794 +#: ../src/xrc/xmlres.cpp:799 #, c-format msgid "Cannot open resources file '%s'." msgstr "Não consegue abrir os recursos de '%s'." -#: ../src/xrc/xmlres.cpp:803 +#: ../src/xrc/xmlres.cpp:806 #, c-format msgid "Cannot load resources from file '%s'." msgstr "Não consegue carregar os recursos do arquivo '%s'." -#: ../src/xrc/xmlres.cpp:2725 +#: ../src/xrc/xmlres.cpp:2766 #, c-format msgid "Creating %s \"%s\" failed." msgstr "Falhou em criar %s \"%s\"." +#~| msgid "ctrl" +#~ msgctxt "keyboard key" +#~ msgid "ctrl" +#~ msgstr "ctrl" + +#~| msgid "alt" +#~ msgctxt "keyboard key" +#~ msgid "alt" +#~ msgstr "alt" + +#~| msgid "shift" +#~ msgctxt "keyboard key" +#~ msgid "shift" +#~ msgstr "shift" + +#~| msgid "rawctrl" +#~ msgctxt "keyboard key" +#~ msgid "rawctrl" +#~ msgstr "rawctrl" + +#~ msgid "Copying more than one selected block to clipboard is not supported." +#~ msgstr "" +#~ "Não é suportado copiar mais do que um bloco selecionado pra área de " +#~ "trabalho." + +#~ msgid "Unsupported clipboard format." +#~ msgstr "Formato da área de transferência não suportado." + +#~ msgid "Failed to set clipboard data." +#~ msgstr "Falhou em definir os dados da área de transferência." + +#~ msgid "Background colour" +#~ msgstr "Côr do 2º plano" + +#~ msgid "Font:" +#~ msgstr "Fonte:" + +#~ msgid "Size:" +#~ msgstr "Tamanho:" + +#~ msgid "The font size in points." +#~ msgstr "O tamanho da fonte em pontos." + +#~ msgid "Style:" +#~ msgstr "Estilo:" + +#~ msgid "Check to make the font bold." +#~ msgstr "Marque pra fazer a fonte ficar em negrito." + +#~ msgid "Check to make the font italic." +#~ msgstr "Marque pra fazer a fonte ficar em itálico." + +#~ msgid "Check to make the font underlined." +#~ msgstr "Marque pra fazer a fonte ficar sublinhada." + +#~ msgid "Colour:" +#~ msgstr "Côr:" + +#~ msgid "Click to change the font colour." +#~ msgstr "Clique pra mudar a côr da fonte." + +#~ msgid "Shows a preview of the font." +#~ msgstr "Mostra uma pré-visualização da fonte." + +#~ msgid "Click to cancel changes to the font." +#~ msgstr "Clique pra cancelar as mudanças na fonte." + +#~ msgid "Click to confirm changes to the font." +#~ msgstr "Clique pra confirmar as mudanças na fonte." + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + #~ msgid "Printing " #~ msgstr "Imprimindo " @@ -9358,9 +9470,6 @@ msgstr "Falhou em criar %s \"%s\"." #~ msgid "Can't create window of class %s" #~ msgstr "Não consegue criar a janela da classe %s" -#~ msgid "Could not initalize libnotify." -#~ msgstr "Não pôde inicializar o libnotify." - #~ msgid "Couldn't create the overlay window" #~ msgstr "Não pôde criar a janela do overlay" @@ -9519,9 +9628,6 @@ msgstr "Falhou em criar %s \"%s\"." #~ msgstr "" #~ "Renderizador de ícone & texto não pode renderizar o valor; tipo de valor:" -#~ msgid "Invalid data view item" -#~ msgstr "Item de visualização dos dados inválido" - #~ msgid "New directory" #~ msgstr "Novo diretório" @@ -10299,9 +10405,6 @@ msgstr "Falhou em criar %s \"%s\"." #~ msgid "|<<" #~ msgstr "|<<" -#~ msgid "\t%s: %s\n" -#~ msgstr "\t%s: %s\n" - #~ msgid " Couldn't create the UnicodeConverter" #~ msgstr "Imposs�vel criar o UnicodeConverter" From 1709b226df9e03b13fa1c4f0e3525e6346c69d99 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sun, 23 Mar 2025 20:49:28 +0100 Subject: [PATCH 144/416] Fix using GL and WebView when using cmake install Add missing wxgl and wxwebview headers to file list to ensure that they are installed correctly by cmake. See #25259. Closes #25266. --- Makefile.in | 1 + build/bakefiles/files.bkl | 1 + build/cmake/files.cmake | 11 ++++++++--- build/cmake/lib/webview/CMakeLists.txt | 6 +----- build/files | 8 ++++++-- docs/changes.txt | 1 + 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Makefile.in b/Makefile.in index 056bd470144a..49deccbbafa0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2370,6 +2370,7 @@ COND_TOOLKIT_MSW_WEBVIEW_HDR_PLATFORM = \ @COND_TOOLKIT_MOTIF@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h wx/unix/glx11.h @COND_TOOLKIT_MSW@OPENGL_HDR_PLATFORM = wx/msw/glcanvas.h @COND_TOOLKIT_OSX_COCOA@OPENGL_HDR_PLATFORM = wx/osx/glcanvas.h +@COND_TOOLKIT_OSX_IPHONE@OPENGL_HDR_PLATFORM = wx/osx/glcanvas.h @COND_TOOLKIT_QT@OPENGL_HDR_PLATFORM = wx/qt/glcanvas.h @COND_TOOLKIT_X11@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h wx/unix/glx11.h @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@AUI_GTK_HDR = wx/aui/tabartgtk.h diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index baddf814d58e..50d04aca7f1c 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -3243,6 +3243,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/osx/glcanvas.h + wx/osx/glcanvas.h wx/cocoa/glcanvas.h wx/gtk/glcanvas.h diff --git a/build/cmake/files.cmake b/build/cmake/files.cmake index b71799f9bc0c..630cc14119bd 100644 --- a/build/cmake/files.cmake +++ b/build/cmake/files.cmake @@ -2874,9 +2874,6 @@ set(WEBVIEW_GTK_HDR set(WEBVIEW_GTK_SRC src/gtk/webview_webkit.cpp -) - -set(WEBVIEW2_GTK_SRC src/gtk/webview_webkit2.cpp ) @@ -3071,11 +3068,19 @@ set(OPENGL_OSX_COCOA_SRC src/osx/glcanvas_osx.cpp ) +set(OPENGL_OSX_COCOA_HDR + wx/osx/glcanvas.h +) + set(OPENGL_OSX_IPHONE_SRC src/osx/iphone/glcanvas.mm src/osx/glcanvas_osx.cpp ) +set(OPENGL_OSX_IPHONE_HDR + wx/osx/glcanvas.h +) + set(UNIX_SOUND_SDL_SRC src/unix/sound_sdl.cpp ) diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index d8bf88459826..2cb35e70d88f 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -30,11 +30,7 @@ wx_append_sources(WEBVIEW_FILES WEBVIEW_CMN) if(WXMSW) wx_append_sources(WEBVIEW_FILES WEBVIEW_MSW) elseif(WXGTK) - if(wxUSE_WEBVIEW_WEBKIT2) - wx_append_sources(WEBVIEW_FILES WEBVIEW2_GTK) - elseif(wxUSE_WEBVIEW_WEBKIT) - wx_append_sources(WEBVIEW_FILES WEBVIEW_GTK) - endif() + wx_append_sources(WEBVIEW_FILES WEBVIEW_GTK) elseif(APPLE) wx_append_sources(WEBVIEW_FILES WEBVIEW_OSX_SHARED) endif() diff --git a/build/files b/build/files index 77ada584edd5..3139393eb415 100644 --- a/build/files +++ b/build/files @@ -2818,8 +2818,6 @@ WEBVIEW_GTK_HDR = WEBVIEW_GTK_SRC = src/gtk/webview_webkit.cpp - -WEBVIEW2_GTK_SRC = src/gtk/webview_webkit2.cpp WEBVIEW_WEBKIT2_EXTENSION_SRC = @@ -3009,10 +3007,16 @@ OPENGL_OSX_COCOA_SRC = src/osx/cocoa/glcanvas.mm src/osx/glcanvas_osx.cpp +OPENGL_OSX_COCOA_HDR = + wx/osx/glcanvas.h + OPENGL_OSX_IPHONE_SRC = src/osx/iphone/glcanvas.mm src/osx/glcanvas_osx.cpp +OPENGL_OSX_IPHONE_HDR = + wx/osx/glcanvas.h + # Misc plugin sources: UNIX_SOUND_SDL_SRC = diff --git a/docs/changes.txt b/docs/changes.txt index 43719a4cdf61..4663ec5aaedb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -254,6 +254,7 @@ Changes in behaviour which may result in build errors All: - Update Brazilian Portuguese translations (Felipe). +- Ensure that all headers are installed by CMake (Maarten Bent, #25266). 3.2.7: (released 2025-03-20) From 5a102b41f1b2e44a481b94bbd1243cbfe300405e Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sat, 29 Mar 2025 18:51:20 +0100 Subject: [PATCH 145/416] Fix some event macro arguments in interface declarations Remove the non-existent arguments and unnecessary backslashes. See #25278. (cherry picked from commit 0b8049e5773c78c4dd0f9f3224d61f4b6cf43de6) --- interface/wx/mediactrl.h | 12 ++++++------ interface/wx/toplevel.h | 4 ++-- interface/wx/window.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/interface/wx/mediactrl.h b/interface/wx/mediactrl.h index 32e3e4ef91cf..770881f91022 100644 --- a/interface/wx/mediactrl.h +++ b/interface/wx/mediactrl.h @@ -48,10 +48,10 @@ enum wxMediaCtrlPlayerControls Event wxMediaCtrl uses. @beginEventTable{wxMediaEvent} - @event{EVT_MEDIA_LOADED(id\, func)} + @event{EVT_MEDIA_LOADED(id, func)} Sent when a media has loaded enough data that it can start playing. Processes a @c wxEVT_MEDIA_LOADED event type. - @event{EVT_MEDIA_STOP(id\, func)} + @event{EVT_MEDIA_STOP(id, func)} Sent when a media has switched to the @c wxMEDIASTATE_STOPPED state. You may be able to Veto this event to prevent it from stopping, causing it to continue playing - even if it has reached that end of @@ -59,16 +59,16 @@ enum wxMediaCtrlPlayerControls want to loop the media, for example, catch the @c EVT_MEDIA_FINISHED and play there instead). Processes a @c wxEVT_MEDIA_STOP event type. - @event{EVT_MEDIA_FINISHED(id\, func)} + @event{EVT_MEDIA_FINISHED(id, func)} Sent when a media has finished playing in a wxMediaCtrl. Processes a @c wxEVT_MEDIA_FINISHED event type. - @event{EVT_MEDIA_STATECHANGED(id\, func)} + @event{EVT_MEDIA_STATECHANGED(id, func)} Sent when a media has switched its state (from any media state). Processes a @c wxEVT_MEDIA_STATECHANGED event type. - @event{EVT_MEDIA_PLAY(id\, func)} + @event{EVT_MEDIA_PLAY(id, func)} Sent when a media has switched to the @c wxMEDIASTATE_PLAYING state. Processes a @c wxEVT_MEDIA_PLAY event type. - @event{EVT_MEDIA_PAUSE(id\, func)} + @event{EVT_MEDIA_PAUSE(id, func)} Sent when a media has switched to the @c wxMEDIASTATE_PAUSED state. Processes a @c wxEVT_MEDIA_PAUSE event type. @endEventTable diff --git a/interface/wx/toplevel.h b/interface/wx/toplevel.h index 1897a8a96ea5..90f9afd3d71f 100644 --- a/interface/wx/toplevel.h +++ b/interface/wx/toplevel.h @@ -60,7 +60,7 @@ enum internal top level window list. @beginEventEmissionTable - @event{EVT_MAXIMIZE(id, func)} + @event{EVT_MAXIMIZE(func)} Process a @c wxEVT_MAXIMIZE event. See wxMaximizeEvent. @event{EVT_MOVE(func)} Process a @c wxEVT_MOVE event, which is generated when a window is moved. @@ -75,7 +75,7 @@ enum See wxMoveEvent. @event{EVT_SHOW(func)} Process a @c wxEVT_SHOW event. See wxShowEvent. - @event{EVT_FULLSCREEN(id, func)} + @event{EVT_FULLSCREEN(func)} Process a @c wxEVT_FULLSCREEN event. See wxFullScreenEvent. @endEventTable diff --git a/interface/wx/window.h b/interface/wx/window.h index 35811ece7a1f..2552fae5b281 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -282,7 +282,7 @@ enum wxWindowVariant @endExtraStyleTable @beginEventEmissionTable - @event{EVT_ACTIVATE(id, func)} + @event{EVT_ACTIVATE(func)} Process a @c wxEVT_ACTIVATE event. See wxActivateEvent. @event{EVT_CHILD_FOCUS(func)} Process a @c wxEVT_CHILD_FOCUS event. See wxChildFocusEvent. From 1f5d7fb8946fabc3d5e340bad4c357414cbb64c5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 30 Oct 2024 16:12:14 +0100 Subject: [PATCH 146/416] Fix crash in wxPropertyGrid with wxGTK3 after recent change Since the recent 27fe76fcbf (Fix wxPropGrid editor appearance after DPI change, 2024-10-20) creating wxPropertyGrid in wxGTK immediately crashed if there was no selection in it. Check that we have a non-null selected property before calling RefreshProperty() with it to avoid this. See #24898, #25286. (cherry picked from commit 790aa18f4137d78116dd2cccbe77b301f5c9b40f) --- docs/changes.txt | 4 ++++ src/propgrid/propgrid.cpp | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 4663ec5aaedb..c41419a7244b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -256,6 +256,10 @@ All: - Update Brazilian Portuguese translations (Felipe). - Ensure that all headers are installed by CMake (Maarten Bent, #25266). +All (GUI): + +- Fix crash when using wxPropertyGrid on high DPI screen (#25286). + 3.2.7: (released 2025-03-20) ---------------------------- diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 9b028785d7ed..13e28de36689 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -1351,7 +1351,8 @@ void wxPropertyGrid::OnDPIChanged(wxDPIChangedEvent &event) CalculateFontAndBitmapStuff(m_vspacing); Refresh(); - RefreshProperty(GetSelection()); + if ( wxPGProperty* const selected = GetSelection() ) + RefreshProperty(selected); event.Skip(); } From 45323d201af8713c264aebaa89cb85b53d295bb8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 4 Apr 2025 12:59:37 +0200 Subject: [PATCH 147/416] Put title before "wxWidgets" in HTML doc pages titles This allows to see more of the title when the string is too long to be shown fully. See #25287. (cherry picked from commit b9b6c20d0b07f51370aabcd0f7ae2a801b0d8d80) --- docs/doxygen/custom_header.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/doxygen/custom_header.html b/docs/doxygen/custom_header.html index c2e7c56b744f..f42479e7c214 100644 --- a/docs/doxygen/custom_header.html +++ b/docs/doxygen/custom_header.html @@ -3,7 +3,7 @@ -$projectname: $title +$title | $projectname $title From 267e4f0ecb560badd39fa1c79068447904b78b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Thu, 3 Apr 2025 18:52:25 +0200 Subject: [PATCH 148/416] Add wxVector(std::initializer_list list) ctor Improve compatibility with std::vector<> by adding std::initializer_list constructor. Closes #25290. --- docs/changes.txt | 4 +++- include/wx/vector.h | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index c41419a7244b..2a487c084fcd 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -19,7 +19,8 @@ theory, this section describes such changes as they exist in practice: wxArrayString. Such problems can be fixed by explicitly specifying the class to use but it is also possible to predefine wxNO_INITIALIZER_LIST to disable support for std::initializer_list<> in wxWidgets and fix compilation without - modifying the application code. + modifying the application code. wxWidgets 3.2.8 extended initializer_list<> + support to wxVector, so the same considerations apply to it too. INCOMPATIBLE CHANGES SINCE 3.0.x: @@ -253,6 +254,7 @@ Changes in behaviour which may result in build errors All: +- Allow initializing wxVector<> from std::initializer_list<> (#25290). - Update Brazilian Portuguese translations (Felipe). - Ensure that all headers are installed by CMake (Maarten Bent, #25266). diff --git a/include/wx/vector.h b/include/wx/vector.h index 25ab08edaeed..6c3aedd41887 100644 --- a/include/wx/vector.h +++ b/include/wx/vector.h @@ -19,6 +19,10 @@ #include #include +#ifdef wxHAVE_INITIALIZER_LIST + #include +#endif + #define wxVector std::vector template inline void wxVectorSort(wxVector& v) @@ -345,6 +349,11 @@ class wxVector assign(first, last); } +#ifdef wxHAVE_INITIALIZER_LIST + template + wxVector(std::initializer_list list) : wxVector(list.begin(), list.end()) {} +#endif + ~wxVector() { clear(); From 195dc18d4f25ba87a8b2f1b713bf03fc864f38f7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 4 Apr 2025 13:22:12 +0200 Subject: [PATCH 149/416] Fix third party libraries build with Xcode 16.3 Update submodules to include fixes for building with this Xcode version. --- docs/changes.txt | 4 ++++ src/png | 2 +- src/zlib | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 2a487c084fcd..9ba97d80937a 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,10 @@ All (GUI): - Fix crash when using wxPropertyGrid on high DPI screen (#25286). +wxOSX: + +- Fix building third party libraries with Xcode 16.3 (David Connet). + 3.2.7: (released 2025-03-20) ---------------------------- diff --git a/src/png b/src/png index d675c669c825..f92fe93c7c90 160000 --- a/src/png +++ b/src/png @@ -1 +1 @@ -Subproject commit d675c669c8250b7da55747c81a5bd01504449e6e +Subproject commit f92fe93c7c909018f570a0c2bc360bc980a2845d diff --git a/src/zlib b/src/zlib index a6c8900ecb9d..dd7fc8c51e72 160000 --- a/src/zlib +++ b/src/zlib @@ -1 +1 @@ -Subproject commit a6c8900ecb9da7ac0d2a67467258fd4c1814b780 +Subproject commit dd7fc8c51e7245d3a78c317babcbc00802efe5ab From 1fd68eec202b45757d7f6167fc6bfcecca0de9ae Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Mon, 7 Apr 2025 11:11:47 +0300 Subject: [PATCH 150/416] Compare return value of GetWheelAxis() to enum values, not 0 (cherry picked from commit f42bd8893148e7e559cd90aa6b3c6273e9b5d1fb) --- src/common/combocmn.cpp | 2 +- src/generic/scrlwing.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index e0940a5eba70..9397f3ad2cd5 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -1810,7 +1810,7 @@ void wxComboCtrlBase::HandleNormalMouseEvent( wxMouseEvent& event ) // relay (some) mouse events to the popup m_popup->GetEventHandler()->ProcessEvent(event); } - else if ( event.GetWheelAxis() == 0 && + else if ( event.GetWheelAxis() == wxMOUSE_WHEEL_VERTICAL && event.GetWheelRotation() != 0 && event.GetModifiers() == 0 ) { diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index 93456bcd1af5..41fb25c181ef 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -1024,7 +1024,10 @@ void wxScrollHelperBase::HandleOnMouseWheel(wxMouseEvent& event) wxScrollWinEvent newEvent; newEvent.SetPosition(0); - newEvent.SetOrientation( event.GetWheelAxis() == 0 ? wxVERTICAL : wxHORIZONTAL); + newEvent.SetOrientation + ( + event.GetWheelAxis() == wxMOUSE_WHEEL_VERTICAL ? wxVERTICAL : wxHORIZONTAL + ); newEvent.SetEventObject(m_win); if ( event.GetWheelAxis() == wxMOUSE_WHEEL_HORIZONTAL ) From 8a3460c97f688b3729f7a3110cced8a927a24ff3 Mon Sep 17 00:00:00 2001 From: taler21 <99262969+taler21@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:05:41 +0200 Subject: [PATCH 151/416] Fix padding of wxMenu in high DPI under Windows 11 Don't use the workaround introduced in f6e31dab42 (Improve padding of wxMenu and wxMenuItem in high DPI under MSW, 2025-01-24) any longer under Windows 11. The incorrect behavior of the native control has been fixed there. See #25117, #25302. (cherry picked from commit 4111ebb73679330463a2b7081586e3d6a4e72e5d) --- docs/changes.txt | 4 ++++ src/msw/frame.cpp | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 9ba97d80937a..93ee781848bb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,10 @@ All (GUI): - Fix crash when using wxPropertyGrid on high DPI screen (#25286). +wxMSW: + +- Fix menu padding regression in high DPI under Windows 11 (taler21, #25117). + wxOSX: - Fix building third party libraries with Xcode 16.3 (David Connet). diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 4046b4efa897..c34ee7e0d6b8 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -848,9 +848,11 @@ HandleMenuMessage(WXLRESULT* result, case WM_MENUBAR_MEASUREMENUITEM: if ( MenuBarMeasureMenuItem* const measureMenuItem = (MenuBarMeasureMenuItem*)lParam ) { - // We only need to handle this message for a workaround when - // using non-standard DPI. - if ( !(w->GetDPIScaleFactor() > 1.0) ) + // We only need to handle this message to work around the + // incorrect behavior of the native control not scaling its + // padding at high DPI, which is fixed in Windows 11. + if ( !(wxGetWinVersion() <= wxWinVersion_10 && + w->GetDPIScaleFactor() > 1.0) ) break; MEASUREITEMSTRUCT& mis = measureMenuItem->mis; From a087ce479ca1c77cd4f4c9644672af7eca60413e Mon Sep 17 00:00:00 2001 From: David Langhals Date: Mon, 11 Nov 2024 15:21:31 +0100 Subject: [PATCH 152/416] Add mouse scrolling support to generic wxSpinCtrl Allow using mouse wheel to change the value of the control, just as it's already possible to do it in the native wxSpinCtrl. See #24935, #25300. (cherry picked from commit 0aa14d33b5e78e60e8280444a0afe8b7d9355317) --- docs/changes.txt | 1 + include/wx/generic/spinctlg.h | 1 + src/generic/spinctlg.cpp | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 93ee781848bb..044a579489e1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -265,6 +265,7 @@ All (GUI): wxMSW: - Fix menu padding regression in high DPI under Windows 11 (taler21, #25117). +- Allow using mouse wheel in wxSpinCtrlDouble (David Langhals, #24935). wxOSX: diff --git a/include/wx/generic/spinctlg.h b/include/wx/generic/spinctlg.h index 594a4d02ed1f..d5a1d4914402 100644 --- a/include/wx/generic/spinctlg.h +++ b/include/wx/generic/spinctlg.h @@ -95,6 +95,7 @@ class WXDLLIMPEXP_CORE wxSpinCtrlGenericBase void OnSpinButton(wxSpinEvent& event); void OnTextLostFocus(wxFocusEvent& event); void OnTextChar(wxKeyEvent& event); + void OnMouseWheel(wxMouseEvent& event); // this window itself is used only as a container for its sub windows so it // shouldn't accept the focus at all and any attempts to explicitly set diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 0dc60a91025d..26bf3af12021 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -390,6 +390,7 @@ bool wxSpinCtrlGenericBase::SetBackgroundColour(const wxColour& colour) wxBEGIN_EVENT_TABLE(wxSpinCtrlGenericBase, wxSpinCtrlBase) EVT_CHAR(wxSpinCtrlGenericBase::OnTextChar) EVT_KILL_FOCUS(wxSpinCtrlGenericBase::OnTextLostFocus) + EVT_MOUSEWHEEL(wxSpinCtrlGenericBase::OnMouseWheel) wxEND_EVENT_TABLE() void wxSpinCtrlGenericBase::OnSpinButton(wxSpinEvent& event) @@ -477,6 +478,34 @@ void wxSpinCtrlGenericBase::OnTextChar(wxKeyEvent& event) DoSendEvent(); } +void wxSpinCtrlGenericBase::OnMouseWheel(wxMouseEvent& event) +{ + if ( event.GetWheelAxis() != wxMOUSE_WHEEL_VERTICAL || event.GetWheelRotation() == 0 ) + { + event.Skip(); + return; + } + + double value = m_value; + + if( event.GetWheelRotation() > 0 ) + { + value += m_increment; + } + else if ( event.GetWheelRotation() < 0 ) + { + value -= m_increment; + } + + value = AdjustToFitInRange(value); + + SyncSpinToText(SendEvent_None); + + // No need to send event, it was already generated by wxTextCtrl itself. + if ( DoSetValue(value, SendEvent_None) ) + DoSendEvent(); +} + // ---------------------------------------------------------------------------- // Textctrl functions // ---------------------------------------------------------------------------- From 12e7d6bc107028faef173d11e3e53cff996f31ff Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 10 Apr 2025 16:23:21 +0200 Subject: [PATCH 153/416] Update comment in wxEventLoopBase::Run() This comment got out of sync with the code after some previous refactoring, fix it to refer to the function actually being called below. No real changes. (cherry picked from commit 86e277127685955e834c792a48bffb0157f95d48) --- src/common/evtloopcmn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/evtloopcmn.cpp b/src/common/evtloopcmn.cpp index 0ff7dfbe823c..c197250d67c9 100644 --- a/src/common/evtloopcmn.cpp +++ b/src/common/evtloopcmn.cpp @@ -70,7 +70,7 @@ int wxEventLoopBase::Run() // event loops are not recursive, you need to create another loop! wxCHECK_MSG( !IsInsideRun(), -1, wxT("can't reenter a message loop") ); - // ProcessIdle() and ProcessEvents() below may throw so the code here should + // Calling DoRun() below may throw so the code here should // be exception-safe, hence we must use local objects for all actions we // should undo wxEventLoopActivator activate(this); From 2b63ae7a5ff1205a2293ccc581eecbf76001c4d9 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 10 Apr 2025 16:20:59 +0200 Subject: [PATCH 154/416] Call OnExceptionInMainLoop() in wxGTK if idle event handler throws As idle events are (only) generated while an event loop is running, it makes sense to call OnExceptionInMainLoop() if a handler for such an event throws an exception. This was already the case in wxMSW, where the exception was caught in wxEventLoopManual code from where ProcessIdle() was called, but not wxGTK, where it was called directly from an extern "C" callback. And while catching the exception earlier does no harm in wxMSW, it fixes the problem in wxGTK. See #25312. (cherry picked from commit ea351362a34531f7828701e5fce401f5db78833d) --- docs/changes.txt | 4 ++++ src/common/appbase.cpp | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 044a579489e1..9a77e98c9dc3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,10 @@ All (GUI): - Fix crash when using wxPropertyGrid on high DPI screen (#25286). +wxGTK: + +- Fix handling exceptions in wxApp idle event handler (#25312). + wxMSW: - Fix menu padding regression in high DPI under Windows 11 (taler21, #25117). diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index 40154b15167a..4c30c5fd3de9 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -446,7 +446,10 @@ bool wxAppConsoleBase::ProcessIdle() // synthesize an idle event and check if more of them are needed wxIdleEvent event; event.SetEventObject(this); - ProcessEvent(event); + + // Don't let exceptions propagate from the user-defined handler, we may be + // called from an extern "C" callback (e.g. this is the case in wxGTK). + SafelyProcessEvent(event); #if wxUSE_LOG // flush the logged messages if any (do this after processing the events From 600803a6dc71a6d8ca5fea746508fed0c93d6df6 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Fri, 11 Apr 2025 06:24:45 -0400 Subject: [PATCH 155/416] Add @USER@ macro to HTML and RichText printers Replace it with the result of wxGetUserName(). See #25318. (cherry picked from commit abb59d31034977b5a026a749513e346843174f7c) --- docs/changes.txt | 1 + interface/wx/html/htmprint.h | 18 +++++++++++++----- interface/wx/richtext/richtextprint.h | 2 ++ src/html/htmprint.cpp | 2 ++ src/richtext/richtextprint.cpp | 2 ++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 9a77e98c9dc3..7c783b4aad99 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -261,6 +261,7 @@ All: All (GUI): - Fix crash when using wxPropertyGrid on high DPI screen (#25286). +- Add "@USER@" macro to HTML and richtext printing (Blake-Madden, #25318). wxGTK: diff --git a/interface/wx/html/htmprint.h b/interface/wx/html/htmprint.h index cb6b86822e34..2268ebb0e373 100644 --- a/interface/wx/html/htmprint.h +++ b/interface/wx/html/htmprint.h @@ -320,11 +320,13 @@ class wxHtmlEasyPrinting : public wxObject /** Set page footer. The following macros can be used inside it: - @@DATE@ is replaced by the current date in default format - @@PAGENUM@ is replaced by page number - @@PAGESCNT@ is replaced by total number of pages - @@TIME@ is replaced by the current time in default format - @@TITLE@ is replaced with the title of the document + - @@DATE@ is replaced by the current date in default format + - @@PAGENUM@ is replaced by page number + - @@PAGESCNT@ is replaced by total number of pages + - @@TIME@ is replaced by the current time in default format + - @@TITLE@ is replaced with the title of the document + - @@USER@ is replaced with the user's name (support for this + macro was added in wxWidgets 3.2.8) @param footer HTML text to be used as footer. @@ -340,6 +342,8 @@ class wxHtmlEasyPrinting : public wxObject - @@PAGESCNT@ is replaced by total number of pages - @@TIME@ is replaced by the current time in default format - @@TITLE@ is replaced with the title of the document + - @@USER@ is replaced with the user's name (support for this + macro was added in wxWidgets 3.2.8) @param header HTML text to be used as header. @@ -447,6 +451,8 @@ class wxHtmlPrintout : public wxPrintout - @@PAGESCNT@ is replaced by total number of pages - @@TIME@ is replaced by the current time in default format - @@TITLE@ is replaced with the title of the document + - @@USER@ is replaced with the user's name (support for this + macro was added in wxWidgets 3.2.8) @param footer HTML text to be used as footer. @@ -462,6 +468,8 @@ class wxHtmlPrintout : public wxPrintout - @@PAGESCNT@ is replaced by total number of pages - @@TIME@ is replaced by the current time in default format - @@TITLE@ is replaced with the title of the document + - @@USER@ is replaced with the user's name (support for this + macro was added in wxWidgets 3.2.8) @param header HTML text to be used as header. diff --git a/interface/wx/richtext/richtextprint.h b/interface/wx/richtext/richtextprint.h index 44ecaaa9203e..5bc6aada5235 100644 --- a/interface/wx/richtext/richtextprint.h +++ b/interface/wx/richtext/richtextprint.h @@ -50,6 +50,8 @@ enum wxRichTextPageLocation { - @@TIME@@: the current time. - @@TITLE@@: the title of the document, as passed to the wxRichTextPrinting or wxRichTextLayout constructor. + - @@USER@@: the user's name (support for this macro was added in wxWidgets + 3.2.8) @library{wxrichtext} @category{richtext} diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index 85d8c213d173..675369bccd6e 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -574,6 +574,8 @@ wxString wxHtmlPrintout::TranslateHeader(const wxString& instr, int page) r.Replace(wxT("@TIME@"), wxEmptyString); #endif + r.Replace(wxT("@USER@"), wxGetUserName()); + r.Replace(wxT("@TITLE@"), GetTitle()); return r; diff --git a/src/richtext/richtextprint.cpp b/src/richtext/richtextprint.cpp index 9c7b5ee4960e..46fe19586988 100644 --- a/src/richtext/richtextprint.cpp +++ b/src/richtext/richtextprint.cpp @@ -434,6 +434,8 @@ bool wxRichTextPrintout::SubstituteKeywords(wxString& str, const wxString& title str.Replace(wxT("@TIME@"), wxEmptyString); #endif + str.Replace("@USER@", wxGetUserName()); + str.Replace(wxT("@TITLE@"), title); return true; From b270f8b4ae986d3435417cddbac752efa2d0f3f0 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Fri, 11 Apr 2025 13:19:13 -0400 Subject: [PATCH 156/416] Fix page count display when there is only one page Don't show the number of pages as (unsigned)-1 when m_PageBreaks is empty. See #25320. (cherry picked from commit 6c75effb84b0d8d814c20520fc189ceff44e3b44) --- docs/changes.txt | 1 + src/html/htmprint.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 7c783b4aad99..813bf18641ba 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All (GUI): - Fix crash when using wxPropertyGrid on high DPI screen (#25286). - Add "@USER@" macro to HTML and richtext printing (Blake-Madden, #25318). +- Fix "@PAGECNT@" when there is only one page (Blake-Madden, #25320). wxGTK: diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index 675369bccd6e..3bd4accd2465 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -562,7 +562,7 @@ wxString wxHtmlPrintout::TranslateHeader(const wxString& instr, int page) num.Printf(wxT("%i"), page); r.Replace(wxT("@PAGENUM@"), num); - num.Printf(wxT("%lu"), (unsigned long)(m_PageBreaks.size() - 1)); + num.Printf(wxT("%lu"), (unsigned long)(m_PageBreaks.empty() ? 1 : m_PageBreaks.size() - 1)); r.Replace(wxT("@PAGESCNT@"), num); #if wxUSE_DATETIME From 02b91a9718593960f40761af2c0f35bc091c4c9e Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 12 Apr 2025 15:40:54 +0200 Subject: [PATCH 157/416] CMake: Fix lpthread linker warnings Link with Threads target instead of using CMAKE_THREAD_LIBS_INIT. Remove duplicate link from wxBase. Find the Threads package in wxWidgetsConfig.cmake so exported Threads targets exist. See #25310 --- build/cmake/functions.cmake | 6 +++--- build/cmake/lib/base/CMakeLists.txt | 3 --- build/cmake/wxWidgetsConfig.cmake.in | 3 +++ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index ee73cfd4c9c8..7a469862b586 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -204,10 +204,10 @@ function(wx_set_common_target_properties target_name) target_compile_definitions(${target_name} PUBLIC "-D_FILE_OFFSET_BITS=64") endif() - if(CMAKE_THREAD_LIBS_INIT) - target_compile_options(${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT}) - target_link_libraries(${target_name} PUBLIC ${CMAKE_THREAD_LIBS_INIT}) + if(wxUSE_THREADS) + target_link_libraries(${target_name} PRIVATE Threads::Threads) endif() + wx_set_source_groups() endfunction() diff --git a/build/cmake/lib/base/CMakeLists.txt b/build/cmake/lib/base/CMakeLists.txt index 7f60e93f5273..2966614eecaa 100644 --- a/build/cmake/lib/base/CMakeLists.txt +++ b/build/cmake/lib/base/CMakeLists.txt @@ -48,9 +48,6 @@ if(wxUSE_LIBICONV) wx_lib_include_directories(wxbase ${ICONV_INCLUDE_DIR}) wx_lib_link_libraries(wxbase PRIVATE ${ICONV_LIBRARIES}) endif() -if(wxUSE_THREADS AND CMAKE_THREAD_LIBS_INIT) - wx_lib_link_libraries(wxbase PRIVATE ${CMAKE_THREAD_LIBS_INIT}) -endif() if(APPLE) wx_lib_link_libraries(wxbase diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in index b25110982898..efdc361505d5 100644 --- a/build/cmake/wxWidgetsConfig.cmake.in +++ b/build/cmake/wxWidgetsConfig.cmake.in @@ -143,6 +143,9 @@ if(TARGET wx::wxgl) find_package(OpenGL QUIET) endif() +# make sure Threads targets are available +find_package(Threads QUIET) + # if no components are specified in find_package, check all of them if(NOT @PROJECT_NAME@_FIND_COMPONENTS) set(@PROJECT_NAME@_FIND_COMPONENTS ${@PROJECT_NAME@_COMPONENTS}) From 267cf6dda459b666a9c88f584b8c93225f7ac1eb Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 12 Apr 2025 15:41:57 +0200 Subject: [PATCH 158/416] CMake: Search for deprecated timezone function last See #25310 --- build/cmake/setup.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/setup.cmake b/build/cmake/setup.cmake index f0d3eec29575..3ac663e2dd27 100644 --- a/build/cmake/setup.cmake +++ b/build/cmake/setup.cmake @@ -629,7 +629,7 @@ check_include_file(wcstr.h HAVE_WCSTR_H) if(wxUSE_DATETIME) # check for timezone variable # doesn't exist under Darwin / Mac OS X which uses tm_gmtoff instead - foreach(timezone_def timezone _timezone __timezone) + foreach(timezone_def _timezone __timezone timezone) wx_check_cxx_source_compiles(" int tz; tz = ${timezone_def};" From 806ac4b441beaa97899cdbc8cfddc64c6e0a1ad7 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 12 Apr 2025 16:25:19 +0200 Subject: [PATCH 159/416] CMake: Build locale files in sub directory See #25310 --- build/cmake/{locale.cmake => locale/CMakeLists.txt} | 0 build/cmake/main.cmake | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename build/cmake/{locale.cmake => locale/CMakeLists.txt} (100%) diff --git a/build/cmake/locale.cmake b/build/cmake/locale/CMakeLists.txt similarity index 100% rename from build/cmake/locale.cmake rename to build/cmake/locale/CMakeLists.txt diff --git a/build/cmake/main.cmake b/build/cmake/main.cmake index d40423ba91dd..b4958e02d43b 100644 --- a/build/cmake/main.cmake +++ b/build/cmake/main.cmake @@ -18,8 +18,8 @@ include(build/cmake/toolkit.cmake) # Platform/toolkit settings include(build/cmake/options.cmake) # User options include(build/cmake/init.cmake) # Init various global build vars include(build/cmake/pch.cmake) # Precompiled header support -include(build/cmake/locale.cmake) # Locale files +add_subdirectory(build/cmake/locale locale) add_subdirectory(build/cmake/lib libs) add_subdirectory(build/cmake/utils utils) From d82e14233af9049f0218c3724fd646d2ff79d107 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 12 Apr 2025 16:26:10 +0200 Subject: [PATCH 160/416] CMake: Add more c++ standard options The same values as CMAKE_CXX_STANDARD supports. See #25310 --- build/cmake/options.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 2332dde04218..605b9008d47b 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -57,7 +57,7 @@ if(NOT MSVC OR MSVC_VERSION GREATER 1800) set(wxCXX_STANDARD_DEFAULT COMPILER_DEFAULT) endif() wx_option(wxBUILD_CXX_STANDARD "C++ standard used to build wxWidgets targets" - ${wxCXX_STANDARD_DEFAULT} STRINGS COMPILER_DEFAULT 98 11 14 17 20) + ${wxCXX_STANDARD_DEFAULT} STRINGS COMPILER_DEFAULT 98 11 14 17 20 23 26) endif() if(UNIX) From 2453dcb10cd0b6a117e4139820e5b7d34d0c63ef Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 12 Apr 2025 16:27:52 +0200 Subject: [PATCH 161/416] CMake: Fix checking wxQT cairo graphics context Fixes #25305 --- build/cmake/init.cmake | 5 +++++ build/cmake/options.cmake | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index cb6b533b50b5..3923045fdf1e 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -645,6 +645,11 @@ if(wxUSE_GUI) if(NOT CAIRO_FOUND) message(WARNING "Cairo not found, Cairo renderer won't be available") wx_option_force_value(wxUSE_CAIRO OFF) + if(WXQT AND NOT WIN32) + # Cairo is the only renderer for wxGraphicsContext + message(WARNING "No graphics renderer found, wxGraphicsContext won't be available") + wx_option_force_value(wxUSE_GRAPHICS_CONTEXT OFF) + endif() endif() endif() diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 605b9008d47b..c9dc7c852452 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -305,7 +305,7 @@ else() endif() endif() -if(WXGTK) +if(WXGTK OR (WXQT AND NOT WIN32)) set(wxUSE_CAIRO_DEFAULT ON) else() set(wxUSE_CAIRO_DEFAULT OFF) From 471bc0fddc5cba95e7b1486c4ce1ca2f3b0d6e7b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 14 Apr 2025 19:09:08 +0200 Subject: [PATCH 162/416] Remove unused version assignments for inline functions No symbols are exported for the inline functions, so they can have no version and hence don't define one for them -- this is useless and confusing, even if harmless. --- version-script.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/version-script.in b/version-script.in index 8f7468c90ae6..87e8d866a6cb 100644 --- a/version-script.in +++ b/version-script.in @@ -38,8 +38,6 @@ @WX_VERSION_TAG@.6 { extern "C++" { "wxTranslations::AddAvailableCatalog(wxString const&, wxLanguage)"; - "wxEventTableEntry::wxEventTableEntry(wxEventTableEntry const&)"; - "wxSystemSettingsNative::SelectLightDark(wxColour, wxColour)"; }; }; @@ -59,9 +57,6 @@ @WX_VERSION_TAG@.2 { extern "C++" { "wxUILocale::GetSystemLocaleId()"; - "wxWithImages::GetImageLogicalSize(wxWindow const*, int)"; - "wxWithImages::GetImageLogicalSize(wxWindow const*, int, int&, int&)"; - "wxWithImages::GetImageBitmapFor(wxWindow const*, int)"; }; }; From ed70ea9e988cdff84d29c9e999d9fca3c08b681b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 15 Apr 2025 02:06:32 +0200 Subject: [PATCH 163/416] Define wxHAVE_VERSION_SCRIPT if linker supports version script This is not used yet, but will be soon. --- acinclude.m4 | 1 + configure | 2 ++ setup.h.in | 3 +++ 3 files changed, 6 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 66f91107430c..48bc4c71e5e6 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -552,6 +552,7 @@ AC_DEFUN([WX_VERSIONED_SYMBOLS], ]) if test $wx_cv_version_script = yes ; then + AC_DEFINE(wxHAVE_VERSION_SCRIPT) LDFLAGS_VERSIONING="-Wl,--version-script,$1" if test $wx_cv_undefined_version = yes ; then LDFLAGS_VERSIONING="$LDFLAGS_VERSIONING -Wl,--undefined-version" diff --git a/configure b/configure index 1f86314de607..75beb5a8fad6 100755 --- a/configure +++ b/configure @@ -33818,6 +33818,8 @@ fi $as_echo "$wx_cv_version_script" >&6; } if test $wx_cv_version_script = yes ; then + $as_echo "#define wxHAVE_VERSION_SCRIPT 1" >>confdefs.h + LDFLAGS_VERSIONING="-Wl,--version-script,\$(wx_top_builddir)/version-script" if test $wx_cv_undefined_version = yes ; then LDFLAGS_VERSIONING="$LDFLAGS_VERSIONING -Wl,--undefined-version" diff --git a/setup.h.in b/setup.h.in index 985b01d5454d..3d95b29e1444 100644 --- a/setup.h.in +++ b/setup.h.in @@ -17,6 +17,9 @@ /* the installation location prefix from configure */ #undef wxINSTALL_PREFIX +/* Is linker version script used? */ +#undef wxHAVE_VERSION_SCRIPT + /* Define if ssize_t type is available. */ #undef HAVE_SSIZE_T From f3eb19ce2efa839c0d3e8dc922445cbb49bd9e5d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 14 Apr 2025 19:01:57 +0200 Subject: [PATCH 164/416] Fix ABI breakage for versioned symbols in 3.2.7 Add 3.2 versions of the symbols whose version was "fixed" in ed7defadd2 (Fix multiple errors in the version script, 2025-01-01), breaking ABI as they were not available in their old version any more. Add wxELF_VERSION() macro which allows to define the symbol with the given ELF version and use it, in conjunction with the existing version in the version script, to have both WXU_3.2.N and WXU_3.2 versions of all the symbols affected by the changes in that commit. Closes #25327. --- docs/changes.txt | 1 + include/wx/private/elfversion.h | 58 +++++++++++++++++++++++++++++++++ src/common/translation.cpp | 5 +++ src/common/uilocale.cpp | 4 +++ src/gtk/filedlg.cpp | 3 ++ src/unix/glegl.cpp | 4 +++ version-script.in | 22 +++---------- 7 files changed, 79 insertions(+), 18 deletions(-) create mode 100644 include/wx/private/elfversion.h diff --git a/docs/changes.txt b/docs/changes.txt index 813bf18641ba..0ec6b33f9f9a 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -257,6 +257,7 @@ All: - Allow initializing wxVector<> from std::initializer_list<> (#25290). - Update Brazilian Portuguese translations (Felipe). - Ensure that all headers are installed by CMake (Maarten Bent, #25266). +- Fix ABI breakage for versioned symbols in 3.2.7 under Unix (#25327). All (GUI): diff --git a/include/wx/private/elfversion.h b/include/wx/private/elfversion.h new file mode 100644 index 000000000000..5ff25a9eac98 --- /dev/null +++ b/include/wx/private/elfversion.h @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/private/elfversion.h +// Purpose: Helper macro for assigning ELF version to a symbol. +// Author: Vadim Zeitlin +// Created: 2025-04-14 +// Copyright: (c) 2025 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PRIVATE_ELFVERSION_H_ +#define _WX_PRIVATE_ELFVERSION_H_ + +// We suppose that if version script is supported, then .symver assembler +// directive is also supported. +#ifdef wxHAVE_VERSION_SCRIPT + // Prefer to use the attribute if it is available, as it works with LTO, + // unlike the assembler directive. + #ifdef __has_attribute + #if __has_attribute(__symver__) + #define wxELF_SYMVER(sym, symver) __attribute__((__symver__(symver))) + #endif + #endif + + #ifndef wxELF_SYMVER + #define wxELF_SYMVER(sym, symver) __asm__(".symver " sym "," symver); + #endif + + // Our version tag depends on whether we're using Unicode or not. + #if wxUSE_UNICODE + #define wxMAKE_ELF_VERSION_TAG(ver) "WXU_" ver + #else + #define wxMAKE_ELF_VERSION_TAG(ver) "WX_" ver + #endif + + // This macro is used to repair ABI compatibility problems with the symbols + // versions: unfortunately, some symbols were initially added with the + // wrong "3.2" version tag because their definitions in the version script + // were erroneous, and, even more unfortunately, they were later corrected + // to use a different version tag, which made the symbols with the old + // version unavailable in the shared library. This macro allows to define + // both the old, compatible version ("3.2") and the new ("3.2.N") one for + // the given symbol to restore ABI compatibility with the previous releases + // without breaking it with the release containing the corrected version. + // + // The parameters are the mangled symbol name (the simplest way to get is + // probably to use nm or readelf on the object file or library) and the + // part of the version after "WX[U]_", i.e. the version number itself. + // + // Note that this macro takes strings, not symbols, and that it includes + // the trailing semicolon for consistency with the empty version below. + #define wxELF_VERSION_COMPAT(sym, ver) \ + wxELF_SYMVER(sym, sym "@" wxMAKE_ELF_VERSION_TAG("3.2")) \ + wxELF_SYMVER(sym, sym "@@" wxMAKE_ELF_VERSION_TAG(ver)) +#else + #define wxELF_VERSION_COMPAT(sym, ver) +#endif + +#endif // _WX_PRIVATE_ELFVERSION_H_ diff --git a/src/common/translation.cpp b/src/common/translation.cpp index dd0f6f7ad56b..4dec2da659e0 100644 --- a/src/common/translation.cpp +++ b/src/common/translation.cpp @@ -49,6 +49,8 @@ #include "wx/private/threadinfo.h" #include "wx/uilocale.h" +#include "wx/private/elfversion.h" + #ifdef __WINDOWS__ #include "wx/dynlib.h" #include "wx/scopedarray.h" @@ -1420,11 +1422,13 @@ bool wxTranslations::AddCatalog(const wxString& domain, } #endif // !wxUSE_UNICODE +wxELF_VERSION_COMPAT("_ZN14wxTranslations19AddAvailableCatalogERK8wxString", "3.2.3") bool wxTranslations::AddAvailableCatalog(const wxString& domain) { return AddAvailableCatalog(domain, wxLANGUAGE_ENGLISH_US); } +wxELF_VERSION_COMPAT("_ZN14wxTranslations19AddAvailableCatalogERK8wxString10wxLanguage", "3.2.6") bool wxTranslations::AddAvailableCatalog(const wxString& domain, wxLanguage msgIdLanguage) { return DoAddCatalog(domain, msgIdLanguage) == Translations_Found; @@ -1563,6 +1567,7 @@ wxString wxTranslations::GetBestTranslation(const wxString& domain, return lang; } +wxELF_VERSION_COMPAT("_ZN14wxTranslations27GetBestAvailableTranslationERK8wxString", "3.2.3") wxString wxTranslations::GetBestAvailableTranslation(const wxString& domain) { // Determine the best language from the ones with actual translation file: diff --git a/src/common/uilocale.cpp b/src/common/uilocale.cpp index b620829d4050..7b33ae68096a 100644 --- a/src/common/uilocale.cpp +++ b/src/common/uilocale.cpp @@ -32,6 +32,7 @@ #include "wx/language.h" #endif +#include "wx/private/elfversion.h" #include "wx/private/uilocale.h" #define TRACE_I18N wxS("i18n") @@ -612,6 +613,7 @@ wxString wxUILocale::GetLocalizedName(wxLocaleName name, wxLocaleForm form) cons } #if wxUSE_DATETIME +wxELF_VERSION_COMPAT("_ZNK10wxUILocale12GetMonthNameEN10wxDateTime5MonthENS0_9NameFlagsE", "3.2.3") wxString wxUILocale::GetMonthName(wxDateTime::Month month, wxDateTime::NameFlags flags) const { if (!m_impl) @@ -620,6 +622,7 @@ wxString wxUILocale::GetMonthName(wxDateTime::Month month, wxDateTime::NameFlags return m_impl->GetMonthName(month, flags); } +wxELF_VERSION_COMPAT("_ZNK10wxUILocale14GetWeekDayNameEN10wxDateTime7WeekDayENS0_9NameFlagsE", "3.2.3") wxString wxUILocale::GetWeekDayName(wxDateTime::WeekDay weekday, wxDateTime::NameFlags flags) const { if (!m_impl) @@ -677,6 +680,7 @@ wxUILocale::~wxUILocale() /* static */ +wxELF_VERSION_COMPAT("_ZN10wxUILocale17GetSystemLocaleIdEv", "3.2.2") wxLocaleIdent wxUILocale::GetSystemLocaleId() { wxUILocale defaultLocale(wxUILocaleImpl::CreateUserDefault()); diff --git a/src/gtk/filedlg.cpp b/src/gtk/filedlg.cpp index 20dc80b26a36..408ee20d2812 100644 --- a/src/gtk/filedlg.cpp +++ b/src/gtk/filedlg.cpp @@ -32,6 +32,8 @@ #include "wx/filefn.h" // ::wxGetCwd #include "wx/modalhook.h" +#include "wx/private/elfversion.h" + //----------------------------------------------------------------------------- // "clicked" for OK-button //----------------------------------------------------------------------------- @@ -500,6 +502,7 @@ void wxFileDialog::GTKSelectionChanged(const wxString& filename) UpdateExtraControlUI(); } +wxELF_VERSION_COMPAT("_ZN12wxFileDialog11AddShortcutERK8wxStringi", "3.2.1") bool wxFileDialog::AddShortcut(const wxString& directory, int WXUNUSED(flags)) { wxGtkError error; diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index 91e801a1fec2..627058066929 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -28,6 +28,8 @@ #include "wx/scopedptr.h" +#include "wx/private/elfversion.h" + #include "wx/gtk/private/wrapgdk.h" #include "wx/gtk/private/backend.h" #ifdef GDK_WINDOWING_WAYLAND @@ -633,6 +635,7 @@ wxGLCanvasEGL::~wxGLCanvasEGL() gs_alreadySetSwapInterval.erase(this); } +wxELF_VERSION_COMPAT("_ZN13wxGLCanvasEGL23CreateWaylandSubsurfaceEv", "3.2.3") void wxGLCanvasEGL::CreateWaylandSubsurface() { #ifdef GDK_WINDOWING_WAYLAND @@ -671,6 +674,7 @@ void wxGLCanvasEGL::CreateWaylandSubsurface() #endif } +wxELF_VERSION_COMPAT("_ZN13wxGLCanvasEGL24DestroyWaylandSubsurfaceEv", "3.2.3") void wxGLCanvasEGL::DestroyWaylandSubsurface() { #ifdef GDK_WINDOWING_WAYLAND diff --git a/version-script.in b/version-script.in index 87e8d866a6cb..03c39237c5e7 100644 --- a/version-script.in +++ b/version-script.in @@ -18,9 +18,10 @@ # }; # # If a symbols should have been added in this way, but is forgotten then it -# cannot be added in the next release. This is because it has already been -# released with the generic branch version due to the final wildcard below, -# and once released its version cannot be changed. +# cannot be added to the next release version tag, but we can workaround the +# problem by using wxELF_VERSION_COMPAT() macro in the source code. Note that +# this is why some version tags are defined here even if no symbols are +# assigned to them: they are used by that macro. # When adding a new section here, don't forget to modify the version in # build/bakefiles/version.bkl to indicate that new APIs have been added and @@ -36,35 +37,20 @@ # public symbols added in 3.2.6 (please keep in alphabetical order): @WX_VERSION_TAG@.6 { - extern "C++" { - "wxTranslations::AddAvailableCatalog(wxString const&, wxLanguage)"; - }; }; # public symbols added in 3.2.3 (please keep in alphabetical order): @WX_VERSION_TAG@.3 { - extern "C++" { - "wxGLCanvasEGL::CreateWaylandSubsurface()"; - "wxGLCanvasEGL::DestroyWaylandSubsurface()"; - "wxTranslations::AddAvailableCatalog(wxString const&)"; - "wxTranslations::GetBestAvailableTranslation(wxString const&)"; - "wxUILocale::GetMonthName(wxDateTime::Month, wxDateTime::NameFlags) const"; - "wxUILocale::GetWeekDayName(wxDateTime::WeekDay, wxDateTime::NameFlags) const"; - }; }; # public symbols added in 3.2.2 (please keep in alphabetical order): @WX_VERSION_TAG@.2 { - extern "C++" { - "wxUILocale::GetSystemLocaleId()"; - }; }; # public symbols added in 3.2.1 @WX_VERSION_TAG@.1 { extern "C++" { "wxApp::GTKAllowDiagnosticsControl()"; - "wxFileDialogBase::AddShortcut(wxString const&, int)"; }; }; From e6cafa6017602fd8d31a7f283d57c13009f2a817 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 15 Apr 2025 03:20:25 +0200 Subject: [PATCH 165/416] Allow disabling using ELF symbols versions It's possible that the latest changes result in some problems on the platforms where they were not tested, so provide a way to disable using symbol versions completely to allowing working around this if necessary. --- configure | 33 +++++++++++++++++++++++++++++++++ configure.in | 7 +++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 75beb5a8fad6..2a988cb90471 100755 --- a/configure +++ b/configure @@ -1156,6 +1156,7 @@ enable_macosx_arch enable_compat28 enable_compat30 enable_rpath +enable_symver enable_visibility enable_tls enable_repro_build @@ -2131,6 +2132,7 @@ Optional Features: --enable-compat28 enable wxWidgets 2.8 compatibility --disable-compat30 disable wxWidgets 3.0 compatibility --disable-rpath disable use of rpath for uninstalled builds + --disable-symver disable use of ELF symbols versioning even if supported --disable-visibility disable use of ELF symbols visibility even if supported --disable-tls disable use of compiler TLS support --enable-repro-build enable reproducible build mode @@ -6403,6 +6405,35 @@ fi + enablestring=disable + defaultval= + if test -z "$defaultval"; then + if test x"$enablestring" = xdisable; then + defaultval=yes + else + defaultval=no + fi + fi + + # Check whether --enable-symver was given. +if test "${enable_symver+set}" = set; then : + enableval=$enable_symver; + if test "$enableval" = yes; then + wx_cv_use_symver='wxUSE_ELF_SYMVER=yes' + else + wx_cv_use_symver='wxUSE_ELF_SYMVER=no' + fi + +else + + wx_cv_use_symver='wxUSE_ELF_SYMVER=${'DEFAULT_wxUSE_ELF_SYMVER":-$defaultval}" + +fi + + + eval "$wx_cv_use_symver" + + enablestring=disable defaultval= if test -z "$defaultval"; then @@ -33719,6 +33750,7 @@ fi if test "$wxUSE_SHARED" = "yes"; then + if test "$wxUSE_ELF_SYMVER" != "no"; then case "${host}" in *-*-cygwin* | *-*-mingw* ) @@ -33828,6 +33860,7 @@ $as_echo "$wx_cv_version_script" >&6; } ;; esac + fi if test "$wxUSE_VISIBILITY" != "no"; then diff --git a/configure.in b/configure.in index 431f3c3a8f8c..ffe1d71a9bb0 100644 --- a/configure.in +++ b/configure.in @@ -705,6 +705,7 @@ WX_ARG_DISABLE(compat30, [ --disable-compat30 disable wxWidgets 3.0 co WX_ARG_DISABLE(rpath, [ --disable-rpath disable use of rpath for uninstalled builds], wxUSE_RPATH) +WX_ARG_DISABLE(symver, [ --disable-symver disable use of ELF symbols versioning even if supported], wxUSE_ELF_SYMVER) WX_ARG_DISABLE(visibility, [ --disable-visibility disable use of ELF symbols visibility even if supported], wxUSE_VISIBILITY) WX_ARG_DISABLE(tls, [ --disable-tls disable use of compiler TLS support], wxUSE_COMPILER_TLS) @@ -4003,8 +4004,10 @@ dnl --- the marker for quick search, leave it here: SHARED_LIB_SETUP --- if test "$wxUSE_SHARED" = "yes"; then - dnl use versioned symbols if available on the platform - WX_VERSIONED_SYMBOLS([\$(wx_top_builddir)/version-script]) + dnl use versioned symbols if available on the platform and not disabled + if test "$wxUSE_ELF_SYMVER" != "no"; then + WX_VERSIONED_SYMBOLS([\$(wx_top_builddir)/version-script]) + fi dnl test for GCC's visibility support (sets CFLAGS_VISIBILITY, which is dnl assigned to CFLAGS and CXXFLAGS below) From ea91e3fb1249491b426ed45d904d80f7de61d8c4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 15 Apr 2025 03:50:21 +0200 Subject: [PATCH 166/416] Test for support for multiple ELF symbol versions in configure Instead of just checking whether we're using linker version script, test that we can use .symver directive and also test whether it can be used multiple times, as this is not the case with old binutils (2.30 gives an error for this, although 2.34 seems to be fine). --- acinclude.m4 | 1 - configure | 86 ++++++++++++++++++++++++++++++++- configure.in | 54 +++++++++++++++++++++ include/wx/private/elfversion.h | 17 +++++-- setup.h.in | 7 ++- 5 files changed, 156 insertions(+), 9 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 48bc4c71e5e6..66f91107430c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -552,7 +552,6 @@ AC_DEFUN([WX_VERSIONED_SYMBOLS], ]) if test $wx_cv_version_script = yes ; then - AC_DEFINE(wxHAVE_VERSION_SCRIPT) LDFLAGS_VERSIONING="-Wl,--version-script,$1" if test $wx_cv_undefined_version = yes ; then LDFLAGS_VERSIONING="$LDFLAGS_VERSIONING -Wl,--undefined-version" diff --git a/configure b/configure index 2a988cb90471..191cc091b67a 100755 --- a/configure +++ b/configure @@ -33850,8 +33850,6 @@ fi $as_echo "$wx_cv_version_script" >&6; } if test $wx_cv_version_script = yes ; then - $as_echo "#define wxHAVE_VERSION_SCRIPT 1" >>confdefs.h - LDFLAGS_VERSIONING="-Wl,--version-script,\$(wx_top_builddir)/version-script" if test $wx_cv_undefined_version = yes ; then LDFLAGS_VERSIONING="$LDFLAGS_VERSIONING -Wl,--undefined-version" @@ -33860,6 +33858,90 @@ $as_echo "$wx_cv_version_script" >&6; } ;; esac + + if test "$wx_cv_version_script" = "yes"; then + saveLdflags="$LDFLAGS" + LDFLAGS="$saveLdflags -Wl,--version-script,conftest.sym" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if using multiple ELF symbol versions is supported" >&5 +$as_echo_n "checking if using multiple ELF symbol versions is supported... " >&6; } +if ${wx_cv_elf_symver_multiple+:} false; then : + $as_echo_n "(cached) " >&6 +else + + echo "lib_new {}; lib_old { *; };" >conftest.sym + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + __asm__(".symver foo,foo@lib_old"); + __asm__(".symver foo,foo@@lib_new"); + void foo() {} + int main() { return 0; } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + wx_cv_elf_symver_multiple=yes +else + wx_cv_elf_symver_multiple=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + rm -f conftest.sym + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wx_cv_elf_symver_multiple" >&5 +$as_echo "$wx_cv_elf_symver_multiple" >&6; } + + if test "$wx_cv_elf_symver_multiple" = "yes"; then + wx_cv_elf_symver=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if using ELF symbol versions is supported" >&5 +$as_echo_n "checking if using ELF symbol versions is supported... " >&6; } +if ${wx_cv_elf_symver+:} false; then : + $as_echo_n "(cached) " >&6 +else + + echo "lib_new {}; lib_old { *; };" >conftest.sym + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + __asm__(".symver foo,foo@@lib_new"); + void foo() {} + int main() { return 0; } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + wx_cv_elf_symver=yes +else + wx_cv_elf_symver=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + rm -f conftest.sym + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wx_cv_elf_symver" >&5 +$as_echo "$wx_cv_elf_symver" >&6; } + fi + + if test "$wx_cv_elf_symver" = "yes"; then + $as_echo "#define wxHAVE_ELF_SYMVER 1" >>confdefs.h + + fi + + if test "$wx_cv_elf_symver_multiple" = "yes"; then + $as_echo "#define wxHAVE_ELF_SYMVER_MULTIPLE 1" >>confdefs.h + + fi + + LDFLAGS="$saveLdflags" + fi fi if test "$wxUSE_VISIBILITY" != "no"; then diff --git a/configure.in b/configure.in index ffe1d71a9bb0..94792bfab3fb 100644 --- a/configure.in +++ b/configure.in @@ -4007,6 +4007,60 @@ if test "$wxUSE_SHARED" = "yes"; then dnl use versioned symbols if available on the platform and not disabled if test "$wxUSE_ELF_SYMVER" != "no"; then WX_VERSIONED_SYMBOLS([\$(wx_top_builddir)/version-script]) + + if test "$wx_cv_version_script" = "yes"; then + saveLdflags="$LDFLAGS" + LDFLAGS="$saveLdflags -Wl,--version-script,conftest.sym" + + AC_CACHE_CHECK([if using multiple ELF symbol versions is supported], + wx_cv_elf_symver_multiple, + [ + echo "lib_new {}; lib_old { *; };" >conftest.sym + AC_LINK_IFELSE([ + AC_LANG_SOURCE([ + __asm__(".symver foo,foo@lib_old"); + __asm__(".symver foo,foo@@lib_new"); + void foo() {} + int main() { return 0; } + ])], + wx_cv_elf_symver_multiple=yes, + wx_cv_elf_symver_multiple=no + ) + rm -f conftest.sym + ] + ) + + if test "$wx_cv_elf_symver_multiple" = "yes"; then + wx_cv_elf_symver=yes + else + AC_CACHE_CHECK([if using ELF symbol versions is supported], + wx_cv_elf_symver, + [ + echo "lib_new {}; lib_old { *; };" >conftest.sym + AC_LINK_IFELSE([ + AC_LANG_SOURCE([ + __asm__(".symver foo,foo@@lib_new"); + void foo() {} + int main() { return 0; } + ])], + wx_cv_elf_symver=yes, + wx_cv_elf_symver=no + ) + rm -f conftest.sym + ] + ) + fi + + if test "$wx_cv_elf_symver" = "yes"; then + AC_DEFINE(wxHAVE_ELF_SYMVER) + fi + + if test "$wx_cv_elf_symver_multiple" = "yes"; then + AC_DEFINE(wxHAVE_ELF_SYMVER_MULTIPLE) + fi + + LDFLAGS="$saveLdflags" + fi fi dnl test for GCC's visibility support (sets CFLAGS_VISIBILITY, which is diff --git a/include/wx/private/elfversion.h b/include/wx/private/elfversion.h index 5ff25a9eac98..878b4a35b817 100644 --- a/include/wx/private/elfversion.h +++ b/include/wx/private/elfversion.h @@ -10,9 +10,8 @@ #ifndef _WX_PRIVATE_ELFVERSION_H_ #define _WX_PRIVATE_ELFVERSION_H_ -// We suppose that if version script is supported, then .symver assembler -// directive is also supported. -#ifdef wxHAVE_VERSION_SCRIPT +// This symbol is defined by configure if .symver directive is supported. +#ifdef wxHAVE_ELF_SYMVER // Prefer to use the attribute if it is available, as it works with LTO, // unlike the assembler directive. #ifdef __has_attribute @@ -25,6 +24,16 @@ #define wxELF_SYMVER(sym, symver) __asm__(".symver " sym "," symver); #endif + // Using multiple versions for the same symbols may be not supported, in + // which case we omit it: this results in generating 2 default versions for + // the same symbol, which looks wrong, but doesn't seem to cause any + // problems. + #ifdef wxHAVE_ELF_SYMVER_MULTIPLE + #define wxELF_SYMVER_NON_DEFAULT(sym, ver) wxELF_SYMVER(sym, ver) + #else + #define wxELF_SYMVER_NON_DEFAULT(sym, ver) + #endif + // Our version tag depends on whether we're using Unicode or not. #if wxUSE_UNICODE #define wxMAKE_ELF_VERSION_TAG(ver) "WXU_" ver @@ -49,7 +58,7 @@ // Note that this macro takes strings, not symbols, and that it includes // the trailing semicolon for consistency with the empty version below. #define wxELF_VERSION_COMPAT(sym, ver) \ - wxELF_SYMVER(sym, sym "@" wxMAKE_ELF_VERSION_TAG("3.2")) \ + wxELF_SYMVER_NON_DEFAULT(sym, sym "@" wxMAKE_ELF_VERSION_TAG("3.2")) \ wxELF_SYMVER(sym, sym "@@" wxMAKE_ELF_VERSION_TAG(ver)) #else #define wxELF_VERSION_COMPAT(sym, ver) diff --git a/setup.h.in b/setup.h.in index 3d95b29e1444..4c53ab08fe7a 100644 --- a/setup.h.in +++ b/setup.h.in @@ -17,8 +17,11 @@ /* the installation location prefix from configure */ #undef wxINSTALL_PREFIX -/* Is linker version script used? */ -#undef wxHAVE_VERSION_SCRIPT +/* Is .symver assembler directive supported? */ +#undef wxHAVE_ELF_SYMVER + +/* Are multiple versions of the same symbol supported? */ +#undef wxHAVE_ELF_SYMVER_MULTIPLE /* Define if ssize_t type is available. */ #undef HAVE_SSIZE_T From 710fa51a634c115af6bfc6674b754dcb82e832ce Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 23 Mar 2025 00:04:26 +0100 Subject: [PATCH 167/416] Fix generating of WXK_NUMPADx key codes in wxGTK The changes of 98c158577f (Improve key events generation in wxGTK, 2025-03-08) have also broken this by generating the same key codes for numpad keys with ASCII equivalents as for the corresponding keys on the main keyboard. Fix this by calling our wxTranslateGTKKeyEventToWx() first to ensure we handle these keys correctly before trying gdk_keyval_to_unicode(). See #25200, #25263. (cherry picked from commit e117caee99fba2471ece53d3feae554baa5aab7b) --- docs/changes.txt | 1 + src/gtk/window.cpp | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 813bf18641ba..fbe4e5672f7a 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -266,6 +266,7 @@ All (GUI): wxGTK: +- Fix regression in numpad key event generation in 3.2.7 (#25263). - Fix handling exceptions in wxApp idle event handler (#25312). wxMSW: diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 91c557e4a788..bc97085912af 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1128,9 +1128,15 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, wxString extraTraceInfo; - long key_code = 0; + // Check for special keys first: we need to do it even for the keys that + // could have an ASCII equivalent because we need to distinguish numpad + // keys from the ones on the main keyboard. + long key_code = wxTranslateKeySymToWXKey(keysym, false /* !isChar */); + + guint32 unichar = 0; + if ( !key_code ) + unichar = gdk_keyval_to_unicode(keysym); - const guint32 unichar = gdk_keyval_to_unicode(keysym); if ( unichar ) { // The convention used here is rather strange, but conforms to what @@ -1187,10 +1193,6 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, key_code = toupper(key_code); } } - else // This is not an alphanumeric key, check if we know it. - { - key_code = wxTranslateKeySymToWXKey(keysym, false /* !isChar */); - } wxLogTrace(TRACE_KEYS, "Key %s event: %lu -> key=%ld%s", event.GetEventType() == wxEVT_KEY_UP ? "release" : "press", From 3ddb4f98a50c39be7877e7aa4b1bf3d631e71851 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 30 Mar 2025 00:29:43 +0100 Subject: [PATCH 168/416] Generate key codes consistent with wxMSW for VK_OEM_xxx in wxGTK These keys should generate the key code corresponding to their label on the physical keyboard if it's a Latin-1 character both because this is how wxMSW behaves and because this is likely what the user expects. Do this by using the Unicode character corresponding to one of these keys if it's a Latin-1 one, just as we already did it for the letters. (cherry picked from commit 20a98a0842d938129be863c6eda7cbb13548c231) --- docs/changes.txt | 1 + src/gtk/window.cpp | 38 ++++++++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index fbe4e5672f7a..41ac149dd4b0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -267,6 +267,7 @@ All (GUI): wxGTK: - Fix regression in numpad key event generation in 3.2.7 (#25263). +- Make key events for punctuation keys more consistent with wxMSW. - Fix handling exceptions in wxApp idle event handler (#25312). wxMSW: diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index bc97085912af..6a71e39d2d41 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1152,6 +1152,9 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, // key codes that can't be generated in the US layout (e.g. continuing // with the French example, "1" would generate "&" key code which can // never be entered in the standard US layout). + // + // However see also the hack inside the hack for some non-letter + // characters below. if ( (unichar >= 'A' && unichar <= 'Z') || (unichar >= 'a' && unichar <= 'z') ) { @@ -1171,6 +1174,32 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, extraTraceInfo = " [XKB]"; key_code = key_code_str[0]; + + // Another hack for wxMSW compatibility: for the non-digit keys + // (not characters), we still use their value if it is ASCII, + // so that the key marked as "$" on a French keyboard generates + // this key and not "]" that it would generate in the US layout + // but which is located on a completely different key of the + // French keyboard. + // + // See also the code handling VK_OEM_xxx keys in wxMSW. + switch ( key_code ) + { + case ';': + case '=': + case ',': + case '-': + case '.': + case '/': + case '`': + case '[': + case '\\': + case ']': + case '\'': + if ( unichar < 0x100 ) + key_code = unichar; + break; + } } else #endif // wxHAS_XKB @@ -1194,19 +1223,20 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, } } - wxLogTrace(TRACE_KEYS, "Key %s event: %lu -> key=%ld%s", + wxLogTrace(TRACE_KEYS, "Key %s event: %lu -> char='%c' key=%ld%s", event.GetEventType() == wxEVT_KEY_UP ? "release" : "press", static_cast(keysym), + unichar, key_code, extraTraceInfo); event.m_keyCode = key_code; #if wxUSE_UNICODE - if ( event.m_keyCode <= WXK_DELETE ) + if ( event.m_keyCode < 0x100 ) { - // Set Unicode key code to the ASCII equivalent for compatibility. E.g. - // let RETURN generate the key event with both key and Unicode key + // Set Unicode key code to the Latin-1 equivalent for compatibility. + // E.g. let RETURN generate the key event with both key and Unicode key // codes of 13. event.m_uniChar = event.m_keyCode; } From 207cbef63ff0308b936faf1dfd40fe4aeebd26aa Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 24 Aug 2024 15:06:35 +0200 Subject: [PATCH 169/416] Compute wxStaticText best size ourselves if GTK does it wrongly GTK doesn't take into account changes to the font of a hidden wxStaticText and returns wrong preferred (i.e. best) size for it which still uses the old font in this case, which results in all sorts of problems when this wrong best size is used for the layout. Work around it by computing the best size ourselves in this case using the correct font. This seems to return exactly the same results as GTK returns as long as the font is not changed, but also works correctly when it is. This commit is best viewed ignoring whitespace-only changes. See #16088, #24781. (cherry picked from commit e6500a4e313e3ba11d1880a2897436cc637c8e30) --- docs/changes.txt | 1 + include/wx/gtk/stattext.h | 2 + src/gtk/stattext.cpp | 103 ++++++++++++++++++++++++++++++-------- 3 files changed, 86 insertions(+), 20 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 41ac149dd4b0..a8cfae39fcf1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -268,6 +268,7 @@ wxGTK: - Fix regression in numpad key event generation in 3.2.7 (#25263). - Make key events for punctuation keys more consistent with wxMSW. +- Fix for computing wxStaticText best size with non-default font (#24781). - Fix handling exceptions in wxApp idle event handler (#25312). wxMSW: diff --git a/include/wx/gtk/stattext.h b/include/wx/gtk/stattext.h index 6763447b5e65..e90c02dbb7c0 100644 --- a/include/wx/gtk/stattext.h +++ b/include/wx/gtk/stattext.h @@ -33,6 +33,8 @@ class WXDLLIMPEXP_CORE wxStaticText : public wxStaticTextBase long style = 0, const wxString &name = wxASCII_STR(wxStaticTextNameStr) ); + virtual ~wxStaticText(); + void SetLabel( const wxString &label ) wxOVERRIDE; bool SetFont( const wxFont &font ) wxOVERRIDE; diff --git a/src/gtk/stattext.cpp b/src/gtk/stattext.cpp index 524b6d97b826..3fd5eed5ec9e 100644 --- a/src/gtk/stattext.cpp +++ b/src/gtk/stattext.cpp @@ -13,8 +13,32 @@ #include "wx/stattext.h" +#ifndef WX_PRECOMP + #include "wx/dcclient.h" +#endif + +#if wxUSE_MARKUP + #include "wx/generic/private/markuptext.h" +#endif // wxUSE_MARKUP + #include "wx/gtk/private.h" +// We can't add a member variable to wxStaticText in 3.2 branch, so emulate it +// by encoding the corresponding boolean value via the presence of "this" +// pointer in the given hash set. +#include "wx/hashset.h" + +namespace +{ + +// Define the equivalent of unordered_set. +WX_DECLARE_HASH_SET(wxStaticText*, wxPointerHash, wxPointerEqual, wxStaticTextSet); + +// Use it to remember for which objects we need to compute the size ourselves. +wxStaticTextSet gs_computeOurOwnBestSize; + +} // anonymous namespace + //----------------------------------------------------------------------------- // wxStaticText //----------------------------------------------------------------------------- @@ -133,6 +157,11 @@ bool wxStaticText::Create(wxWindow *parent, return true; } +wxStaticText::~wxStaticText() +{ + gs_computeOurOwnBestSize.erase(this); +} + void wxStaticText::GTKDoSetLabel(GTKLabelSetter setter, const wxString& label) { wxCHECK_RET( m_widget != NULL, wxT("invalid static text") ); @@ -177,6 +206,14 @@ bool wxStaticText::SetFont( const wxFont &font ) if ( !wxControl::SetFont(font) ) return false; + if ( !IsShownOnScreen() ) + { + // Setting the font of a hidden window doesn't update GTK style cache, + // see #16088, and the size computed by GTK will be wrong, so we will + // need to compute it ourselves. + gs_computeOurOwnBestSize.insert(this); + } + const bool isUnderlined = GetFont().GetUnderlined(); const bool isStrickenThrough = GetFont().GetStrikethrough(); @@ -227,32 +264,58 @@ wxSize wxStaticText::DoGetBestSize() const // Do not return any arbitrary default value... wxASSERT_MSG( m_widget, wxT("wxStaticText::DoGetBestSize called before creation") ); - // GetBestSize is supposed to return unwrapped size but calling - // gtk_label_set_line_wrap() from here is a bad idea as it queues another - // size request by calling gtk_widget_queue_resize() and we end up in - // infinite loop sometimes (notably when the control is in a toolbar) - // With GTK3 however, there is no simple alternative, and the sizing loop - // no longer seems to occur. + wxSize size; + if ( gs_computeOurOwnBestSize.count(wxConstCast(this, wxStaticText)) ) + { + // GTK style cache may not be up to date, so we can't trust the results + // of wxControl::DoGetBestSize() and need to compute the best size + // ourselves here. + wxClientDC dc(wxConstCast(this, wxStaticText)); + + const wxString + label = wxString::FromUTF8(gtk_label_get_label(GTK_LABEL(m_widget))); + +#if wxUSE_MARKUP + if ( gtk_label_get_use_markup(GTK_LABEL(m_widget)) ) + { + wxMarkupText markupText(label); + size = markupText.Measure(dc); + } + else +#endif // wxUSE_MARKUP + { + size = dc.GetMultiLineTextExtent(label); + } + } + else + { + // GetBestSize is supposed to return unwrapped size but calling + // gtk_label_set_line_wrap() from here is a bad idea as it queues another + // size request by calling gtk_widget_queue_resize() and we end up in + // infinite loop sometimes (notably when the control is in a toolbar) + // With GTK3 however, there is no simple alternative, and the sizing loop + // no longer seems to occur. #ifdef __WXGTK3__ - gtk_label_set_line_wrap(GTK_LABEL(m_widget), false); + gtk_label_set_line_wrap(GTK_LABEL(m_widget), false); #else - GTK_LABEL(m_widget)->wrap = FALSE; - - // Reset the ellipsize mode while computing the best size, otherwise it's - // going to be too small as the control knows that it can be shrunk to the - // bare minimum and just hide most of the text replacing it with ellipsis. - // This is especially important because we can enable ellipsization - // implicitly for GTK+ 2, see the code dealing with alignment in the ctor. - const PangoEllipsizeMode ellipsizeMode = gtk_label_get_ellipsize(GTK_LABEL(m_widget)); - gtk_label_set_ellipsize(GTK_LABEL(m_widget), PANGO_ELLIPSIZE_NONE); + GTK_LABEL(m_widget)->wrap = FALSE; + + // Reset the ellipsize mode while computing the best size, otherwise it's + // going to be too small as the control knows that it can be shrunk to the + // bare minimum and just hide most of the text replacing it with ellipsis. + // This is especially important because we can enable ellipsization + // implicitly for GTK+ 2, see the code dealing with alignment in the ctor. + const PangoEllipsizeMode ellipsizeMode = gtk_label_get_ellipsize(GTK_LABEL(m_widget)); + gtk_label_set_ellipsize(GTK_LABEL(m_widget), PANGO_ELLIPSIZE_NONE); #endif - wxSize size = wxStaticTextBase::DoGetBestSize(); + size = wxStaticTextBase::DoGetBestSize(); #ifdef __WXGTK3__ - gtk_label_set_line_wrap(GTK_LABEL(m_widget), true); + gtk_label_set_line_wrap(GTK_LABEL(m_widget), true); #else - gtk_label_set_ellipsize(GTK_LABEL(m_widget), ellipsizeMode); - GTK_LABEL(m_widget)->wrap = TRUE; // restore old value + gtk_label_set_ellipsize(GTK_LABEL(m_widget), ellipsizeMode); + GTK_LABEL(m_widget)->wrap = TRUE; // restore old value #endif + } // Adding 1 to width to workaround GTK sometimes wrapping the text needlessly size.x++; From a22e12486f454fc6e6d1383f96a4f5aa0f233657 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 17 Apr 2025 01:47:09 +0200 Subject: [PATCH 170/416] Improve testing for ELF symver support in configure Repurpose the header defining wxELF_SYMVER used during the build for testing for it: this allows to check whether __symver__ attribute is supported while falling back to .symver directive support without duplicating the tests in configure itself. configure should now correctly detect ELF symver support even when LTO is enabled. --- configure | 12 +++++++++--- configure.in | 18 +++++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/configure b/configure index 191cc091b67a..0fc69ecfb267 100755 --- a/configure +++ b/configure @@ -33860,6 +33860,9 @@ $as_echo "$wx_cv_version_script" >&6; } if test "$wx_cv_version_script" = "yes"; then + saveCppflags="$CPPFLAGS" + CPPFLAGS="$saveCppflags -I${srcdir}/include -DwxHAVE_ELF_SYMVER" + saveLdflags="$LDFLAGS" LDFLAGS="$saveLdflags -Wl,--version-script,conftest.sym" @@ -33874,8 +33877,9 @@ else /* end confdefs.h. */ - __asm__(".symver foo,foo@lib_old"); - __asm__(".symver foo,foo@@lib_new"); + #include "wx/private/elfversion.h" + wxELF_SYMVER("foo","foo@lib_old") + wxELF_SYMVER("foo","foo@@lib_new") void foo() {} int main() { return 0; } @@ -33909,7 +33913,8 @@ else /* end confdefs.h. */ - __asm__(".symver foo,foo@@lib_new"); + #include "wx/private/elfversion.h" + wxELF_SYMVER("foo","foo@@lib_new") void foo() {} int main() { return 0; } @@ -33941,6 +33946,7 @@ $as_echo "$wx_cv_elf_symver" >&6; } fi LDFLAGS="$saveLdflags" + CPPFLAGS="$saveCppflags" fi fi diff --git a/configure.in b/configure.in index 94792bfab3fb..3fc9a1d36bfe 100644 --- a/configure.in +++ b/configure.in @@ -4009,6 +4009,15 @@ if test "$wxUSE_SHARED" = "yes"; then WX_VERSIONED_SYMBOLS([\$(wx_top_builddir)/version-script]) if test "$wx_cv_version_script" = "yes"; then + dnl We want to use either __symver__ attribute (preferably, as it + dnl works with LTO) or .symver, but to avoid checking for both of + dnl them, use the header file which can check if the attribute is + dnl available. Just remember to pretend that we do have support + dnl for this before including it, as it relies on this symbol, + dnl which we'll define below only if things do indeed work. + saveCppflags="$CPPFLAGS" + CPPFLAGS="$saveCppflags -I${srcdir}/include -DwxHAVE_ELF_SYMVER" + saveLdflags="$LDFLAGS" LDFLAGS="$saveLdflags -Wl,--version-script,conftest.sym" @@ -4018,8 +4027,9 @@ if test "$wxUSE_SHARED" = "yes"; then echo "lib_new {}; lib_old { *; };" >conftest.sym AC_LINK_IFELSE([ AC_LANG_SOURCE([ - __asm__(".symver foo,foo@lib_old"); - __asm__(".symver foo,foo@@lib_new"); + #include "wx/private/elfversion.h" + wxELF_SYMVER("foo","foo@lib_old") + wxELF_SYMVER("foo","foo@@lib_new") void foo() {} int main() { return 0; } ])], @@ -4039,7 +4049,8 @@ if test "$wxUSE_SHARED" = "yes"; then echo "lib_new {}; lib_old { *; };" >conftest.sym AC_LINK_IFELSE([ AC_LANG_SOURCE([ - __asm__(".symver foo,foo@@lib_new"); + #include "wx/private/elfversion.h" + wxELF_SYMVER("foo","foo@@lib_new") void foo() {} int main() { return 0; } ])], @@ -4060,6 +4071,7 @@ if test "$wxUSE_SHARED" = "yes"; then fi LDFLAGS="$saveLdflags" + CPPFLAGS="$saveCppflags" fi fi From 3e47bb037096194d3171ca7d17d01e528713e0b3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 17 Apr 2025 13:03:59 +0200 Subject: [PATCH 171/416] Install awk before building to fix Fedora CI job Apparently the latest Fedora doesn't include awk out of the box, but configure relies on it, so install it ourselves. Do it also for the other platforms for consistency. (cherry picked from commit 531ebcbe9f86348253650f37145856d8922a020f) --- build/tools/before_install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tools/before_install.sh b/build/tools/before_install.sh index c12b398873f2..830b543a5ce7 100755 --- a/build/tools/before_install.sh +++ b/build/tools/before_install.sh @@ -91,7 +91,7 @@ case $(uname -s) in libglu1-mesa-dev" esac - pkg_install="$pkg_install $libtoolkit_dev gdb ${WX_EXTRA_PACKAGES}" + pkg_install="$pkg_install $libtoolkit_dev gawk gdb ${WX_EXTRA_PACKAGES}" extra_deps="$extra_deps libcurl4-openssl-dev libsecret-1-dev libnotify-dev" for pkg in $extra_deps; do @@ -119,12 +119,12 @@ case $(uname -s) in fi if [ -f /etc/redhat-release ]; then - dnf install -y ${WX_EXTRA_PACKAGES} expat-devel findutils g++ git-core gspell-devel gstreamer1-plugins-base-devel gtk3-devel make libcurl-devel libGLU-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk4.1-devel zlib-devel + dnf install -y ${WX_EXTRA_PACKAGES} gawk expat-devel findutils g++ git-core gspell-devel gstreamer1-plugins-base-devel gtk3-devel make libcurl-devel libGLU-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk4.1-devel zlib-devel fi ;; FreeBSD) - pkg install -q -y ${WX_EXTRA_PACKAGES} gspell gstreamer1 gtk3 jpeg-turbo libnotify libsecret mesa-libs pkgconf png tiff webkit2-gtk_41 + pkg install -q -y ${WX_EXTRA_PACKAGES} gawk gspell gstreamer1 gtk3 jpeg-turbo libnotify libsecret mesa-libs pkgconf png tiff webkit2-gtk_41 ;; Darwin) From 6467e317e87bdc5a94af1d386fae8dea06681167 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 17 Apr 2025 15:01:31 +0200 Subject: [PATCH 172/416] Suppress spurious gcc 15 -Wdangling-pointer in wxButtonBase This is an ABI-compatible alternative to 98695b414b (Work around spurious gcc 15 -Wdangling-pointer with -O2, 2025-04-17) in master. See #25338. --- src/common/btncmn.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/common/btncmn.cpp b/src/common/btncmn.cpp index dca951f5cb2a..39e25e337bc9 100644 --- a/src/common/btncmn.cpp +++ b/src/common/btncmn.cpp @@ -100,7 +100,16 @@ wxWindow *wxButtonBase::SetDefault() wxCHECK_MSG( tlw, NULL, wxT("button without top level window?") ); + // Avoid spurious warning from gcc 15 when using -O2, see #25338. +#if wxCHECK_GCC_VERSION(15, 0) + wxGCC_WARNING_SUPPRESS(dangling-pointer) +#endif + return tlw->SetDefaultItem(this); + +#if wxCHECK_GCC_VERSION(15, 0) + wxGCC_WARNING_RESTORE(dangling-pointer) +#endif } void wxAnyButtonBase::SetBitmapPosition(wxDirection dir) From 40ed30b6ed860d4d9221ee7093ef93dfc71b0e75 Mon Sep 17 00:00:00 2001 From: PB Date: Mon, 21 Apr 2025 10:58:32 +0200 Subject: [PATCH 173/416] Add GCC version in MSW binaries information Add GCC 14.2.0 to the list of MSYS GCC versions for which the Windows prebuilt binaries are available. --- docs/msw/binaries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/msw/binaries.md b/docs/msw/binaries.md index 7aca97996b6f..29a56ed3539b 100644 --- a/docs/msw/binaries.md +++ b/docs/msw/binaries.md @@ -11,7 +11,7 @@ We provide pre-built binary files for the following compilers: (corresponding to marketing product names of Microsoft Visual Studio 2008, 2010, 2012, 2013, 2015, 2017, 2019 and 2022 respectively). Please note that MSVC 14.x versions are ABI-compatible and the same set of binaries is used for all of them. * MinGW-w64 versions 7.3 and 8.1 (32-bit binaries use SJLJ exceptions, 64-bit ones use SEH, and all binaries use Win32 threads). * [TDM-GCC](https://jmeubank.github.io/tdm-gcc/) 10.3.0. -* [MSYS2](https://www.msys2.org/) MinGW 12.2.0 and 13.2.0. +* [MSYS2](https://www.msys2.org/) MinGW 12.2.0, 13.2.0 and 14.2.0. Getting the files ----------------- From 8aef5f40b93958719771331ca03866b7b6fff6bf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 24 Apr 2025 21:21:09 +0200 Subject: [PATCH 174/416] Update release files for 3.2.8 --- docs/changes.txt | 2 +- docs/doxygen/mainpages/manual.h | 2 +- docs/msw/binaries.md | 8 +- docs/publicity/announce.txt | 46 +++++------ docs/readme.txt | 44 +++++----- docs/release.md | 140 ++++++++++++++++---------------- 6 files changed, 121 insertions(+), 121 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index de1e8e62c1e8..88427fdf5968 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -249,7 +249,7 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. -3.2.8: (released 2025-??-??) +3.2.8: (released 2025-04-24) ---------------------------- All: diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h index 51fa6f2b4e67..f6e8213336c4 100644 --- a/docs/doxygen/mainpages/manual.h +++ b/docs/doxygen/mainpages/manual.h @@ -14,7 +14,7 @@ @author Julian Smart, Vadim Zeitlin, Robin Dunn, Stefan Csomor, Bryan Petty, Francesco Montorsi, Robert Roebling et al -@date March 20, 2025 +@date April 24, 2025 Welcome to wxWidgets, a stable and powerful open source framework for developing native cross-platform GUI applications in C++! diff --git a/docs/msw/binaries.md b/docs/msw/binaries.md index 29a56ed3539b..1658432e8805 100644 --- a/docs/msw/binaries.md +++ b/docs/msw/binaries.md @@ -17,7 +17,7 @@ Getting the files ----------------- First, you need to get the correct files. You will always need the -`wxWidgets-3.2.7-headers.7z` one but the rest depends on your compiler version +`wxWidgets-3.2.8-headers.7z` one but the rest depends on your compiler version and architecture: as different versions of MSVC compiler are not binary compatible, you should select the files with the correct `vc80`, `vc90`, `vc100`, `vc110`, `vc120`, or `vc14x` @@ -28,14 +28,14 @@ or the ones without this suffix for the still more common 32-bit builds. After determining the combination of suffixes you need, you should download the "Dev" and the "ReleaseDLL" files in addition to the "Headers" one above, e.g. for 32-bit MSVS 2017 development you need -`wxMSW-3.2.7_vc14x_Dev.7z` and `wxMSW-3.2.7_vc14x_ReleaseDLL.7z`. +`wxMSW-3.2.8_vc14x_Dev.7z` and `wxMSW-3.2.8_vc14x_ReleaseDLL.7z`. All binaries are available at: -https://www.wxwidgets.org/downloads#v3.2.7_msw +https://www.wxwidgets.org/downloads#v3.2.8_msw Once you have the files you need, unzip all of them into the same directory, for -example `c:\wx\3.2.7`. You should have `include` and `lib` subdirectories under +example `c:\wx\3.2.8`. You should have `include` and `lib` subdirectories under this directory, as well as files such as `wxwidgets.props`. Note: To avoid hard-coding this path into your projects, define `wxwin` diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt index a2a3d198223f..463bee14d0c0 100644 --- a/docs/publicity/announce.txt +++ b/docs/publicity/announce.txt @@ -1,45 +1,45 @@ -March 20, 2025 -- The wxWidgets team is pleased to announce a new +April 24, 2025 -- The wxWidgets team is pleased to announce a new stable release of our open source framework for the development of native cross-platform applications in C++. -wxWidgets 3.2.7 is part of the API and ABI-stable 3.2.x release series and is +wxWidgets 3.2.8 is part of the API and ABI-stable 3.2.x release series and is now available from https://www.wxwidgets.org/downloads/ and - https://github.com/wxWidgets/wxWidgets/releases/v3.2.7 + https://github.com/wxWidgets/wxWidgets/releases/v3.2.8 -This release contains more than a hundred bug fixes and improvements. Some of -the most important fixes are: -- Build fixes for gcc 14 (#24248, #24869) and clang 19 (#24922, #24959, #25064). -- Fix build with macOS 15 SDK (#24724, #24879). -- Many fixes to key event generation in wxGTK (#25053, #25199, #25200). -- Avoid repaint problems when using wxWindow::Update() with Wayland (#25036). -- Fix crashes when using wxWebRequest with libcurl (#24885, #24969). +This is mostly a bug fix release correcting several problems found in the +previous 3.2.7 release: -New in this release: +- Fix crash in wxPropertyGrid with wxGTK3 after recent change (#25286). +- Fix padding of wxMenu in high DPI under Windows 11 (#25117). +- Fix key codes in WXK_NUMPADx events in wxGTK (#25263). +- Fix ABI breakage for versioned symbols in 3.2.7 (#25327). +- Fix third party libraries build with Xcode 16.3. +- Fix using OpenGL and WebView when using CMake install (#25266). -- Add wxNO_UNUSED_VARIABLES to opt-in into getting helpful warnings (#24882). -- Add wxApp::SetErrorExitCode() to better handle initialization errors (#24770). +But it still contains a couple of enhancements, including: -Other changes include: +- Add wxVector(std::initializer_list list) ctor (#25290). +- Add mouse scrolling support to generic wxSpinCtrl (#24935). +- Add @USER@ macro to HTML and RichText printers (#25318). -- More high DPI fixes in wxMSW (#24650, #24651, #24815, #24850, #24821, #24941). -- Improve wxInfoBar appearance (#24838, #24902, #25048). -- Fix possible crash during session termination in wxMSW (#24903). -- Wayland fixes to copy-pasting (#24701) and drag-and-drop (#25116) in wxGTK. -- Fix truncating labels of newly added wxNotebook pages in wxOSX (#25194). -- Fix Z-order of auto-complete popup of wxStyledTextCtrl in wxOSX (#25202). -- Fix buffer read overflow when compiling RE ending with backslash (#25040). -- Make wxTempFile::Commit() and wxRenameFile() really atomic (#25088). +Other changes include: +- Call OnExceptionInMainLoop() in wxGTK if idle event handler throws (#25312). +- Compute wxStaticText best size ourselves if GTK does it wrongly (#24781). +- Fix page count display in wxHtmlPrintout when there is only one page (#25320). +- Miscellaneous CMake build improvements (#25324). +- Fix new warnings with gcc 15 (#25338). +- Update Brazilian Portuguese translations. Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x, meaning that the existing applications don't even need to be rebuilt to profit from all the diff --git a/docs/readme.txt b/docs/readme.txt index 514fb18d1680..36aa5ec6789f 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -32,35 +32,35 @@ installation instructions. -Changes since 3.2.6 +Changes since 3.2.7 ------------------- -This release contains more than a hundred bug fixes and improvements. Some of -the most important fixes are: +This is mostly a bug fix release correcting several problems found in the +previous 3.2.7 release: -- Build fixes for gcc 14 (#24248, #24869) and clang 19 (#24922, #24959, #25064). -- Fix build with macOS 15 SDK (#24724, #24879). -- Many fixes to key event generation in wxGTK (#25053, #25199, #25200). -- Avoid repaint problems when using wxWindow::Update() with Wayland (#25036). -- Fix crashes when using wxWebRequest with libcurl (#24885, #24969). +- Fix crash in wxPropertyGrid with wxGTK3 after recent change (#25286). +- Fix padding of wxMenu in high DPI under Windows 11 (#25117). +- Fix key codes in WXK_NUMPADx events in wxGTK (#25263). +- Fix ABI breakage for versioned symbols in 3.2.7 (#25327). +- Fix third party libraries build with Xcode 16.3. +- Fix using OpenGL and WebView when using CMake install (#25266). -New in this release: +But it still contains a couple of enhancements, including: -- Add wxNO_UNUSED_VARIABLES to opt-in into getting helpful warnings (#24882). -- Add wxApp::SetErrorExitCode() to better handle initialization errors (#24770). +- Add wxVector(std::initializer_list list) ctor (#25290). +- Add mouse scrolling support to generic wxSpinCtrl (#24935). +- Add @USER@ macro to HTML and RichText printers (#25318). Other changes include: -- More high DPI fixes in wxMSW (#24650, #24651, #24815, #24850, #24821, #24941). -- Improve wxInfoBar appearance (#24838, #24902, #25048). -- Fix possible crash during session termination in wxMSW (#24903). -- Wayland fixes to copy-pasting (#24701) and drag-and-drop (#25116) in wxGTK. -- Fix truncating labels of newly added wxNotebook pages in wxOSX (#25194). -- Fix Z-order of auto-complete popup of wxStyledTextCtrl in wxOSX (#25202). -- Fix buffer read overflow when compiling RE ending with backslash (#25040). -- Make wxTempFile::Commit() and wxRenameFile() really atomic (#25088). +- Call OnExceptionInMainLoop() in wxGTK if idle event handler throws (#25312). +- Compute wxStaticText best size ourselves if GTK does it wrongly (#24781). +- Fix page count display in wxHtmlPrintout when there is only one page (#25320). +- Miscellaneous CMake build improvements (#25324). +- Fix new warnings with gcc 15 (#25338). +- Update Brazilian Portuguese translations. -and more, please see the full change log for more details: +Please see the full change log for more details: https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt @@ -77,7 +77,7 @@ Supported Platforms This version of wxWidgets supports the following primary platforms: * Windows XP, Vista, 7, 8, 10 and 11 (32/64 bits). -* Most Unix variants using the GTK toolkit (version 2.6 or newer) +* Most Unix variants using the GTK toolkit (version 2.6 or newer or 3.x) * macOS (10.10 or newer) using Cocoa (x86-64 or ARM). There is some support for the following platforms: @@ -162,4 +162,4 @@ developed by its users and your contributions to it are always welcome! Have fun! -The wxWidgets Team, March 2025 +The wxWidgets Team, April 2025 diff --git a/docs/release.md b/docs/release.md index 28c9873a2726..ea729bc49e27 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,32 +1,32 @@ Welcome to wxWidgets, a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. -wxWidgets 3.2.7 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.6 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. +wxWidgets 3.2.8 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.7 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. We recommend using this version for any new wxWidgets applications. Existing applications using wxWidgets 3.0 or 3.1 shouldn't require any special effort to upgrade to this version too, so please try upgrading them to it. -Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.7/docs/changes.txt) for more details of the changes in it. +Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt) for more details of the changes in it. ## Source Files and Documentation If you intend to build wxWidgets from sources (which is recommended), please do **NOT** download the files using the "Source code" links just above, which are automatically generated by GitHub and don't contain the submodules sources which are necessary for building wxWidgets. -Instead, download one of [wxWidgets-3.2.7.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxWidgets-3.2.7.zip) or [wxWidgets-3.2.7.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxWidgets-3.2.7.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.7.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxWidgets-3.2.7.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. +Instead, download one of [wxWidgets-3.2.8.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxWidgets-3.2.8.zip) or [wxWidgets-3.2.8.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxWidgets-3.2.8.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.8.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxWidgets-3.2.8.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. -In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.7). +In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.8). -Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.7/wxMSW-3.2.7-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. +Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxMSW-3.2.8-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. To verify your download please use the following SHA-1 checksums: - 7afc92493fc4168f10c006f8deeb8554b93f5d49 wxMSW-3.2.7-Setup.exe - 803cef0f36e1d088642a16875e7d4b686786874c wxWidgets-3.2.7-docs-chm.zip - ec850721b37b2674ae146b2befdc838633346e1f wxWidgets-3.2.7-docs-html.tar.bz2 - 5f2ed919be688ea731b77a8bbae7755b021790d7 wxWidgets-3.2.7-docs-html.zip - af0c6ec737cc19a5ce666b315c47cb3dfd6aa75c wxWidgets-3.2.7-headers.7z - aadd566e5d9440adcb601a0e3672d41992ea8799 wxWidgets-3.2.7.7z - 744be271f9f5893c21c6c0b048cdf7f744a6ffe0 wxWidgets-3.2.7.tar.bz2 - 9c1906e8a7db0c27c88be8d531fed1b980d5e56b wxWidgets-3.2.7.zip + 0000000000000000000000000000000000000000 wxMSW-3.2.8-Setup.exe + 0000000000000000000000000000000000000000 wxWidgets-3.2.8-docs-chm.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.8-docs-html.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.8-docs-html.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.8-headers.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.8.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.8.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.8.zip ## Binaries @@ -39,7 +39,7 @@ We provide pre-built binary files for the following compilers: ### For Developers -For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.7_Headers.7z` file and one of `wxMSW-3.2.7-vcXXX_Dev.7z` or `wxMSW-3.2.7_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). +For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.8_Headers.7z` file and one of `wxMSW-3.2.8-vcXXX_Dev.7z` or `wxMSW-3.2.8_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols. @@ -47,71 +47,71 @@ Note that if you're setting up a new project using these binaries, the simplest ### For End Users -End users may download one of `wxMSW-3.2.7_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.7_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. +End users may download one of `wxMSW-3.2.8_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.8_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. ### For Debugging -* Microsoft Visual C++ users: Files `wxMSW-3.2.7_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. +* Microsoft Visual C++ users: Files `wxMSW-3.2.8_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. * MinGW-TDM users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contains the debug symbols). ### Binary File Download Verification To verify your download please use the following SHA-1 checksums: - f5eb1e8b2abbac915be3ff49e0506502514340e1 wxMSW-3.2.7_gcc730_Dev.7z - 91119b7bdaa0e0ce51fe4cca54bc75657ed85501 wxMSW-3.2.7_gcc730_ReleaseDLL.7z - 89e6e28e8fa4ce42282bf229e85efdb9fc743550 wxMSW-3.2.7_gcc730_x64_Dev.7z - 6ea133f03dd858c93ef9283177ffc9e1fd22ad8c wxMSW-3.2.7_gcc730_x64_ReleaseDLL.7z - b218837540a1877d69903c09370bb59aecf798b1 wxMSW-3.2.7_gcc810_Dev.7z - b7a297036a076ea357aca4b05dacba401bba0dd2 wxMSW-3.2.7_gcc810_ReleaseDLL.7z - 1083f0b188cbd0196e04aa45df4e2cb43b05f7bd wxMSW-3.2.7_gcc810_x64_Dev.7z - 565e78fadbdf73c320d616f462a9d1e575a03bd7 wxMSW-3.2.7_gcc810_x64_ReleaseDLL.7z - f684bfafa6da060279b34805d6e2de08cd71a22a wxMSW-3.2.7_gcc1030TDM_Dev.7z - 5bf1e0b18b2cf373bb79ed348dc0e5f3a056e7cc wxMSW-3.2.7_gcc1030TDM_ReleaseDLL.7z - 003884d0a55c323b1912300585b4f4f7c181e09a wxMSW-3.2.7_gcc1030TDM_x64_Dev.7z - b8b7dce09c548906fdf7590b274e4db20a29d59c wxMSW-3.2.7_gcc1030TDM_x64_ReleaseDLL.7z - c68a1d40fe03561ac6b98052b6e2b9467840ca6e wxMSW-3.2.7_gcc1220_Dev.7z - 03fa15cada0b007f79b8496430bd058f264fdbf6 wxMSW-3.2.7_gcc1220_ReleaseDLL.7z - 86aadf1765019db81c94964f9d728cf91c065bb4 wxMSW-3.2.7_gcc1220_x64_Dev.7z - 9a69c99e9d327be48514885a03767dd676608255 wxMSW-3.2.7_gcc1220_x64_ReleaseDLL.7z - d2ed83360f62c13774b48be3477efa71768c91ac wxMSW-3.2.7_gcc1320_Dev.7z - 064413832f1c5b3d594a6d1721c23e3c4c09407e wxMSW-3.2.7_gcc1320_ReleaseDLL.7z - 1b94f9db4573a2c7aef4856f2528b7f581e56e27 wxMSW-3.2.7_gcc1320_x64_Dev.7z - 1d72982138390c23c26a87c8dac9b2479dc66f0a wxMSW-3.2.7_gcc1320_x64_ReleaseDLL.7z - 6dfd137b5dc762f391e03facd0b8367d22a41e4c wxMSW-3.2.7_gcc1420_Dev.7z - 346ee393f12de18f065e0a8fa22eb7b3cb3c30e8 wxMSW-3.2.7_gcc1420_ReleaseDLL.7z - 9eda21a05f8b147d9a8f61d3a943a16336920311 wxMSW-3.2.7_gcc1420_x64_Dev.7z - 5a9969c850e207c6ddfd442a497fc1c52922d858 wxMSW-3.2.7_gcc1420_x64_ReleaseDLL.7z - b07e77fdf37f40c7a92eaefc500b364fff2bc96a wxMSW-3.2.7_vc90_Dev.7z - 1818b2391b2c3f30ccbed737d3752569e914a07b wxMSW-3.2.7_vc90_ReleaseDLL.7z - cdc95c954d8bb3003ab8c6e95a7f098e0c22e7c2 wxMSW-3.2.7_vc90_ReleasePDB.7z - e7f27fa671e8ee4e6a7f8b428f4be92ab14c5433 wxMSW-3.2.7_vc90_x64_Dev.7z - 14ba139c9c8bbc2d79885338fd423dbc9065e637 wxMSW-3.2.7_vc90_x64_ReleaseDLL.7z - 44fa7c6d8fcb72d685430c24ee4d6f259dff7d8a wxMSW-3.2.7_vc90_x64_ReleasePDB.7z - 0d52de040bd04ca8438dc4badf5f42551dc67803 wxMSW-3.2.7_vc100_Dev.7z - 697dfd101663b150781c829db5377b6dbe5ed147 wxMSW-3.2.7_vc100_ReleaseDLL.7z - 10d5e83426dae8749d5697fdfda45a2169047f29 wxMSW-3.2.7_vc100_ReleasePDB.7z - 4a59e89e1b36cddee678b24e81a347b3263f3319 wxMSW-3.2.7_vc100_x64_Dev.7z - ea8355b8c533c93875872e2264beadada4610a18 wxMSW-3.2.7_vc100_x64_ReleaseDLL.7z - bd312abf637935f4785a89d2314f749d239631d0 wxMSW-3.2.7_vc100_x64_ReleasePDB.7z - 693caded6fbbeb1163b44b59556baa70ea71747f wxMSW-3.2.7_vc110_Dev.7z - a94e38210514335ef9af45d625060ea88750fb66 wxMSW-3.2.7_vc110_ReleaseDLL.7z - 53466c7f800718d035b8d859794ac4f6454b4bed wxMSW-3.2.7_vc110_ReleasePDB.7z - 781f4676f9ffac82d69e43fe6a4c8c488e275ba6 wxMSW-3.2.7_vc110_x64_Dev.7z - d9249f123458e4dd468cc5974b3009c1467ef20c wxMSW-3.2.7_vc110_x64_ReleaseDLL.7z - 30b62b4b87ae7f38722f50008d91db3b8b7d0e9e wxMSW-3.2.7_vc110_x64_ReleasePDB.7z - ec738a99c01991759b3ed1d6382c9589fe6a9759 wxMSW-3.2.7_vc120_Dev.7z - a8d393c70e71a0a41b10b6d8b5885e30ec142976 wxMSW-3.2.7_vc120_ReleaseDLL.7z - 990f5eb61cf4a379d7f6f00ae0c64356f02da386 wxMSW-3.2.7_vc120_ReleasePDB.7z - cbde331873a59b6a74fdf4c4696a8955817defcf wxMSW-3.2.7_vc120_x64_Dev.7z - 278b941b02f69f278ebd247eeb90a77cebfa0afd wxMSW-3.2.7_vc120_x64_ReleaseDLL.7z - 3b9e6754a2fbc18eb29b0df6e4bcd4f8aec5ae2c wxMSW-3.2.7_vc120_x64_ReleasePDB.7z - e5e36f95b09678160dc3067cc84e02bef3556a77 wxMSW-3.2.7_vc14x_Dev.7z - e68733415d0d8a0dd4ac8b73ccfdfdd66d552953 wxMSW-3.2.7_vc14x_ReleaseDLL.7z - 4d9228662f997d92dfd89749dbe8dbdcc2602f16 wxMSW-3.2.7_vc14x_ReleasePDB.7z - 2d6c1c17e440193dec582b68a5beea9282f9388e wxMSW-3.2.7_vc14x_x64_Dev.7z - a79cc9582869e35c02fe7b8607e7cc0a991f0334 wxMSW-3.2.7_vc14x_x64_ReleaseDLL.7z - b5f8b2948e7ad6f1008e7f307d0353790c16307b wxMSW-3.2.7_vc14x_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_x64_ReleasePDB.7z ## Reporting Problems From 57a6237eae05c3a419872187ca0f74bd096ff90a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 Apr 2025 17:33:31 +0200 Subject: [PATCH 175/416] Update SHA-1 sums for 3.2.8 release files --- docs/release.md | 124 ++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/docs/release.md b/docs/release.md index ea729bc49e27..ed6a640cbe87 100644 --- a/docs/release.md +++ b/docs/release.md @@ -19,14 +19,14 @@ Finally, Microsoft Windows users may download [Setup.exe file](https://github.co To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.8-Setup.exe - 0000000000000000000000000000000000000000 wxWidgets-3.2.8-docs-chm.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.8-docs-html.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.8-docs-html.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.8-headers.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.8.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.8.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.8.zip + 97de954ab0faba52b07333de42ca1fb46ab04d17 wxMSW-3.2.8-Setup.exe + ed7d7728ca9487671531bfa43e032bed7006bd63 wxWidgets-3.2.8-docs-chm.zip + 8400cb523f1e896e94e26f94149900989ecca82a wxWidgets-3.2.8-docs-html.tar.bz2 + 42f268a99a09d72a942fd3c5922b4336cb842bf7 wxWidgets-3.2.8-docs-html.zip + 86a2c99b4e9608b7cfc0b59e0f5a6d200a9d2541 wxWidgets-3.2.8-headers.7z + e7347ebbb7ea5a12ad68603eee95872df83a8ad7 wxWidgets-3.2.8.7z + a74d573d03068cd0e86396e13263f67ef3a4fc51 wxWidgets-3.2.8.tar.bz2 + b218ba7e0d472e0763cf67742b1ded946fd21954 wxWidgets-3.2.8.zip ## Binaries @@ -58,60 +58,60 @@ End users may download one of `wxMSW-3.2.8_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.8_ To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc730_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc810_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1030TDM_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1220_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1320_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_gcc1420_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc90_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc100_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc110_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc120_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.8_vc14x_x64_ReleasePDB.7z + 01c9c4179b2bf84026feb028e5246f91db245bbc wxMSW-3.2.8_gcc730_Dev.7z + 27d78b77e48ebbb4f7fb8714dc8a559df3078bbb wxMSW-3.2.8_gcc730_ReleaseDLL.7z + 1869bf5a6f21fb58445bbce70c5b404f1ca64141 wxMSW-3.2.8_gcc730_x64_Dev.7z + 399bf0965d1fb5bc2a241378180384adb68bbd67 wxMSW-3.2.8_gcc730_x64_ReleaseDLL.7z + 1b0e8039c8dacb33ad6187040faa58ebd2b5d6d7 wxMSW-3.2.8_gcc810_Dev.7z + 7a69b9248241a9685610378558bd302cb0e85070 wxMSW-3.2.8_gcc810_ReleaseDLL.7z + 64b1513b9127fb1bbde9c2b83b698a9f7ca4c90f wxMSW-3.2.8_gcc810_x64_Dev.7z + 0d095c7a9af7e9078afeaf67ea5454a43e7b9a3c wxMSW-3.2.8_gcc810_x64_ReleaseDLL.7z + 6860499a2c235835fa2d5c403dbdf5e17861ee83 wxMSW-3.2.8_gcc1030TDM_Dev.7z + 9e5de73ffc759d958402eb24462dd2db5f21950c wxMSW-3.2.8_gcc1030TDM_ReleaseDLL.7z + 0ade35ddaedd434a089032276dbee88ed76335f5 wxMSW-3.2.8_gcc1030TDM_x64_Dev.7z + 7f173e04b5dd705411532214f85c819ed6ec1b10 wxMSW-3.2.8_gcc1030TDM_x64_ReleaseDLL.7z + 0aee1f044dacad0b0b3873ee9364e0a23e245bd4 wxMSW-3.2.8_gcc1220_Dev.7z + 8bef9f0b6d379f076bde2001202742a205db9e67 wxMSW-3.2.8_gcc1220_ReleaseDLL.7z + 76813467f7f11bbeaaf8cf557b7c806a4786d6ef wxMSW-3.2.8_gcc1220_x64_Dev.7z + 265b59a478ab0a8b99649c5b82b5c3bfc2ae38d1 wxMSW-3.2.8_gcc1220_x64_ReleaseDLL.7z + eb5a77474cd22f6d45cb46ffe7c2790991855dcf wxMSW-3.2.8_gcc1320_Dev.7z + fbec0402227f17aceecf9ce4acab14c58094abe0 wxMSW-3.2.8_gcc1320_ReleaseDLL.7z + a1af808c695a87136890b1c1e1d61bfed44e2520 wxMSW-3.2.8_gcc1320_x64_Dev.7z + a9c1f291ea2149254c71b61bb9445b6d7b981cb0 wxMSW-3.2.8_gcc1320_x64_ReleaseDLL.7z + d3f01f4c842bee3b274f7130b8cbf6fda21ba9c4 wxMSW-3.2.8_gcc1420_Dev.7z + da55ec64fb7f659d1ea3757bda4cdb3388b0001c wxMSW-3.2.8_gcc1420_ReleaseDLL.7z + 929e70885f42e24a3ba3e4af55db1dcee16b364e wxMSW-3.2.8_gcc1420_x64_Dev.7z + e8ca1418e2bd2b1f891225123ae4028db62691dd wxMSW-3.2.8_gcc1420_x64_ReleaseDLL.7z + 860ce1b6b4c3a7c28de5cd29d4585ec7383a7047 wxMSW-3.2.8_vc90_Dev.7z + 4c09d2350a055d95e0d335ef207311cc2d9a84c4 wxMSW-3.2.8_vc90_ReleaseDLL.7z + b90782d3139520bf91d390b1c79b4868c92765f4 wxMSW-3.2.8_vc90_ReleasePDB.7z + 6547a3fc04bd1f5e3a616a8ecae78b86845dd870 wxMSW-3.2.8_vc90_x64_Dev.7z + 310970089145d809054fe7d5551b40100f7916f5 wxMSW-3.2.8_vc90_x64_ReleaseDLL.7z + 68404af2479c4d59353ffddb63eb0b47f2210dbd wxMSW-3.2.8_vc90_x64_ReleasePDB.7z + 5267f411f1b32b59a44cba054dd5c4eeea8e75d5 wxMSW-3.2.8_vc100_Dev.7z + c6ac7e4c884edda7571b08655e972e0629e1c961 wxMSW-3.2.8_vc100_ReleaseDLL.7z + 1585a26353ede45dc4635c13a2df14a9a696c19b wxMSW-3.2.8_vc100_ReleasePDB.7z + 0a6b70e8881027e55bb9ca5c6354a514f165a7e0 wxMSW-3.2.8_vc100_x64_Dev.7z + 7784ec0667a812bf2edb609434e6b0fbfaf6c21d wxMSW-3.2.8_vc100_x64_ReleaseDLL.7z + 210a50cc93422da7f420390a786ba0e823cffb48 wxMSW-3.2.8_vc100_x64_ReleasePDB.7z + bb1ff565d7a2f37e79fb06ebaea90a49e7893812 wxMSW-3.2.8_vc110_Dev.7z + aa90f9ebe6c46e46f75e2158bec7c51c9e1ac9be wxMSW-3.2.8_vc110_ReleaseDLL.7z + 3c1cbb8a5994aba976df26082fbb68853ac3e94f wxMSW-3.2.8_vc110_ReleasePDB.7z + 8a3e81ac703c98429c9fc424730f628c58c9cc96 wxMSW-3.2.8_vc110_x64_Dev.7z + a39ece69d86afa512eb043fc025709d16323db20 wxMSW-3.2.8_vc110_x64_ReleaseDLL.7z + f8135ede0368cb8b26db055e6c8e3ef97464da1c wxMSW-3.2.8_vc110_x64_ReleasePDB.7z + b3ea1448f6b1998c643445f0dedc93a51b025a2c wxMSW-3.2.8_vc120_Dev.7z + f53299864e205a533594c16bb81505af2e3fbb57 wxMSW-3.2.8_vc120_ReleaseDLL.7z + 8709d65a476a600afdd4f4b8bd17c61797925330 wxMSW-3.2.8_vc120_ReleasePDB.7z + 6357eaed467284f901d4eeeec8b9b9d044d3410a wxMSW-3.2.8_vc120_x64_Dev.7z + 8054e0df13abd8a28cc7bdbeb1818dc6682ba555 wxMSW-3.2.8_vc120_x64_ReleaseDLL.7z + d1c078f7f4c4a02b85c652568d87566709e65a08 wxMSW-3.2.8_vc120_x64_ReleasePDB.7z + 65112a99d3e253796081d1ec80df294290403398 wxMSW-3.2.8_vc14x_Dev.7z + 44ceee6ddcbb6aa60de6b6fc26c57491c189477f wxMSW-3.2.8_vc14x_ReleaseDLL.7z + f9253e55e2d1d20487d14d01e2bdab9a95e7d169 wxMSW-3.2.8_vc14x_ReleasePDB.7z + abf0be396b7648405883058090e4ad5f4d13918e wxMSW-3.2.8_vc14x_x64_Dev.7z + 2ad8fcc7bf28db8126eae55284eccbdfa7d02e27 wxMSW-3.2.8_vc14x_x64_ReleaseDLL.7z + aef0fe5e8456cefa6cc22db4b8dd43976e210143 wxMSW-3.2.8_vc14x_x64_ReleasePDB.7z ## Reporting Problems From a3decee0978bd9227ac3e276885502b70ad2e261 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 Apr 2025 17:35:56 +0200 Subject: [PATCH 176/416] Update the version to 3.2.9 --- Makefile.in | 8 ++++---- build/bakefiles/version.bkl | 2 +- build/msw/makefile.gcc | 2 +- build/msw/makefile.vc | 2 +- build/msw/wx_setup.props | 2 +- build/osx/wxvers.xcconfig | 2 +- build/tools/msvs/getversion.bat | 2 +- configure | 20 ++++++++++---------- configure.in | 4 ++-- demos/bombs/Makefile.in | 2 +- demos/forty/Makefile.in | 2 +- demos/fractal/Makefile.in | 2 +- demos/life/Makefile.in | 2 +- demos/poem/Makefile.in | 2 +- docs/changes.txt | 4 ++++ docs/doxygen/Doxyfile | 2 +- docs/readme.txt | 10 +++++----- include/wx/osx/config_xcode.h | 4 ++-- include/wx/version.h | 4 ++-- samples/access/Makefile.in | 2 +- samples/animate/Makefile.in | 2 +- samples/artprov/Makefile.in | 2 +- samples/aui/Makefile.in | 2 +- samples/calendar/Makefile.in | 2 +- samples/caret/Makefile.in | 2 +- samples/clipboard/Makefile.in | 2 +- samples/collpane/Makefile.in | 2 +- samples/combo/Makefile.in | 2 +- samples/config/Makefile.in | 2 +- samples/dataview/Makefile.in | 2 +- samples/debugrpt/Makefile.in | 2 +- samples/dialogs/Makefile.in | 2 +- samples/dialup/Makefile.in | 2 +- samples/display/Makefile.in | 2 +- samples/dll/Makefile.in | 2 +- samples/dnd/Makefile.in | 2 +- samples/docview/Makefile.in | 2 +- samples/dragimag/Makefile.in | 2 +- samples/drawing/Makefile.in | 2 +- samples/erase/Makefile.in | 2 +- samples/event/Makefile.in | 2 +- samples/except/Makefile.in | 2 +- samples/exec/Makefile.in | 2 +- samples/font/Makefile.in | 2 +- samples/fswatcher/Makefile.in | 2 +- samples/grid/Makefile.in | 2 +- samples/help/Makefile.in | 2 +- samples/htlbox/Makefile.in | 2 +- samples/html/about/Makefile.in | 2 +- samples/html/help/Makefile.in | 2 +- samples/html/helpview/Makefile.in | 2 +- samples/html/printing/Makefile.in | 2 +- samples/html/test/Makefile.in | 2 +- samples/html/virtual/Makefile.in | 2 +- samples/html/widget/Makefile.in | 2 +- samples/html/zip/Makefile.in | 2 +- samples/image/Makefile.in | 2 +- samples/internat/Makefile.in | 2 +- samples/ipc/Makefile.in | 2 +- samples/joytest/Makefile.in | 2 +- samples/keyboard/Makefile.in | 2 +- samples/layout/Makefile.in | 2 +- samples/listctrl/Makefile.in | 2 +- samples/mdi/Makefile.in | 2 +- samples/mediaplayer/Makefile.in | 2 +- samples/memcheck/Makefile.in | 2 +- samples/menu/Makefile.in | 2 +- samples/minimal/Info_cocoa.plist | 8 ++++---- samples/minimal/Makefile.in | 2 +- samples/nativdlg/Makefile.in | 2 +- samples/notebook/Makefile.in | 2 +- samples/oleauto/Makefile.in | 2 +- samples/opengl/cube/Makefile.in | 2 +- samples/opengl/isosurf/Makefile.in | 2 +- samples/opengl/penguin/Makefile.in | 2 +- samples/opengl/pyramid/Makefile.in | 2 +- samples/ownerdrw/Makefile.in | 2 +- samples/popup/Makefile.in | 2 +- samples/power/Makefile.in | 2 +- samples/preferences/Makefile.in | 2 +- samples/printing/Makefile.in | 2 +- samples/propgrid/Makefile.in | 2 +- samples/regtest/Makefile.in | 2 +- samples/render/Makefile.in | 2 +- samples/ribbon/Makefile.in | 2 +- samples/richtext/Makefile.in | 2 +- samples/sashtest/Makefile.in | 2 +- samples/scroll/Makefile.in | 2 +- samples/shaped/Makefile.in | 2 +- samples/sockets/Makefile.in | 2 +- samples/sound/Makefile.in | 2 +- samples/splash/Makefile.in | 2 +- samples/splitter/Makefile.in | 2 +- samples/statbar/Makefile.in | 2 +- samples/stc/Makefile.in | 2 +- samples/svg/Makefile.in | 2 +- samples/taborder/Makefile.in | 2 +- samples/taskbar/Makefile.in | 2 +- samples/taskbarbutton/Makefile.in | 2 +- samples/text/Makefile.in | 2 +- samples/thread/Makefile.in | 2 +- samples/toolbar/Makefile.in | 2 +- samples/treectrl/Makefile.in | 2 +- samples/treelist/Makefile.in | 2 +- samples/typetest/Makefile.in | 2 +- samples/uiaction/Makefile.in | 2 +- samples/validate/Makefile.in | 2 +- samples/vscroll/Makefile.in | 2 +- samples/webrequest/Makefile.in | 2 +- samples/webview/Makefile.in | 2 +- samples/widgets/Makefile.in | 2 +- samples/wizard/Makefile.in | 2 +- samples/wrapsizer/Makefile.in | 2 +- samples/xrc/Makefile.in | 2 +- samples/xti/Makefile.in | 2 +- tests/Makefile.in | 2 +- tests/benchmarks/Makefile.in | 2 +- utils/helpview/src/Makefile.in | 2 +- utils/screenshotgen/src/Makefile.in | 2 +- 119 files changed, 144 insertions(+), 140 deletions(-) diff --git a/Makefile.in b/Makefile.in index 49deccbbafa0..c00ac41791b1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -82,7 +82,7 @@ wxCFLAGS_C99 = @wxCFLAGS_C99@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WXREGEX_CFLAGS = $(WX_CPPFLAGS) -DNDEBUG \ -I$(wx_top_builddir)/3rdparty/pcre/src -D__WX__ -DHAVE_CONFIG_H \ @@ -2216,7 +2216,7 @@ LOCALE_LINGUAS = af an ar ca ca@valencia co cs da de el es eu fa_IR fi fr gl_ES @COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX) @COND_USE_PLUGINS_0@PLUGIN_ADV_EXTRALIBS = $(EXTRALIBS_SDL) @COND_PLATFORM_MACOSX_1@WXMACVERSION_CMD = \ -@COND_PLATFORM_MACOSX_1@ -compatibility_version 5.0 -current_version 5.1 +@COND_PLATFORM_MACOSX_1@ -compatibility_version 5.0 -current_version 5.2 @COND_USE_GUI_0@PORTNAME = base @COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION) @COND_TOOLKIT_MAC@WXBASEPORT = _carbon @@ -13979,9 +13979,9 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0 \ @COND_USE_SOVERSION_0@dll___targetsuf2 = .$(SO_SUFFIX) @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@dll___targetsuf3 \ @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \ -@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.4.1 +@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.4.2 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@dll___targetsuf3 \ -@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.4.1.$(SO_SUFFIX) +@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.4.2.$(SO_SUFFIX) @COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@dll___targetsuf3 = -0.$(SO_SUFFIX) @COND_USE_SOVERSION_0@dll___targetsuf3 = .$(SO_SUFFIX) @COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@dll___targetsuf3 = .$(SO_SUFFIX).0 diff --git a/build/bakefiles/version.bkl b/build/bakefiles/version.bkl index 7f85fc4aaf3a..ef9f6696b69c 100644 --- a/build/bakefiles/version.bkl +++ b/build/bakefiles/version.bkl @@ -23,7 +23,7 @@ changes, change C:R:A to C:R+1:A --> 4 - 1 + 2 4 diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index a9973443dc85..9b1721e06f3f 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -5989,7 +5989,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=8 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=9 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index f1d20ad7f457..4d00c12bdf62 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -6456,7 +6456,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=8 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=9 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/wx_setup.props b/build/msw/wx_setup.props index 08da95c24d2a..54c4b32d38c4 100644 --- a/build/msw/wx_setup.props +++ b/build/msw/wx_setup.props @@ -5,7 +5,7 @@
- 328 + 329 32 msw vc diff --git a/build/osx/wxvers.xcconfig b/build/osx/wxvers.xcconfig index f1088d3fb4fb..8e7b553232f7 100644 --- a/build/osx/wxvers.xcconfig +++ b/build/osx/wxvers.xcconfig @@ -1,4 +1,4 @@ // update this file with new version numbers DYLIB_COMPATIBILITY_VERSION = 3.2 -DYLIB_CURRENT_VERSION = 3.2.8 +DYLIB_CURRENT_VERSION = 3.2.9 diff --git a/build/tools/msvs/getversion.bat b/build/tools/msvs/getversion.bat index 7b0caa07bcba..dbd9f35e3664 100644 --- a/build/tools/msvs/getversion.bat +++ b/build/tools/msvs/getversion.bat @@ -1,3 +1,3 @@ set wxMAJOR_VERSION=3 set wxMINOR_VERSION=2 -set wxRELEASE_NUMBER=8 +set wxRELEASE_NUMBER=9 diff --git a/configure b/configure index 0fc69ecfb267..a611e311f32a 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.8. +# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.9. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='wxWidgets' PACKAGE_TARNAME='wxwidgets' -PACKAGE_VERSION='3.2.8' -PACKAGE_STRING='wxWidgets 3.2.8' +PACKAGE_VERSION='3.2.9' +PACKAGE_STRING='wxWidgets 3.2.9' PACKAGE_BUGREPORT='wx-dev@googlegroups.com' PACKAGE_URL='' @@ -2012,7 +2012,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wxWidgets 3.2.8 to adapt to many kinds of systems. +\`configure' configures wxWidgets 3.2.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2082,7 +2082,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wxWidgets 3.2.8:";; + short | recursive ) echo "Configuration of wxWidgets 3.2.9:";; esac cat <<\_ACEOF @@ -2589,7 +2589,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wxWidgets configure 3.2.8 +wxWidgets configure 3.2.9 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3406,7 +3406,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wxWidgets $as_me 3.2.8, which was +It was created by wxWidgets $as_me 3.2.9, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3869,7 +3869,7 @@ fi wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=8 +wx_release_number=9 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number @@ -46969,7 +46969,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wxWidgets $as_me 3.2.8, which was +This file was extended by wxWidgets $as_me 3.2.9, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -47035,7 +47035,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wxWidgets config.status 3.2.8 +wxWidgets config.status 3.2.9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 3fc9a1d36bfe..290804b974ea 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- -AC_INIT([wxWidgets], [3.2.8], [wx-dev@googlegroups.com]) +AC_INIT([wxWidgets], [3.2.9], [wx-dev@googlegroups.com]) dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package AC_CONFIG_SRCDIR([wx-config.in]) @@ -40,7 +40,7 @@ dnl wx_release_number += 1 wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=8 +wx_release_number=9 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index 85b9bf757565..d22d431f7c89 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib BOMBS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index 6aa776623aaa..5817bfcf3328 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib FORTY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index 66a4f28830dd..30cbb1f0a7e9 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib FRACTAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index a92fc3537d16..e9fc065ccc6a 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib LIFE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index 823ed44ab826..9d6485ded043 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WXPOEM_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/docs/changes.txt b/docs/changes.txt index 88427fdf5968..8665de0cdbcb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -249,6 +249,10 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. +3.2.9: (released 2025-??-??) +---------------------------- + + 3.2.8: (released 2025-04-24) ---------------------------- diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index f27da780fb33..bd6608468477 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = wxWidgets -PROJECT_NUMBER = 3.2.8 +PROJECT_NUMBER = 3.2.9 PROJECT_BRIEF = PROJECT_LOGO = logo.png OUTPUT_DIRECTORY = out diff --git a/docs/readme.txt b/docs/readme.txt index 36aa5ec6789f..d6554467d6c2 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -wxWidgets 3.2.8 Release Notes +wxWidgets 3.2.9 Release Notes ============================= Welcome to the new stable release of wxWidgets, a free and open source @@ -16,7 +16,7 @@ more about wxWidgets at: Documentation is available online at: -* https://docs.wxwidgets.org/3.2.8/ +* https://docs.wxwidgets.org/3.2.9/ wxWidgets sources and binaries for the selected platforms are available for download from: @@ -25,9 +25,9 @@ download from: or, for a more more permanent but less convenient to use link, from -* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.8/ +* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.9/ -Please see https://docs.wxwidgets.org/3.2.8/overview_install.html for full +Please see https://docs.wxwidgets.org/3.2.9/overview_install.html for full installation instructions. @@ -62,7 +62,7 @@ Other changes include: Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x releases, so the existing applications don't even need to be rebuilt to profit from all the diff --git a/include/wx/osx/config_xcode.h b/include/wx/osx/config_xcode.h index 30d6e012db81..479767f3ec3a 100644 --- a/include/wx/osx/config_xcode.h +++ b/include/wx/osx/config_xcode.h @@ -121,9 +121,9 @@ #define PACKAGE_BUGREPORT "wx-dev@googlegroups.com" #define PACKAGE_NAME "wxWidgets" -#define PACKAGE_STRING "wxWidgets 3.2.8" +#define PACKAGE_STRING "wxWidgets 3.2.9" #define PACKAGE_TARNAME "wxwidgets" -#define PACKAGE_VERSION "3.2.8" +#define PACKAGE_VERSION "3.2.9" // for jpeg diff --git a/include/wx/version.h b/include/wx/version.h index ff10c56489f9..773a61df29fe 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -27,9 +27,9 @@ /* NB: this file is parsed by automatic tools so don't change its format! */ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 -#define wxRELEASE_NUMBER 8 +#define wxRELEASE_NUMBER 9 #define wxSUBRELEASE_NUMBER 0 -#define wxVERSION_STRING wxT("wxWidgets 3.2.8") +#define wxVERSION_STRING wxT("wxWidgets 3.2.9") /* nothing to update below this line when updating the version */ /* ---------------------------------------------------------------------------- */ diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index 42aba9ee336e..3f8746ef2ef4 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ACCESSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index 3f3e56aa2e5e..6bc726533f36 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ANITEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index 3b4a0b50589d..14b6821cae6f 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ARTTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index 1b0d091b41a1..fa4f99094608 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib AUIDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index 674b8e1fd08e..e886feb88406 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib CALENDAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index 2756407a5ae9..94dc3a8a9856 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib CARET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index 63db49efd087..966856cd1e38 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib CLIPBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index 09493c1f4d04..8ece5a6c1aa3 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib COLLPANE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index 5756864060f7..8976f1e116b8 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib COMBO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index 27e68822e226..fd1bb23541a7 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib CONFTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index e840b6a822ab..610b06e890aa 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DATAVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index f34e94b9bf66..8f2b008a0e7c 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DEBUGRPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index 27e6c371d091..a6765635cd8e 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DIALOGS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index 5a118411daa1..3f35a182beea 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib NETTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index 6fdcdeec8579..63ceb9a38700 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DISPLAY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index 85b2826f5b78..060992718ae8 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -50,7 +50,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib MY_DLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index 4b427113fe4f..101895f4610d 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index d58ce55b6fc1..4ac1ffc6447b 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DOCVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index 120298b82169..ba551fdd0521 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DRAGIMAG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index f4b99a1271dc..622b8ab1ba9a 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib DRAWING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index 93265a9b42b1..4c9aae6b218b 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ERASE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index 2d9c72350f52..7cd8f5f6cce0 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib EVENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index 3401b773eb8e..e1ae13591694 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib EXCEPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index 9a4f9a2e56ea..5d118ecfa144 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib EXEC_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index aded18e96492..91362a7d5e3f 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib FONT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index 086bf84d1362..c8d994208da4 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib FSWATCHER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index 2904d22c0aa2..706541fba570 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib GRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index 454446b71751..190482a66d91 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib HELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index 569b8b2f1852..e3d8fb24bd49 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib HTLBOX_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index aec56efcbb64..a8fda8cd744d 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ABOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index 87d087334e0b..e7409a2af481 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib HTMLHELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index bfcc66fa0ede..6bde0de46055 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 1ed475afbc1f..625d34dc6dc0 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib HTMLPRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index 8ac048e83751..5bf99799406c 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index 8f643e6064c7..16d1295c1055 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib VIRTUAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index cd0953c106ac..6fa1d70791af 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WIDGET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index 8996b7afcdef..d4c20beaac67 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ZIP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index 6618dd27d144..92c479b1e118 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib IMAGE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index f090bd814338..ae9a7f859b73 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib INTERNAT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index f8969d7ff438..bea63e669566 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib IPCCLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index f6f8c99f132d..646bc44fbd0d 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib JOYTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index 550fa49b64d0..bfb0776f9b00 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib KEYBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index 6a08853043d0..37deca69d8d0 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib LAYOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index 7d9c60775256..0525aae9da87 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib LISTCTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index a8d28ce35500..d1b9f3a83e74 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib MDI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index e21acfe1ef67..9b1d609b4ceb 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib MEDIAPLAYER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index e2361b9ea6bf..7c9274cddb7b 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib MEMCHECK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index dd307c083b08..29ed46ea3e65 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib MENU_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 7276bec979af..87ea951e888f 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.8, (c) 2005-2025 wxWidgets + $(PRODUCT_NAME) version 3.2.9, (c) 2005-2025 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,15 +15,15 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.8, (c) 2005-2025 wxWidgets + 3.2.9, (c) 2005-2025 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 3.2.8 + 3.2.9 CFBundleVersion - 3.2.8 + 3.2.9 NSHumanReadableCopyright Copyright 2005-2025 wxWidgets NSPrincipalClass diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index a43473712655..14ddfff80395 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib MINIMAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index 3c01973b17b0..ffc6f4a2e462 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib NATIVDLG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index ff6f03971cf5..95cef522c8e7 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib NOTEBOOK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index 960f62c509fb..c88a029b69e2 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib OLEAUTO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index be81e4ad4966..4b29990e651b 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib CUBE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index dc196b626fbd..c81b9726d7e0 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib ISOSURF_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index f258207f72bf..bd25511c1535 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib PENGUIN_CFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index 38b087c33c41..b7830ef49f1e 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib PYRAMID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index ad8966ba1c22..fe253f4f3dca 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib OWNERDRW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index d7b1934d83f6..22b3cd5c6da0 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib POPUP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index 18b89b03b439..46380f48116d 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib POWER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index 102342b80909..3d4e3a940d2d 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib PREFERENCES_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index f4e34024b0bd..1e8b3313ae97 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib PRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index 8908eac6d089..6cf662818dff 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib PROPGRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index 04e91e25ba99..7c0fd8608ce7 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib REGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index 8c69a6d2ba01..06288691e315 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -53,7 +53,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0) RENDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ diff --git a/samples/ribbon/Makefile.in b/samples/ribbon/Makefile.in index bd85f58afea8..03d2d20086e8 100644 --- a/samples/ribbon/Makefile.in +++ b/samples/ribbon/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib RIBBON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/richtext/Makefile.in b/samples/richtext/Makefile.in index 960a1dfdabdf..39071fd0585a 100644 --- a/samples/richtext/Makefile.in +++ b/samples/richtext/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib RICHTEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in index bb8e9bac8bfb..d9c4eb712b9e 100644 --- a/samples/sashtest/Makefile.in +++ b/samples/sashtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SASHTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/scroll/Makefile.in b/samples/scroll/Makefile.in index 1bd456e523f3..a0cbdfad8b00 100644 --- a/samples/scroll/Makefile.in +++ b/samples/scroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SCROLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/shaped/Makefile.in b/samples/shaped/Makefile.in index 61602248584c..e31dc9a18535 100644 --- a/samples/shaped/Makefile.in +++ b/samples/shaped/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SHAPED_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sockets/Makefile.in b/samples/sockets/Makefile.in index af74c0119c63..8bfa5db78eee 100644 --- a/samples/sockets/Makefile.in +++ b/samples/sockets/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib CLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sound/Makefile.in b/samples/sound/Makefile.in index eb189cf6fa3b..5bb9d4b74e26 100644 --- a/samples/sound/Makefile.in +++ b/samples/sound/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SOUND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splash/Makefile.in b/samples/splash/Makefile.in index a67d30a0d54f..45ba21c4b4cc 100644 --- a/samples/splash/Makefile.in +++ b/samples/splash/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SPLASH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index 8199e07c215c..195a93dfaa32 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SPLITTER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/statbar/Makefile.in b/samples/statbar/Makefile.in index e53caf1a80e2..8f73fd63270f 100644 --- a/samples/statbar/Makefile.in +++ b/samples/statbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib STATBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index 14816c6d4b10..277fa04db451 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib STCTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index 96cf1c50c545..5639715d00bb 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SVGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taborder/Makefile.in b/samples/taborder/Makefile.in index ca98a11e9ab0..832ed1f10cc4 100644 --- a/samples/taborder/Makefile.in +++ b/samples/taborder/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TABORDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbar/Makefile.in b/samples/taskbar/Makefile.in index 10a15ae4b7ce..47fa6ad745bf 100644 --- a/samples/taskbar/Makefile.in +++ b/samples/taskbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TASKBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbarbutton/Makefile.in b/samples/taskbarbutton/Makefile.in index a1cec1e6fcd1..a28471d47dcb 100644 --- a/samples/taskbarbutton/Makefile.in +++ b/samples/taskbarbutton/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TASKBARBUTTON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in index fdddf7483fa2..6c6187b82e4b 100644 --- a/samples/text/Makefile.in +++ b/samples/text/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in index eecdb9bfdb2d..fbc9eaf1e642 100644 --- a/samples/thread/Makefile.in +++ b/samples/thread/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib THREAD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in index cc587a948d6e..64e62e3557ea 100644 --- a/samples/toolbar/Makefile.in +++ b/samples/toolbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TOOLBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in index f5d24cb20006..6ba19ebe5eaa 100644 --- a/samples/treectrl/Makefile.in +++ b/samples/treectrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TREECTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treelist/Makefile.in b/samples/treelist/Makefile.in index f303d7791145..6f03adbaf8f1 100644 --- a/samples/treelist/Makefile.in +++ b/samples/treelist/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TREELIST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in index 9b6b98aaae0f..a8f756573b32 100644 --- a/samples/typetest/Makefile.in +++ b/samples/typetest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TYPETEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/uiaction/Makefile.in b/samples/uiaction/Makefile.in index 3e7d5edc4581..067a2d4355ba 100644 --- a/samples/uiaction/Makefile.in +++ b/samples/uiaction/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib UIACTION_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in index 5d95e2a20910..62cb885c5861 100644 --- a/samples/validate/Makefile.in +++ b/samples/validate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib VALIDATE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/vscroll/Makefile.in b/samples/vscroll/Makefile.in index ab3d6cada38d..ddf4bb0e3e09 100644 --- a/samples/vscroll/Makefile.in +++ b/samples/vscroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib VSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webrequest/Makefile.in b/samples/webrequest/Makefile.in index e9a5d6e9aad2..b1b6ff9a2de1 100644 --- a/samples/webrequest/Makefile.in +++ b/samples/webrequest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WEBREQUEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webview/Makefile.in b/samples/webview/Makefile.in index ea6d78b5868a..eadc981e55ae 100644 --- a/samples/webview/Makefile.in +++ b/samples/webview/Makefile.in @@ -46,7 +46,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WEBVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index fe35b677e464..3fbb975541bb 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WIDGETS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wizard/Makefile.in b/samples/wizard/Makefile.in index ccc0a95ce386..b5d5cb8dbaaf 100644 --- a/samples/wizard/Makefile.in +++ b/samples/wizard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WIZARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wrapsizer/Makefile.in b/samples/wrapsizer/Makefile.in index 01c9786e2da2..de4b1cdd60b2 100644 --- a/samples/wrapsizer/Makefile.in +++ b/samples/wrapsizer/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib WRAPSIZER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index 8ee09ac9a1cd..eb8a299ff356 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib XRCDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xti/Makefile.in b/samples/xti/Makefile.in index db149d9a95e1..8630d0f915b6 100644 --- a/samples/xti/Makefile.in +++ b/samples/xti/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib XTI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/tests/Makefile.in b/tests/Makefile.in index b2ab47561eb1..794cdfbf8f5b 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -52,7 +52,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(__test_PCH_INC) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in index 4cbf6294748c..5d130b734985 100644 --- a/tests/benchmarks/Makefile.in +++ b/tests/benchmarks/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib BENCH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/helpview/src/Makefile.in b/utils/helpview/src/Makefile.in index 8bf6500e4efe..b9691b06ca1f 100644 --- a/utils/helpview/src/Makefile.in +++ b/utils/helpview/src/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/screenshotgen/src/Makefile.in b/utils/screenshotgen/src/Makefile.in index efab5923da69..26e8bbc9af99 100644 --- a/utils/screenshotgen/src/Makefile.in +++ b/utils/screenshotgen/src/Makefile.in @@ -49,7 +49,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).8 +WX_VERSION = $(WX_RELEASE).9 LIBDIRNAME = $(wx_top_builddir)/lib SCREENSHOTGEN_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ From 24853d29a31ec7d4d43d52bd5b5003f9e2822463 Mon Sep 17 00:00:00 2001 From: Richard <61946508+nobugshere@users.noreply.github.com> Date: Thu, 24 Apr 2025 11:11:39 -0700 Subject: [PATCH 177/416] Do not activate CLOSE button on Cmd-C in wxOSX Extend the hack of 22bcdf020e (Don't use Cmd+C accelerator in dilogs on Mac by default., 2016-07-17) (later amended by 7a45b7948a (Move the hack for Cmd+C in wxOSX to a better place, 2019-01-09), to wxID_CLOSE in addition to wxID_CANCEL and for the same reason: Cmd-C is used for copying and shouldn't active the button. See #15678, #25346. (cherry picked from commit 2b0b6d4a1dc52ab628e36bf1f965db02147ff5b7) --- docs/changes.txt | 4 ++++ src/osx/cocoa/button.mm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8665de0cdbcb..8c0071680bb0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.9: (released 2025-??-??) ---------------------------- +wxOSX: + +- Do not activate "Close" button on Cmd-C (nobugshere, #25346). + 3.2.8: (released 2025-04-24) ---------------------------- diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index 59cf925d8584..82ab4ef153b7 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -148,7 +148,7 @@ - (NSControlSize)controlSize; wxString accelstring(label[accelPos + 1]); // Skip '&' itself accelstring.MakeLower(); // Avoid Cmd+C closing dialog on Mac. - if (accelstring == "c" && GetWXPeer()->GetId() == wxID_CANCEL) + if (accelstring == "c" && (GetWXPeer()->GetId() == wxID_CANCEL || GetWXPeer()->GetId() == wxID_CLOSE)) { [GetNSButton() setKeyEquivalent:@""]; } From fca32498cd92be1d2d7e385f6c032257ce8bc616 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 28 Apr 2025 23:44:04 +0200 Subject: [PATCH 178/416] Fix handling window total size under GNOME with X11 Due to getting two notifications about _NET_REQUEST_FRAME_EXTENTS from mutter (GNOME WM), we didn't do the right thing as the second one arrived after mapping the window and the code assumed that in this case the window already has the correct size and only internal size needs to be adjusted. In this case, however, the window doesn't have the correct size and we need to adjust it once we get the real decoration sizes values and not just zeroes for all of them that we get during the first notification. Note that we can't just filter out that first notification because then we never map the window and so never get the second one. See #25348. (cherry picked from commit 9537141500371fe498ac98d9d48494e58f662b55) --- docs/changes.txt | 4 ++++ src/gtk/toplevel.cpp | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8c0071680bb0..4c5213d72fd3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.9: (released 2025-??-??) ---------------------------- +wxGTK: + +- Fix handling total window size with GNOME with X11 (#25348). + wxOSX: - Do not activate "Close" button on Cmd-C (nobugshere, #25346). diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 01fde006a8c1..69e3e4a5cdfc 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -1500,7 +1500,19 @@ void wxTopLevelWindowGTK::GTKUpdateDecorSize(const DecorSize& decorSize) } DoSetSizeHints(m_minWidth, m_minHeight, m_maxWidth, m_maxHeight, m_incWidth, m_incHeight); } - if (m_deferShow) + + // We decide to defer showing the window only when its total (and not + // client) size had been set, and in this case we didn't set it + // correctly because we didn't have the correct decorations sizes when + // we did it -- but now that we do, we can adjust the size to the + // desired value. + // + // Note that we can't test for m_deferShow itself here because it may + // have been already reset to false if a WM had generated a + // notification with wrong _NET_REQUEST_FRAME_EXTENTS values first (as + // mutter does, at least in GNOME 3.48, where it sends 0 values for the + // not yet mapped window). + if (m_deferShowAllowed) { // keep overall size unchanged by shrinking m_widget int w, h; @@ -1517,7 +1529,11 @@ void wxTopLevelWindowGTK::GTKUpdateDecorSize(const DecorSize& decorSize) } if (!resized) { - // adjust overall size to match change in frame extents + // We can't resize the window, either because it's already shown + // (i.e. we didn't defer showing it) or because resizing it would + // make it smaller than its minimum size. In this case we have to + // adjust the stored size to accurately reflect the actual size of + // the window. m_width += diff.x; m_height += diff.y; if (m_width < 1) m_width = 1; From eec195c0ecfcac39c695ca65aece248ee7a141b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Wed, 7 May 2025 12:23:57 +0200 Subject: [PATCH 179/416] Implement GetMainWindowOfCompositeControl for wxDataViewCtrl Implement GetMainWindowOfCompositeControl() in the generic version of wxDataViewCtrl so that focus is reported correctly. See #25372. (cherry picked from commit 863e18f5969ad121c42719f36d200d2dde93d5fe) --- src/generic/datavgen.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 08286f21edc0..98fc55e73df9 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -301,6 +301,9 @@ class wxDataViewHeaderWindow : public wxHeaderCtrl wxDataViewCtrl *GetOwner() const { return static_cast(GetParent()); } + virtual wxWindow *GetMainWindowOfCompositeControl() wxOVERRIDE + { return GetOwner(); } + // Add/Remove additional column to sorting columns void ToggleSortByColumn(int column) { @@ -774,6 +777,9 @@ class wxDataViewMainWindow: public wxWindow wxDataViewModel* GetModel() { return GetOwner()->GetModel(); } const wxDataViewModel* GetModel() const { return GetOwner()->GetModel(); } + virtual wxWindow *GetMainWindowOfCompositeControl() wxOVERRIDE + { return GetOwner(); } + #if wxUSE_DRAG_AND_DROP wxBitmap CreateItemBitmap( unsigned int row, int &indent ); #endif // wxUSE_DRAG_AND_DROP From 6269297ab254d9fd6f1b15c765fae3e884ff95e8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 20 May 2025 20:58:44 +0200 Subject: [PATCH 180/416] Fix defining ELF symbols versions when flavour is used Unfortunately the changes of f3eb19ce2e (Fix ABI breakage for versioned symbols in 3.2.7, 2025-04-14) themselves broke another use case, as they didn't take into account the fact that ELF version includes the library flavour and hardcoded the version without it in elfversion.h. Fix this by defining wxELF_VERSION_PREFIX in configure and using it in this header to use proper symver value even when flavour is not empty. See #25327. Closes #25436. --- configure | 9 ++++++++- configure.in | 6 +++++- docs/changes.txt | 4 ++++ include/wx/private/elfversion.h | 8 ++------ setup.h.in | 3 +++ 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/configure b/configure index a611e311f32a..57a04db1f8f5 100755 --- a/configure +++ b/configure @@ -34309,7 +34309,14 @@ if test "$wxUSE_DEBUG_INFO" = "yes"; then DEBUG_INFO=1 fi -WX_VERSION_TAG=`echo WX${lib_unicode_suffix}${WX_LIB_FLAVOUR}_${WX_RELEASE} | tr '[a-z]' '[A-Z]'` +wxELF_VERSION_PREFIX=`echo WX${lib_unicode_suffix}${WX_LIB_FLAVOUR}_ | tr '[a-z]' '[A-Z]'` +if test "$wxUSE_ELF_SYMVER" != "no"; then + cat >>confdefs.h <<_ACEOF +#define wxELF_VERSION_PREFIX "$wxELF_VERSION_PREFIX" +_ACEOF + +fi +WX_VERSION_TAG="${wxELF_VERSION_PREFIX}${WX_RELEASE}" TOOLCHAIN_NAME="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${WX_LIB_FLAVOUR}-${WX_RELEASE}${HOST_SUFFIX}" diff --git a/configure.in b/configure.in index 290804b974ea..610a440a0c2b 100644 --- a/configure.in +++ b/configure.in @@ -4204,7 +4204,11 @@ if test "$wxUSE_DEBUG_INFO" = "yes"; then DEBUG_INFO=1 fi -WX_VERSION_TAG=`echo WX${lib_unicode_suffix}${WX_LIB_FLAVOUR}_${WX_RELEASE} | tr '[[a-z]]' '[[A-Z]]'` +wxELF_VERSION_PREFIX=`echo WX${lib_unicode_suffix}${WX_LIB_FLAVOUR}_ | tr '[[a-z]]' '[[A-Z]]'` +if test "$wxUSE_ELF_SYMVER" != "no"; then + AC_DEFINE_UNQUOTED(wxELF_VERSION_PREFIX, "$wxELF_VERSION_PREFIX") +fi +WX_VERSION_TAG="${wxELF_VERSION_PREFIX}${WX_RELEASE}" TOOLCHAIN_NAME="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${WX_LIB_FLAVOUR}-${WX_RELEASE}${HOST_SUFFIX}" diff --git a/docs/changes.txt b/docs/changes.txt index 4c5213d72fd3..efa569222b18 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.9: (released 2025-??-??) ---------------------------- +All (Unix): + +- Fix configure build with --with-flavour option broken in 3.2.8 (#25436). + wxGTK: - Fix handling total window size with GNOME with X11 (#25348). diff --git a/include/wx/private/elfversion.h b/include/wx/private/elfversion.h index 878b4a35b817..93b40d6a4174 100644 --- a/include/wx/private/elfversion.h +++ b/include/wx/private/elfversion.h @@ -34,12 +34,8 @@ #define wxELF_SYMVER_NON_DEFAULT(sym, ver) #endif - // Our version tag depends on whether we're using Unicode or not. - #if wxUSE_UNICODE - #define wxMAKE_ELF_VERSION_TAG(ver) "WXU_" ver - #else - #define wxMAKE_ELF_VERSION_TAG(ver) "WX_" ver - #endif + // wxELF_VERSION_PREFIX is defined by configure if wxHAVE_ELF_SYMVER is. + #define wxMAKE_ELF_VERSION_TAG(ver) wxELF_VERSION_PREFIX ver // This macro is used to repair ABI compatibility problems with the symbols // versions: unfortunately, some symbols were initially added with the diff --git a/setup.h.in b/setup.h.in index 4c53ab08fe7a..59edbdbd5aad 100644 --- a/setup.h.in +++ b/setup.h.in @@ -23,6 +23,9 @@ /* Are multiple versions of the same symbol supported? */ #undef wxHAVE_ELF_SYMVER_MULTIPLE +/* Prefix for the ELF version used for the library symbols. */ +#undef wxELF_VERSION_PREFIX + /* Define if ssize_t type is available. */ #undef HAVE_SSIZE_T From f2b844307d84d34a65c8e527ff9b94bc0d7972bb Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 25 May 2025 02:25:59 +0200 Subject: [PATCH 181/416] Fix test for .symver asm directive support in configure We need to use it with the correct, i.e. existing, symbol name, which means the mangled name actually used by the linker and not just the name of the function as it appears in the source. Fix the test to actually detect lack of support for .symver when using clang with -flto. Closes #25438. --- configure | 38 +++++++++++++++++++++++++++++++++----- configure.in | 14 +++++++++++--- docs/changes.txt | 1 + 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/configure b/configure index 57a04db1f8f5..ff442b5c9f94 100755 --- a/configure +++ b/configure @@ -33873,18 +33873,26 @@ if ${wx_cv_elf_symver_multiple+:} false; then : else echo "lib_new {}; lib_old { *; };" >conftest.sym + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "wx/private/elfversion.h" - wxELF_SYMVER("foo","foo@lib_old") - wxELF_SYMVER("foo","foo@@lib_new") + extern "C" { + wxELF_SYMVER("_foo","_foo@lib_old") + wxELF_SYMVER("_foo","_foo@@lib_new") void foo() {} + } int main() { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO"; then : wx_cv_elf_symver_multiple=yes else wx_cv_elf_symver_multiple=no @@ -33892,6 +33900,12 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + rm -f conftest.sym @@ -33909,17 +33923,25 @@ if ${wx_cv_elf_symver+:} false; then : else echo "lib_new {}; lib_old { *; };" >conftest.sym + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "wx/private/elfversion.h" - wxELF_SYMVER("foo","foo@@lib_new") + extern "C" { + wxELF_SYMVER("_foo","_foo@@lib_new") void foo() {} + } int main() { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO"; then : wx_cv_elf_symver=yes else wx_cv_elf_symver=no @@ -33927,6 +33949,12 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + rm -f conftest.sym diff --git a/configure.in b/configure.in index 610a440a0c2b..9e119382a893 100644 --- a/configure.in +++ b/configure.in @@ -4025,17 +4025,21 @@ if test "$wxUSE_SHARED" = "yes"; then wx_cv_elf_symver_multiple, [ echo "lib_new {}; lib_old { *; };" >conftest.sym + AC_LANG_PUSH(C++) AC_LINK_IFELSE([ AC_LANG_SOURCE([ #include "wx/private/elfversion.h" - wxELF_SYMVER("foo","foo@lib_old") - wxELF_SYMVER("foo","foo@@lib_new") + extern "C" { + wxELF_SYMVER("_foo","_foo@lib_old") + wxELF_SYMVER("_foo","_foo@@lib_new") void foo() {} + } int main() { return 0; } ])], wx_cv_elf_symver_multiple=yes, wx_cv_elf_symver_multiple=no ) + AC_LANG_POP() rm -f conftest.sym ] ) @@ -4047,16 +4051,20 @@ if test "$wxUSE_SHARED" = "yes"; then wx_cv_elf_symver, [ echo "lib_new {}; lib_old { *; };" >conftest.sym + AC_LANG_PUSH(C++) AC_LINK_IFELSE([ AC_LANG_SOURCE([ #include "wx/private/elfversion.h" - wxELF_SYMVER("foo","foo@@lib_new") + extern "C" { + wxELF_SYMVER("_foo","_foo@@lib_new") void foo() {} + } int main() { return 0; } ])], wx_cv_elf_symver=yes, wx_cv_elf_symver=no ) + AC_LANG_POP() rm -f conftest.sym ] ) diff --git a/docs/changes.txt b/docs/changes.txt index efa569222b18..f76a70f49118 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -255,6 +255,7 @@ Changes in behaviour which may result in build errors All (Unix): - Fix configure build with --with-flavour option broken in 3.2.8 (#25436). +- Fix configure build with clang and LTO broken in 3.2.8 (#25438). wxGTK: From 5db4aebde977bd1d3b7c2a6e6658ceb81b3ce8e7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 25 May 2025 19:37:33 +0200 Subject: [PATCH 182/416] Add 3.2.8.1 section to the change log Document that these changes were made in 3.2.8.1 and not 3.2.9 as initially planned. --- docs/changes.txt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index f76a70f49118..d722aaacb0bb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,11 +252,6 @@ Changes in behaviour which may result in build errors 3.2.9: (released 2025-??-??) ---------------------------- -All (Unix): - -- Fix configure build with --with-flavour option broken in 3.2.8 (#25436). -- Fix configure build with clang and LTO broken in 3.2.8 (#25438). - wxGTK: - Fix handling total window size with GNOME with X11 (#25348). @@ -266,6 +261,14 @@ wxOSX: - Do not activate "Close" button on Cmd-C (nobugshere, #25346). +3.2.8.1: (released 2025-05-25) +------------------------------ + +This hotfix release corrects regressions in 3.2.8 for configure builds on +platforms using ELF if --with-flavour is specified (#25436) or LTO is used +with clang (#25438). + + 3.2.8: (released 2025-04-24) ---------------------------- From e04485ddf0484923eb94479cb2b1cdb7261daa35 Mon Sep 17 00:00:00 2001 From: Miguel Gimenez Date: Mon, 26 May 2025 16:19:01 +0200 Subject: [PATCH 183/416] Improve wxPropertyGrid::SetSortFunction() documentation Information about the returned value was incomplete, list all the possibilities. See #25452. (cherry picked from commit ce7273b3ba3905dbf2b7621e7a55ae0b9b5c7d0f) --- interface/wx/propgrid/propgrid.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/wx/propgrid/propgrid.h b/interface/wx/propgrid/propgrid.h index b267faa6c28c..9af854d510be 100644 --- a/interface/wx/propgrid/propgrid.h +++ b/interface/wx/propgrid/propgrid.h @@ -430,8 +430,9 @@ enum wxPG_KEYBOARD_ACTIONS Call wxPropertyGrid::SetSortFunction() to set it. - Sort function should return a value greater than 0 if position of p1 is - after p2. So, for instance, when comparing property names, you can use + Sort function should return a value greater than 0 if position of @a p1 is + after @a p2, negative if position of @a p1 is before @a p2 and 0 if they are + equivalent. So, for instance, when comparing property names, you can use the following implementation: @code From 5e82a93e8b65c3b208b09f3ae2f189a756f73728 Mon Sep 17 00:00:00 2001 From: Bill Su Date: Sun, 25 May 2025 17:44:39 -0400 Subject: [PATCH 184/416] Respect menu path style in wxFileHistory::AddFilesToMenu() too Previously this function didn't respect the path style and always used full paths in the menu items labels. Fix this by moving the logic for determining the correct label to use into GetMRUEntryLabel(), where it logically belongs. See #25451. (cherry picked from commit dce8b099141189378b6faa5e24d58ea13d4592fd) --- docs/changes.txt | 4 ++ src/common/filehistorycmn.cpp | 73 +++++++++++++++++++++-------------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index d722aaacb0bb..0c02b330343e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.9: (released 2025-??-??) ---------------------------- +All (GUI): + +- Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). + wxGTK: - Fix handling total window size with GNOME with X11 (#25348). diff --git a/src/common/filehistorycmn.cpp b/src/common/filehistorycmn.cpp index 0c93e718149c..5a9dd4b1a743 100644 --- a/src/common/filehistorycmn.cpp +++ b/src/common/filehistorycmn.cpp @@ -41,10 +41,36 @@ namespace // return the string used for the MRU list items in the menu // // NB: the index n is 0-based, as usual, but the strings start from 1 -wxString GetMRUEntryLabel(int n, const wxString& path) +wxString +GetMRUEntryLabel(int n, + const wxString& path, + wxFileHistoryMenuPathStyle style, + const wxString& firstPath) { + const wxFileName currFn(path); + + wxString pathInMenu; + switch ( style ) + { + case wxFH_PATH_SHOW_IF_DIFFERENT: + if ( currFn.HasName() && currFn.GetPath() == firstPath ) + pathInMenu = currFn.GetFullName(); + else + pathInMenu = currFn.GetFullPath(); + break; + + case wxFH_PATH_SHOW_NEVER: + // Only show the filename + extension and not the path. + pathInMenu = currFn.GetFullName(); + break; + + case wxFH_PATH_SHOW_ALWAYS: + // Always show full path. + pathInMenu = currFn.GetFullPath(); + break; + } + // we need to quote '&' characters which are used for mnemonics - wxString pathInMenu(path); pathInMenu.Replace("&", "&&"); #ifdef __WXMSW__ @@ -153,36 +179,15 @@ void wxFileHistoryBase::DoRefreshLabels() // Update the labels in all menus for ( size_t i = 0; i < numFiles; i++ ) { - const wxFileName currFn(m_fileHistory[i]); - - wxString pathInMenu; - switch ( m_menuPathStyle ) - { - case wxFH_PATH_SHOW_IF_DIFFERENT: - if ( currFn.HasName() && currFn.GetPath() == firstPath ) - pathInMenu = currFn.GetFullName(); - else - pathInMenu = currFn.GetFullPath(); - break; - - case wxFH_PATH_SHOW_NEVER: - // Only show the filename + extension and not the path. - pathInMenu = currFn.GetFullName(); - break; - - case wxFH_PATH_SHOW_ALWAYS: - // Always show full path. - pathInMenu = currFn.GetFullPath(); - break; - } - for ( wxList::compatibility_iterator node = m_fileMenus.GetFirst(); node; node = node->GetNext() ) { wxMenu * const menu = (wxMenu *)node->GetData(); - menu->SetLabel(m_idBase + i, GetMRUEntryLabel(i, pathInMenu)); + menu->SetLabel(m_idBase + i, GetMRUEntryLabel(i, m_fileHistory[i], + m_menuPathStyle, + firstPath)); } } } @@ -206,6 +211,11 @@ void wxFileHistoryBase::RemoveFileFromHistory(size_t i) m_fileHistory.RemoveAt(i); numFiles--; + // Remember the path in case we need to compare with it below. + const wxString firstPath = !m_fileHistory.empty() + ? wxFileName(m_fileHistory[0]).GetPath() + : wxString(); + for ( wxList::compatibility_iterator node = m_fileMenus.GetFirst(); node; node = node->GetNext() ) @@ -215,7 +225,9 @@ void wxFileHistoryBase::RemoveFileFromHistory(size_t i) // shift filenames up for ( size_t j = i; j < numFiles; j++ ) { - menu->SetLabel(m_idBase + j, GetMRUEntryLabel(j, m_fileHistory[j])); + menu->SetLabel(m_idBase + j, GetMRUEntryLabel(j, m_fileHistory[j], + m_menuPathStyle, + firstPath)); } // delete the last menu item which is unused now @@ -310,9 +322,14 @@ void wxFileHistoryBase::AddFilesToMenu(wxMenu* menu) if ( menu->GetMenuItemCount() ) menu->AppendSeparator(); + // Remember the path in case we need to compare with it below. + const wxString firstPath(wxFileName(m_fileHistory[0]).GetPath()); + for ( size_t i = 0; i < m_fileHistory.GetCount(); i++ ) { - menu->Append(m_idBase + i, GetMRUEntryLabel(i, m_fileHistory[i])); + menu->Append(m_idBase + i, GetMRUEntryLabel(i, m_fileHistory[i], + m_menuPathStyle, + firstPath)); } } From 66c70c1b8573a6bd3f3905b9cd919042765320c7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 31 May 2025 19:47:06 +0200 Subject: [PATCH 185/416] Fix determining best height of wxBitmapComboBox in wxGTK Fix the workaround for not getting the correct best size when the control is empty (see #23382) to work for wxBitmapComboBox, which doesn't use GtkComboBoxText as its widget, too. Just call gtk_list_store_insert_with_values(), which works for any GtkListStore, instead of gtk_combo_box_text_append_text(). See #25468. (cherry picked from commit 7c38afe8229b07a30e09c1f531a31f42a5f76519) --- docs/changes.txt | 1 + src/gtk/choice.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 0c02b330343e..b547b1f7d2f9 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,7 @@ All (GUI): wxGTK: - Fix handling total window size with GNOME with X11 (#25348). +- Fix height of read-only wxBitmapComboBox (#25468). wxOSX: diff --git a/src/gtk/choice.cpp b/src/gtk/choice.cpp index 6c01ccdc40b4..6447aedd8c76 100644 --- a/src/gtk/choice.cpp +++ b/src/gtk/choice.cpp @@ -388,7 +388,17 @@ wxSize wxChoice::DoGetSizeFromTextSize(int xlen, int ylen) const if (gtk_tree_model_get_iter_first(model, &iter)) model = NULL; else - gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_widget), "Gg"); + { + gtk_list_store_insert_with_values + ( + GTK_LIST_STORE(model), + NULL, // No output iterator. + -1, // Position: append. + m_stringCellIndex, // Text column index. + "Gg", // This column value. + -1 // Terminate the list of values. + ); + } } #endif From f4f1d397a48ee207b0e7e642cb211d4fae0e740e Mon Sep 17 00:00:00 2001 From: Popax21 Date: Wed, 28 May 2025 23:44:24 +0200 Subject: [PATCH 186/416] Fix wxGLCanvasEGL scale under Wayland in high DPI Ensure that the buffer scale is always the same as the GTK scale factor: Previously, wxGLCanvasEGL only set the buffer scale of the wl_surface once during the creation of the canvas. However, the GTK widget scale factor may change at any time (for example when the window is moved across monitors), which results in the EGL window size becoming out-of-sync with the surface's buffer scale when the canvas is resized. Fix this issue by updating the wl_surface buffer size whenever the canvas widget is resized. See #23733, #25465. (cherry picked from commit 7f0bc5c1106a761236b1a1b4965bbe422eefeebc) --- docs/changes.txt | 1 + include/wx/unix/glegl.h | 1 + src/unix/glegl.cpp | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index b547b1f7d2f9..cb28749beb49 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -260,6 +260,7 @@ wxGTK: - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). +- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). wxOSX: diff --git a/include/wx/unix/glegl.h b/include/wx/unix/glegl.h index eb23e5e6ac44..a3aae69dad7b 100644 --- a/include/wx/unix/glegl.h +++ b/include/wx/unix/glegl.h @@ -145,6 +145,7 @@ class WXDLLIMPEXP_GL wxGLCanvasEGL : public wxGLCanvasBase static EGLConfig *ms_glEGLConfig; friend void wxEGLUpdatePosition(wxGLCanvasEGL* win); + friend void wxEGLSetScale(wxGLCanvasEGL* win, int scale); }; // ---------------------------------------------------------------------------- diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index 627058066929..3b1e20156354 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -475,6 +475,12 @@ void wxEGLUpdatePosition(wxGLCanvasEGL* win) wl_subsurface_set_position(win->m_wlSubsurface, x, y); } +// Helper declared as friend in the header and so can access m_wlSurface. +void wxEGLSetScale(wxGLCanvasEGL* win, int scale) +{ + wl_surface_set_buffer_scale(win->m_wlSurface, scale); +} + extern "C" { @@ -535,6 +541,7 @@ static void gtk_glcanvas_size_callback(GtkWidget *widget, win->m_height * scale, 0, 0); wxEGLUpdatePosition(win); + wxEGLSetScale(win, scale); } } // extern "C" From 07810681ef8d4a8d48d4598e498071954be880c5 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 29 Mar 2025 17:16:59 +0100 Subject: [PATCH 187/416] Fix font scaling when using wxGTK on Windows Do not apply an additional fontScalingFactor, the font has already the correct size for the DPI of the display. See #25277. (cherry picked from commit ae310f0670775a2470d1998fab89b34215c6ab49) --- src/generic/graphicc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/generic/graphicc.cpp b/src/generic/graphicc.cpp index 3555075783a0..47c19e9f2621 100644 --- a/src/generic/graphicc.cpp +++ b/src/generic/graphicc.cpp @@ -553,7 +553,7 @@ class WXDLLIMPEXP_CORE wxCairoContext : public wxGraphicsContext ); } -#ifdef __WXGTK3__ +#if defined(__WXGTK3__) && !defined(__WIN32__) // This factor must be applied to the font before actually using it, for // consistency with the text drawn by GTK itself. float m_fontScalingFactor; @@ -2539,7 +2539,7 @@ wxCairoContext::~wxCairoContext() void wxCairoContext::Init(cairo_t *context) { -#ifdef __WXGTK3__ +#if defined(__WXGTK3__) && !defined(__WIN32__) // Attempt to find the system font scaling parameter (e.g. "Fonts->Scaling // Factor" in Gnome Tweaks, "Force font DPI" in KDE System Settings or // GDK_DPI_SCALE environment variable). From f4a09286685ff6113722c73d03468e4d014d0e25 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sun, 25 May 2025 18:30:12 +0200 Subject: [PATCH 188/416] Fix wxTreeCtrl indent regression See #25282. (cherry picked from commit 6dc66a9d2ae979b8d0ba2c0b4364aba8bc005bc7) --- docs/changes.txt | 4 ++++ src/msw/treectrl.cpp | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index cb28749beb49..5e75d5d33187 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,10 @@ wxGTK: - Fix height of read-only wxBitmapComboBox (#25468). - Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). +wxMSW + +- Fix regression in wxTreeCtrl indent size in high DPI (Maarten Bent, #25282). + wxOSX: - Do not activate "Close" button on Cmd-C (nobugshere, #25346). diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 8baabda684a0..3246d08d7001 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -922,10 +922,33 @@ void wxTreeCtrl::SetIndent(unsigned int indent) void wxTreeCtrl::SetAnyImageList(wxImageList *imageList, int which) { + int indent = GetIndent(); + + HIMAGELIST oldImgList = TreeView_GetImageList(GetHwnd(), which); + if ( oldImgList != NULL ) + { + int oldWidth = 0, oldHeight = 0; + if ( ImageList_GetIconSize(oldImgList, &oldWidth, &oldHeight) ) + { + int diff = oldWidth - FromDIP(16); + if ( diff < 0 ) + indent -= diff; + } + } + // no error return (void) TreeView_SetImageList(GetHwnd(), imageList ? imageList->GetHIMAGELIST() : 0, which); + + wxImageList* newImgList = GetImageList(); + if ( newImgList != NULL ) + { + int diff = newImgList->GetSize().GetWidth() - FromDIP(16); + if ( diff < 0 ) + indent += diff; + } + SetIndent(indent); } void wxTreeCtrl::SetImageList(wxImageList *imageList) From 8bd21d511f5aa092e4eeabf64de13e29691c45da Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sun, 25 May 2025 18:35:00 +0200 Subject: [PATCH 189/416] Backport CMake changes With backports of: 55131146730f777f6b7449ec5d030c9d76bd7ee3 CMake: Create all mswu include directories when installing 1dc7334851569591b014f724f9dfa78c55d48faa CMake: Fix monolithic build with static wxWebviewEdge 3a48ac75ed2f363e385e74205e86b5550043ce2e CMake: Add option to force all builtin libraries 51037ff728d1ce3aa140345df8249276caae1822 Add wx/msw/mfc.h to file list ecf2b0dcd7bff90904e1420cc15964b54ebd3750 Fix wx-config created in CMake build with custom flavour 2ec276affc654e1c7eaa0fb6c186975e38fbd204 CMake: Fix iOS OpenGL warning e1f0a938f6052f625781b4476ca6f87f4c07bccd CMake: Fix using Cotire for precompiled headers 35e3c14cb43f8c9bbdc8233828c724549b696f89 Fix library naming when cross compiling for Windows using CMake --- Makefile.in | 1 + build/bakefiles/files.bkl | 1 + build/cmake/config.cmake | 7 +++--- build/cmake/files.cmake | 1 + build/cmake/functions.cmake | 33 +++++++++++++++++++++----- build/cmake/init.cmake | 3 +++ build/cmake/install.cmake | 7 ++++++ build/cmake/lib/CMakeLists.txt | 5 ++++ build/cmake/lib/webview/CMakeLists.txt | 2 +- build/cmake/options.cmake | 1 + build/cmake/pch.cmake | 2 +- build/files | 1 + build/msw/wx_core.vcxproj | 1 + build/msw/wx_core.vcxproj.filters | 3 +++ build/msw/wx_vc8_core.vcproj | 4 ++++ build/msw/wx_vc9_core.vcproj | 4 ++++ docs/changes.txt | 4 ++++ 17 files changed, 69 insertions(+), 11 deletions(-) diff --git a/Makefile.in b/Makefile.in index c00ac41791b1..b79d345eb907 100644 --- a/Makefile.in +++ b/Makefile.in @@ -3384,6 +3384,7 @@ COND_TOOLKIT_MSW_GUI_HDR = \ wx/msw/datectrl.h \ wx/msw/calctrl.h \ wx/generic/activityindicator.h \ + wx/msw/mfc.h \ wx/msw/checklst.h \ wx/msw/fdrepdlg.h \ wx/msw/fontdlg.h \ diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 50d04aca7f1c..be5b539168e6 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2284,6 +2284,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/msw/datectrl.h wx/msw/calctrl.h wx/generic/activityindicator.h + wx/msw/mfc.h diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index addd8d6b8139..35e141129e52 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -163,13 +163,14 @@ function(wx_write_config) set(WX_RELEASE ${wxMAJOR_VERSION}.${wxMINOR_VERSION}) set(WX_VERSION ${wxVERSION}) set(WX_SUBVERSION ${wxVERSION}.0) - set(WX_FLAVOUR) + wx_get_flavour(WX_FLAVOUR "-") + wx_get_flavour(lib_flavour "_") set(TOOLKIT_DIR ${wxBUILD_TOOLKIT}) set(TOOLKIT_VERSION) set(WIDGET_SET ${wxBUILD_WIDGETSET}) set(TOOLCHAIN_NAME "${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}-${WX_RELEASE}") - set(WX_LIBRARY_BASENAME_GUI "wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}") - set(WX_LIBRARY_BASENAME_NOGUI "wx_base${lib_unicode_suffix}") + set(WX_LIBRARY_BASENAME_GUI "wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_flavour}") + set(WX_LIBRARY_BASENAME_NOGUI "wx_base${lib_unicode_suffix}${lib_flavour}") wx_get_dependencies(WXCONFIG_LIBS base) wx_get_dependencies(EXTRALIBS_GUI core) diff --git a/build/cmake/files.cmake b/build/cmake/files.cmake index 630cc14119bd..a416e6956f45 100644 --- a/build/cmake/files.cmake +++ b/build/cmake/files.cmake @@ -2172,6 +2172,7 @@ set(MSW_HDR wx/msw/datetimectrl.h wx/msw/timectrl.h wx/generic/activityindicator.h + wx/msw/mfc.h ) set(MSW_RSC diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 7a469862b586..7ae1cb506055 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -14,7 +14,7 @@ include(CMakePrintHelpers) # Use the MSVC/makefile naming convention, or the configure naming convention, # this is the same check as used in FindwxWidgets. -if(WIN32 AND NOT CYGWIN AND NOT MSYS) +if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING) set(WIN32_MSVC_NAMING 1) else() set(WIN32_MSVC_NAMING 0) @@ -185,10 +185,14 @@ function(wx_set_common_target_properties target_name) ) endif() - target_compile_options(${target_name} PRIVATE - ${common_gcc_clang_compile_options} - $<$:${common_gcc_clang_cpp_compile_options}> - ) + # Using $ breaks cotire: + # Evaluation file to be written multiple times with different content. + if(NOT USE_COTIRE) + target_compile_options(${target_name} PRIVATE + ${common_gcc_clang_compile_options} + $<$:${common_gcc_clang_cpp_compile_options}> + ) + endif() endif() if(wxUSE_NO_RTTI) @@ -540,6 +544,21 @@ macro(wx_lib_link_libraries name) endif() endmacro() +# wx_lib_link_directories(name []) +# Forwards everything to target_link_directories() except for monolithic +# build where it collects all directories for linking with the mono lib +macro(wx_lib_link_directories name) + if(wxBUILD_MONOLITHIC) + cmake_parse_arguments(_DIR_LINK "" "" "PUBLIC;PRIVATE" ${ARGN}) + list(APPEND wxMONO_DIRS_PUBLIC ${_DIR_LINK_PUBLIC}) + list(APPEND wxMONO_DIRS_PRIVATE ${_DIR_LINK_PRIVATE}) + set(wxMONO_DIRS_PUBLIC ${wxMONO_DIRS_PUBLIC} PARENT_SCOPE) + set(wxMONO_DIRS_PRIVATE ${wxMONO_DIRS_PRIVATE} PARENT_SCOPE) + else() + target_link_directories(${name};${ARGN}) + endif() +endmacro() + # wx_exe_link_libraries(target libs...) # Link wx libraries to executable macro(wx_exe_link_libraries name) @@ -675,7 +694,9 @@ set(wxTHIRD_PARTY_LIBRARIES) function(wx_add_thirdparty_library var_name lib_name help_str) cmake_parse_arguments(THIRDPARTY "" "DEFAULT;DEFAULT_APPLE;DEFAULT_WIN32" "" ${ARGN}) - if(THIRDPARTY_DEFAULT) + if(NOT wxUSE_SYS_LIBS) + set(thirdparty_lib_default builtin) + elseif(THIRDPARTY_DEFAULT) set(thirdparty_lib_default ${THIRDPARTY_DEFAULT}) elseif(THIRDPARTY_DEFAULT_APPLE AND APPLE) set(thirdparty_lib_default ${THIRDPARTY_DEFAULT_APPLE}) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 3923045fdf1e..af036838ab3b 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -433,6 +433,7 @@ if(wxUSE_GUI) if(wxUSE_OPENGL) if(WXOSX_IPHONE) set(OPENGL_FOUND TRUE) + set(OPENGL_INCLUDE_DIR "") set(OPENGL_LIBRARIES "-framework OpenGLES" "-framework QuartzCore" "-framework GLKit") else() find_package(OpenGL) @@ -703,5 +704,7 @@ if((wxBUILD_PRECOMP STREQUAL "ON" AND CMAKE_VERSION VERSION_LESS "3.16") OR (wxB if(NOT RESULT_VAR) message(WARNING "precompiled header (PCH) test failed, it will be turned off") wx_option_force_value(wxBUILD_PRECOMP OFF) + else() + set(USE_COTIRE ON) endif() endif() diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake index 202d0541af24..c191577a8adb 100644 --- a/build/cmake/install.cmake +++ b/build/cmake/install.cmake @@ -38,6 +38,13 @@ endif() # setup header and wx-config if(WIN32_MSVC_NAMING) + # create both Debug and Release directories, so CMake doesn't complain about + # non-existent path when only Release or Debug build has been installed + set(lib_unicode "u") + install(DIRECTORY + DESTINATION "lib/${wxPLATFORM_LIB_DIR}/${wxBUILD_TOOLKIT}${lib_unicode}") + install(DIRECTORY + DESTINATION "lib/${wxPLATFORM_LIB_DIR}/${wxBUILD_TOOLKIT}${lib_unicode}d") install( DIRECTORY "${wxSETUP_HEADER_PATH}" DESTINATION "lib/${wxPLATFORM_LIB_DIR}") diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 7633062e03a8..d7a38c47e248 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -12,6 +12,8 @@ if(wxBUILD_MONOLITHIC) set(wxMONO_SRC_FILES) set(wxMONO_LIBS_PRIVATE) set(wxMONO_LIBS_PUBLIC) + set(wxMONO_DIRS_PRIVATE) + set(wxMONO_DIRS_PUBLIC) set(wxMONO_INCLUDE_DIRS) set(wxMONO_DEFINITIONS) set(wxMONO_NONCOMPILED_CPP_FILES) @@ -83,6 +85,9 @@ if(wxBUILD_MONOLITHIC) target_link_libraries(wxmono ${vis} ${wxMONO_LIBS_${vis}}) endif() + if(wxMONO_DIRS_${vis}) + target_link_directories(wxmono ${vis} ${wxMONO_DIRS_${vis}}) + endif() endforeach() if(wxMONO_INCLUDE_DIRS) target_include_directories(wxmono BEFORE PRIVATE ${wxMONO_INCLUDE_DIRS}) diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index 2cb35e70d88f..1d6972507b1b 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -82,7 +82,7 @@ elseif(WXMSW) endif() if (wxUSE_WEBVIEW_EDGE_STATIC) - target_link_directories(wxwebview PUBLIC + wx_lib_link_directories(wxwebview PUBLIC $ ) else() diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index c9dc7c852452..ae27793aad32 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -129,6 +129,7 @@ if(wxUSE_UNICODE AND (NOT DEFINED wxUSE_UNICODE_UTF8 OR NOT wxUSE_UNICODE_UTF8)) endif() endif() +wx_option(wxUSE_SYS_LIBS "disable to force using all built-in libraries") wx_add_thirdparty_library(wxUSE_REGEX PCRE2 "enable support for wxRegEx class") wx_add_thirdparty_library(wxUSE_ZLIB ZLIB "use zlib for LZW compression" DEFAULT_APPLE sys) wx_add_thirdparty_library(wxUSE_EXPAT EXPAT "use expat for XML parsing" DEFAULT_APPLE sys) diff --git a/build/cmake/pch.cmake b/build/cmake/pch.cmake index a7bc14aed733..7c9c7824f888 100644 --- a/build/cmake/pch.cmake +++ b/build/cmake/pch.cmake @@ -20,7 +20,7 @@ endif() macro(wx_target_enable_precomp target_name prec_header) if(wxBUILD_PRECOMP) target_compile_definitions(${target_name} PRIVATE WX_PRECOMP) - if(CMAKE_VERSION VERSION_LESS "3.16" OR wxBUILD_PRECOMP STREQUAL "COTIRE") + if(USE_COTIRE) set_target_properties(${target_name} PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT ${prec_header}) set_target_properties(${target_name} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) cotire(${target_name}) diff --git a/build/files b/build/files index 3139393eb415..e92a5d743207 100644 --- a/build/files +++ b/build/files @@ -2113,6 +2113,7 @@ MSW_HDR = wx/msw/menu.h wx/msw/menuitem.h wx/msw/metafile.h + wx/msw/mfc.h wx/msw/minifram.h wx/msw/missing.h wx/msw/msgdlg.h diff --git a/build/msw/wx_core.vcxproj b/build/msw/wx_core.vcxproj index 73142c396d71..5ee2e30c206b 100644 --- a/build/msw/wx_core.vcxproj +++ b/build/msw/wx_core.vcxproj @@ -1520,6 +1520,7 @@ + diff --git a/build/msw/wx_core.vcxproj.filters b/build/msw/wx_core.vcxproj.filters index ec2c6e6ab4b7..c3e806a5d0aa 100644 --- a/build/msw/wx_core.vcxproj.filters +++ b/build/msw/wx_core.vcxproj.filters @@ -1849,6 +1849,9 @@ MSW Headers + + MSW Headers + MSW Headers diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj index 62fce37d6848..0a47944c6822 100644 --- a/build/msw/wx_vc8_core.vcproj +++ b/build/msw/wx_vc8_core.vcproj @@ -2857,6 +2857,10 @@ RelativePath="..\..\include\wx\msw\metafile.h" > + + diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj index f6b40887b4de..2493577809dc 100644 --- a/build/msw/wx_vc9_core.vcproj +++ b/build/msw/wx_vc9_core.vcproj @@ -2853,6 +2853,10 @@ RelativePath="..\..\include\wx\msw\metafile.h" > + + diff --git a/docs/changes.txt b/docs/changes.txt index 5e75d5d33187..268da62bc7db 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.9: (released 2025-??-??) ---------------------------- +All: + +- Backport several CMake enhancements from 3.3 (Maarten Bent, #25448). + All (GUI): - Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). From fa13bf8bee8b92ae80b0ce46d623d31e5a26d24b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 24 Jun 2025 17:16:47 +0200 Subject: [PATCH 190/416] Don't crash on start up if macOS system font encoding is unknown If the encoding is not recognized (which is the case at least for the encoding used for Persian/Farsi), wxLocale::GetSystemEncoding() returns wxFONTENCODING_DEFAULT and wxFont::SetDefaultEncoding() must not be called in this case, as it asserts and, due to a separate bug, crashes as the GUI is not fully initialized yet when wxApp::Initialize() is executing. See #25561. (cherry picked from commit 5de590ffaf9ca1ebe8a619986f0217f3a44af8e5) --- docs/changes.txt | 1 + src/osx/carbon/app.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 268da62bc7db..65f2e34b9983 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -272,6 +272,7 @@ wxMSW wxOSX: +- Fix crash on startup when using Farsi as system language (#25561). - Do not activate "Close" button on Cmd-C (nobugshere, #25346). diff --git a/src/osx/carbon/app.cpp b/src/osx/carbon/app.cpp index c5c7596a46d3..e5ce0db58bd8 100644 --- a/src/osx/carbon/app.cpp +++ b/src/osx/carbon/app.cpp @@ -306,7 +306,12 @@ bool wxApp::Initialize(int& argc, wxChar **argv) return false; #if wxUSE_INTL - wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); + // Check if we recognize the system encoding. Note that we must not call + // SetDefaultEncoding() if we don't, as indicated by wxFONTENCODING_DEFAULT + // being returned, as SetDefaultEncoding() would assert in this case. + const wxFontEncoding defaultEncoding = wxLocale::GetSystemEncoding(); + if ( defaultEncoding != wxFONTENCODING_DEFAULT ) + wxFont::SetDefaultEncoding(defaultEncoding); #endif // these might be the startup dirs, set them to the 'usual' dir containing the app bundle From 5c0a6e34604d9cd0e1936ee266e96cfafafad3f4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Jun 2025 22:40:18 +0200 Subject: [PATCH 191/416] Fix wxLogApiError() in wxNO_IMPLICIT_WXSTRING_ENCODING build This function needs to compile with wxNO_IMPLICIT_WXSTRING_ENCODING defined, as there are some calls to it in wx headers (at least wx/msw/private.h which, unfortunately, gets included when PCH is used, i.e. practically always with MSVC). Fix its compilation in this case by using wide char __TFILE__ instead of __FILE__ which would have to be wrapped in wxString::FromAscii() or FromUTF8(). See #25568. (cherry picked from commit 1be2e487e3e2813a81d70dd69dfb5675ee8a3896) --- docs/changes.txt | 1 + include/wx/log.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 65f2e34b9983..5b7165bd3619 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -269,6 +269,7 @@ wxGTK: wxMSW - Fix regression in wxTreeCtrl indent size in high DPI (Maarten Bent, #25282). +- Fix using wxNO_IMPLICIT_WXSTRING_ENCODING with PCH (#25568). wxOSX: diff --git a/include/wx/log.h b/include/wx/log.h index a139dca1288a..05417c09a4b1 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -1472,13 +1472,13 @@ wxSafeShowMessage(const wxString& title, const wxString& text); #ifdef __VISUALC__ #define wxLogApiError(api, rc) \ wxLogDebug(wxT("%s(%d): '%s' failed with error 0x%08lx (%s)."), \ - __FILE__, __LINE__, api, \ + __TFILE__, __LINE__, api, \ (long)rc, wxSysErrorMsgStr(rc)) #else // !VC++ #define wxLogApiError(api, rc) \ wxLogDebug(wxT("In file %s at line %d: '%s' failed with ") \ wxT("error 0x%08lx (%s)."), \ - __FILE__, __LINE__, api, \ + __TFILE__, __LINE__, api, \ (long)rc, wxSysErrorMsgStr(rc)) #endif // VC++/!VC++ From 3afd58cc97ff43681da9f5311e620d95c5f749e1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 26 Jun 2025 00:24:07 +0200 Subject: [PATCH 192/416] Fix memory leak in wxColour::Set() in wxOSX Don't overwrite the existing m_refData in wxColour::InitRGBA() implementation, as this could result in leaking it. Ensure that we are its unique owners, which allocates it if necessary, and then assign to the existing object instead. See #25569. (cherry picked from commit c7e5ac12e69b6b51605c6e2543f29e638cc41f91) --- docs/changes.txt | 1 + src/osx/core/colour.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 5b7165bd3619..1d387efa6cef 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -275,6 +275,7 @@ wxOSX: - Fix crash on startup when using Farsi as system language (#25561). - Do not activate "Close" button on Cmd-C (nobugshere, #25346). +- Fix memory leak in wxColour::Set() (#25569). 3.2.8.1: (released 2025-05-25) diff --git a/src/osx/core/colour.cpp b/src/osx/core/colour.cpp index 20a7044ef4e7..3c39b94520d6 100644 --- a/src/osx/core/colour.cpp +++ b/src/osx/core/colour.cpp @@ -32,6 +32,8 @@ class wxCGColorRefData : public wxColourRefData wxCGColorRefData(const wxCGColorRefData& other); + void Init(CGFloat components[4]); + virtual bool IsOk() const wxOVERRIDE{ return m_cgColour != NULL; } virtual CGFloat Red() const wxOVERRIDE { return m_red; } @@ -44,16 +46,12 @@ class wxCGColorRefData : public wxColourRefData virtual wxColourRefData* Clone() const wxOVERRIDE { return new wxCGColorRefData(*this); } private: - void Init(CGFloat components[4]); - wxCFRef m_cgColour; CGFloat m_red; CGFloat m_blue; CGFloat m_green; CGFloat m_alpha; - - wxDECLARE_NO_ASSIGN_CLASS(wxCGColorRefData); }; wxCGColorRefData::wxCGColorRefData(CGFloat r, CGFloat g, CGFloat b, CGFloat a) @@ -142,7 +140,7 @@ wxCGColorRefData::wxCGColorRefData(CGColorRef col) } } -#define M_COLDATA static_cast(m_refData) +#define M_COLDATA static_cast(m_refData) #if wxOSX_USE_COCOA_OR_CARBON wxColour::wxColour(const RGBColor& col) @@ -231,8 +229,10 @@ WX_NSImage wxColour::OSXGetNSPatternImage() const void wxColour::InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a) { + AllocExclusive(); + CGFloat components[4] = { (CGFloat)(r / 255.0), (CGFloat)(g / 255.0), (CGFloat)(b / 255.0), (CGFloat)(a / 255.0) }; - m_refData = new wxCGColorRefData(components); + M_COLDATA->Init(components); } bool wxColour::operator==(const wxColour& other) const From 4f6a15039893ab329f26aee93f7858ae0f3c6535 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 25 Jun 2025 21:07:50 -0700 Subject: [PATCH 193/416] Use system default titlebar decorations under Wayland See #25562 (cherry picked from commit afb11cf2ebaa46d44bc1ead4a2ccf2c6492be77c) --- docs/changes.txt | 1 + src/gtk/toplevel.cpp | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1d387efa6cef..71af221dd116 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -265,6 +265,7 @@ wxGTK: - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). - Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). +- Show system default window buttons under Wayland (#25562). wxMSW diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 69e3e4a5cdfc..32d172efa2f0 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -390,12 +390,22 @@ void wxTopLevelWindowGTK::GTKHandleRealized() #if GTK_CHECK_VERSION(3,12,0) if (m_gdkDecor && wx_is_at_least_gtk3(12)) { - char layout[sizeof("icon,menu:minimize,maximize,close")]; - snprintf(layout, sizeof(layout), "icon%s:%s%s%s", - m_gdkDecor & GDK_DECOR_MENU ? ",menu" : "", - m_gdkDecor & GDK_DECOR_MINIMIZE ? "minimize," : "", - m_gdkDecor & GDK_DECOR_MAXIMIZE ? "maximize," : "", - m_gdkFunc & GDK_FUNC_CLOSE ? "close" : ""); + char* s; + g_object_get(gtk_widget_get_settings(m_widget), + "gtk-decoration-layout", &s, NULL); + wxString layout(s); + g_free(s); + + const wxString empty; + if ((m_gdkDecor & GDK_DECOR_MENU) == 0) + layout.Replace("menu", empty, false); + if ((m_gdkDecor & GDK_DECOR_MINIMIZE) == 0) + layout.Replace("minimize", empty, false); + if ((m_gdkDecor & GDK_DECOR_MAXIMIZE) == 0) + layout.Replace("maximize", empty, false); + if ((m_gdkFunc & GDK_FUNC_CLOSE) == 0) + layout.Replace("close", empty, false); + gtk_header_bar_set_decoration_layout(GTK_HEADER_BAR(titlebar), layout); } #endif // 3.12 From d63adfdda316edd7d9c2ba42f9b740086599ea77 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 15 Jul 2025 16:58:38 +0200 Subject: [PATCH 194/416] Don't assert in wxGridSizer::Calc{Cols,Rows}() if sizer is empty When the sizer is completely empty, it makes more sense to return 0 from these functions without asserting. See #25642, #25641. (cherry picked from commit d1be72aa8eca1bf767f8fdf710846aa273d2c44d) --- docs/changes.txt | 1 + include/wx/sizer.h | 14 ++++++++++++-- interface/wx/sizer.h | 6 ++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 71af221dd116..c62750eaedc8 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,7 @@ All: All (GUI): - Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). +- Don't assert in wxGridSizer::Calc{Cols,Rows}() if sizer is empty (#25641). wxGTK: diff --git a/include/wx/sizer.h b/include/wx/sizer.h index 16af934419d4..d161e15befdd 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -849,24 +849,34 @@ class WXDLLIMPEXP_CORE wxGridSizer: public wxSizer // of children (and the fixed number of rows/columns) int CalcCols() const { + // Check the count first because we shouldn't assert if the sizer is + // completely empty. + const int count = static_cast(m_children.size()); + if ( !count ) + return 0; + wxCHECK_MSG ( m_rows, 0, "Can't calculate number of cols if number of rows is not specified" ); - return int(m_children.GetCount() + m_rows - 1) / m_rows; + return (count + m_rows - 1) / m_rows; } int CalcRows() const { + const int count = static_cast(m_children.size()); + if ( !count ) + return 0; + wxCHECK_MSG ( m_cols, 0, "Can't calculate number of cols if number of rows is not specified" ); - return int(m_children.GetCount() + m_cols - 1) / m_cols; + return (count + m_cols - 1) / m_cols; } private: diff --git a/interface/wx/sizer.h b/interface/wx/sizer.h index 03deddb6a2f0..a614d43b6644 100644 --- a/interface/wx/sizer.h +++ b/interface/wx/sizer.h @@ -1888,6 +1888,9 @@ class wxGridSizer : public wxSizer This will depend on the number of children the sizer has if the sizer is automatically adjusting the number of columns/rows. + Note that if the sizer is not empty, the number of rows must have been + set, otherwise this function triggers an assert failure and returns 0. + @since 2.9.1 */ int GetEffectiveColsCount() const; @@ -1898,6 +1901,9 @@ class wxGridSizer : public wxSizer This will depend on the number of children the sizer has if the sizer is automatically adjusting the number of columns/rows. + Note that if the sizer is not empty, the number of columns must have been + set, otherwise this function triggers an assert failure and returns 0. + @since 2.9.1 */ int GetEffectiveRowsCount() const; From 47041891cfa96e81ae9511860d29638cbf8d1912 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 14 Jul 2025 01:40:45 +0200 Subject: [PATCH 195/416] Avoid collapsing wxDVC node if already done by event handler If an event handler for wxEVT_DATAVIEW_SELECTION_CHANGED called Collapse() itself (which is weird but allowed), Collapse() still tried to collapse it again, which could result in the count of items becoming negative and all sorts of other problems. Avoid them by not doing anything if the item has been collapsed after the selection change. See #25638, #25631. (cherry picked from commit 0396c2661f434176c5198f2cac84ef91e5f1b540) --- docs/changes.txt | 1 + src/generic/datavgen.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index c62750eaedc8..56920cc85db4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -260,6 +260,7 @@ All (GUI): - Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). - Don't assert in wxGridSizer::Calc{Cols,Rows}() if sizer is empty (#25641). +- Fix calling wxDataViewCtrl::Collapse() from event handler (#25631). wxGTK: diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 98fc55e73df9..a28475639930 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -4121,6 +4121,12 @@ void wxDataViewMainWindow::Collapse(unsigned int row) if ( m_selection.OnItemsDeleted(row + 1, countDeletedRows) ) { SendSelectionChangedEvent(GetItemByRow(row)); + + // The event handler for wxEVT_DATAVIEW_SELECTION_CHANGED could + // have called Collapse() itself, in which case the node would be + // already closed and we shouldn't try to close it again. + if ( !node->IsOpen() ) + return; } node->ToggleOpen(this); From 26eb2a7ecb5a1a4b322750d763a6469e30dc06e7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Jul 2024 23:05:46 +0200 Subject: [PATCH 196/416] Fix crash when copying wxBitmaps in wxMSW if DIB creation fails This shouldn't normally happen, but if it does, e.g. because all the GDI resources have been exhausted, we still shouldn't crash, so check for this. See #24703, #24705. (cherry picked from commit a6203be954125947aa88fd1712af7eb5d755a907) --- docs/changes.txt | 1 + src/msw/bitmap.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 56920cc85db4..481e70a57c70 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ wxMSW - Fix regression in wxTreeCtrl indent size in high DPI (Maarten Bent, #25282). - Fix using wxNO_IMPLICIT_WXSTRING_ENCODING with PCH (#25568). +- Fix crash when copying wxBitmaps if GDI resources are exhausted (#24703). wxOSX: diff --git a/src/msw/bitmap.cpp b/src/msw/bitmap.cpp index ab6de0841f7a..7680bf69da6a 100644 --- a/src/msw/bitmap.cpp +++ b/src/msw/bitmap.cpp @@ -243,8 +243,12 @@ wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData& data) const int d = dib.GetDepth(); wxDIB dibDst(w, h, d); - memcpy(dibDst.GetData(), dib.GetData(), wxDIB::GetLineSize(w, d)*h); - InitFromDIB(dibDst); + if ( dibDst.IsOk() ) + { + memcpy(dibDst.GetData(), dib.GetData(), wxDIB::GetLineSize(w, d)*h); + InitFromDIB(dibDst); + } + //else: creating the DIB failed, we can't do anything about it here. } else { From 135dd28bd07c1af664255bfb1fed72d77d716db3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 3 Jun 2025 17:58:23 +0200 Subject: [PATCH 197/416] Leave only MSVS 2022 CI jobs MSVS 2019 is only available in windows-2019 image which is being retired by GitHub, see https://github.com/actions/runner-images/issues/12045 (cherry picked from commit b9e3dc100d578a8abfafc5a27f312357551bdbce) --- .github/workflows/ci_msw.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_msw.yml b/.github/workflows/ci_msw.yml index e820dd9bbc6e..87cc7961c3fd 100644 --- a/.github/workflows/ci_msw.yml +++ b/.github/workflows/ci_msw.yml @@ -56,21 +56,19 @@ permissions: jobs: msw-msvs: - runs-on: windows-${{ matrix.vsversion }} - name: wxMSW vs${{ matrix.vsversion }} ${{ matrix.configuration }} ${{ matrix.platform }} + runs-on: windows-2022 + name: wxMSW vs2022 ${{ matrix.configuration }} ${{ matrix.platform }} strategy: fail-fast: false matrix: include: - configuration: 'DLL Debug' platform: 'x64' - vsversion: 2022 + use_utf8: true - configuration: 'Debug' platform: 'Win32' - vsversion: 2019 - configuration: 'DLL Release' platform: 'x64' - vsversion: 2019 use_stl: true steps: From 21dbdf9f1518b9efe109e277648d861b1c679555 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 28 Jul 2025 16:18:20 +0200 Subject: [PATCH 198/416] Fix wxGTK compilation with wxUSE_STD_STRING_CONV_IN_WXSTRING Don't rely on implicit conversion to "char*" which may be unavailable and call utf8_str() explicitly instead. See afb11cf2eb (Use system default titlebar decorations under Wayland, 2025-06-25) and #25562. (cherry picked from commit 666f7489bb2ffbd8298069393a90ddbe18221df5) --- src/gtk/toplevel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 32d172efa2f0..ad963c17338b 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -406,7 +406,8 @@ void wxTopLevelWindowGTK::GTKHandleRealized() if ((m_gdkFunc & GDK_FUNC_CLOSE) == 0) layout.Replace("close", empty, false); - gtk_header_bar_set_decoration_layout(GTK_HEADER_BAR(titlebar), layout); + gtk_header_bar_set_decoration_layout(GTK_HEADER_BAR(titlebar), + layout.utf8_str()); } #endif // 3.12 // Don't set WM decorations when GTK is using Client Side Decorations From 082d1fd28a79d728a26a384e07fcefa9c6808ae8 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 24 May 2025 22:14:01 +0200 Subject: [PATCH 199/416] Fix TAB behaviour in a panel with notebook as only active child If a panel contained a notebook and some other element(s) that didn't accept focus (e.g. because they were disabled), TAB didn't wrap around correctly. Fix this by ensuring the focus gets to the notebook itself in this case by handling it in wxNotebook itself if the parent didn't do anything. See #25443. (cherry picked from commit a2ed8ac9e6239740902ca2d5062079b2b5673e50) --- docs/changes.txt | 1 + src/msw/notebook.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 481e70a57c70..824dda5a7f0e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -274,6 +274,7 @@ wxMSW - Fix regression in wxTreeCtrl indent size in high DPI (Maarten Bent, #25282). - Fix using wxNO_IMPLICIT_WXSTRING_ENCODING with PCH (#25568). - Fix crash when copying wxBitmaps if GDI resources are exhausted (#24703). +- Fix TAB behaviour in a panel with notebook as only active child (#25443). wxOSX: diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 6eb6f4726b6f..977249068f8d 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -1070,8 +1070,14 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) else if ( parent ) { event.SetCurrentFocus(this); - parent->HandleWindowEvent(event); - } + if ( !parent->HandleWindowEvent(event) ) + { + // if the parent didn't handle this event, the notebook + // must be its only child accepting focus, so take it + event.Skip(false); + SetFocus(); + } + } } } } From 769bddb9e3c01f1d3fe1f36bf87ecdbdb25e7095 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 10 May 2025 15:54:55 +0200 Subject: [PATCH 200/416] Do generate wxEVT_CHAR for Ctrl-Letter even in non US layouts Use the key translated to the US layout by XKB and not the actual character produced by the key in the current layout when determining whether to generate wxEVT_CHAR for key presses with Ctrl or not. This ensures that we produce the expected events for Ctrl-Latter in all layouts and not just the ones using Latin letters. See #25384, #25385. (cherry picked from commit 57c33bb9edb226648bbde1b4425ccaa932cf46a7) --- docs/changes.txt | 1 + src/gtk/window.cpp | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 824dda5a7f0e..bf2e679c632f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -267,6 +267,7 @@ wxGTK: - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). - Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). +- Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). - Show system default window buttons under Wayland (#25562). wxMSW diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 6a71e39d2d41..171dddddf832 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1388,20 +1388,21 @@ gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget), // etc). if ( eventChar.ControlDown() ) { - if ( uniChar >= 'a' && uniChar <= 'z' ) - uniChar = toupper(uniChar); - - if ( (uniChar >= 'A' && uniChar <= 'Z') || - uniChar == '[' || - uniChar == '\\' || - uniChar == ']' || - uniChar == '^' || - uniChar == '_' ) + // We should already have the corresponding key in US layout, + // translated from GTK using XKB, in the event. + long keyCode = event.m_keyCode; + + if ( (keyCode >= 'A' && keyCode <= 'Z') || + keyCode == '[' || + keyCode == '\\' || + keyCode == ']' || + keyCode == '^' || + keyCode == '_' ) { // Convert to ASCII control character. - uniChar &= 0x1f; + keyCode &= 0x1f; } - else if ( uniChar != ' ' ) + else if ( keyCode != ' ' ) { // For the printable characters other than Space (for which // we still do generate CHAR event, for compatibility with @@ -1413,9 +1414,9 @@ gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget), break; } - eventChar.m_keyCode = uniChar; + eventChar.m_keyCode = keyCode; #if wxUSE_UNICODE - eventChar.m_uniChar = uniChar; + eventChar.m_uniChar = keyCode; #endif // wxUSE_UNICODE } else // Not a control character. From 7be5d6b6f4f730810af48bbc3bdc227435c8b170 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 17 May 2025 00:38:21 +0200 Subject: [PATCH 201/416] Really fix generic wxActivityIndicator dots contrast These dots should just use the window foreground colour instead of using the hardcoded colour -- it will still be the same as before by default but could be different (and better) now if different colours are used for the window. See #25405. (cherry picked from commit c0089d90b047cdf012d5c10f7de65acf00e5ae0f) --- docs/changes.txt | 1 + src/generic/activityindicator.cpp | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index bf2e679c632f..3344824f9f49 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -261,6 +261,7 @@ All (GUI): - Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). - Don't assert in wxGridSizer::Calc{Cols,Rows}() if sizer is empty (#25641). - Fix calling wxDataViewCtrl::Collapse() from event handler (#25631). +- Improve wxActivityIndicator dots colour contrast with background (#25405). wxGTK: diff --git a/src/generic/activityindicator.cpp b/src/generic/activityindicator.cpp index e93d7615a53b..e34be2d59c4d 100644 --- a/src/generic/activityindicator.cpp +++ b/src/generic/activityindicator.cpp @@ -148,8 +148,7 @@ class wxActivityIndicatorImpl // the next position every time. gc->Rotate(m_frame*angle); - // Choose a contrasting background colour. - wxColour colBg = wxSystemSettings::SelectLightDark(*wxBLACK, *wxWHITE); + wxColour colDot = m_win->GetForegroundColour(); const bool isEnabled = m_win->IsThisEnabled(); for ( int n = 0; n < NUM_DOTS; n++ ) @@ -163,8 +162,8 @@ class wxActivityIndicatorImpl // it in 0..wxALPHA_OPAQUE range. const int opacity = opacityIndex*(wxALPHA_OPAQUE + 1)/NUM_DOTS - 1; - colBg.Set(colBg.Red(), colBg.Green(), colBg.Blue(), opacity); - gc->SetBrush(colBg); + colDot.Set(colDot.Red(), colDot.Green(), colDot.Blue(), opacity); + gc->SetBrush(colDot); gc->FillPath(path); gc->Rotate(angle); From 99daac0eeace4080322e7af5c4bf45ddd6cd398b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 28 May 2025 23:06:00 +0200 Subject: [PATCH 202/416] Make wxPlatformInfo::Get() thread-safe Protect gs_platInfo initialization with a critical section to ensure that we don't try to do it in parallel from more than one thread, resulting in crashes. See #25459, #25464. (cherry picked from commit a26eda72e88681aed9db3ae823f244e9a7cce402) --- docs/changes.txt | 1 + interface/wx/platinfo.h | 5 +++++ src/common/platinfo.cpp | 22 ++++++++++++++++------ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3344824f9f49..42bc475913e2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -255,6 +255,7 @@ Changes in behaviour which may result in build errors All: - Backport several CMake enhancements from 3.3 (Maarten Bent, #25448). +- Make wxPlatformInfo::Get() thread-safe (#25459). All (GUI): diff --git a/interface/wx/platinfo.h b/interface/wx/platinfo.h index e452da1355c7..2e728fc1a2e9 100644 --- a/interface/wx/platinfo.h +++ b/interface/wx/platinfo.h @@ -270,6 +270,11 @@ class wxPlatformInfo /** Returns the global wxPlatformInfo object, initialized with the values for the currently running platform. + + Note that this function is thread-safe, i.e. it can be called + concurrently from multiple threads without locking (unless wxWidgets + was compiled without threads support, i.e. with @c wxUSE_THREADS + changed to be 0). */ static const wxPlatformInfo& Get(); diff --git a/src/common/platinfo.cpp b/src/common/platinfo.cpp index 377657656141..35e2906ad53a 100644 --- a/src/common/platinfo.cpp +++ b/src/common/platinfo.cpp @@ -33,11 +33,21 @@ #include "wx/dynlib.h" #endif +namespace +{ + // global object // VERY IMPORTANT: do not use the default constructor since it would // try to init the wxPlatformInfo instance using // gs_platInfo itself! -static wxPlatformInfo gs_platInfo(wxPORT_UNKNOWN); +wxPlatformInfo gs_platInfo(wxPORT_UNKNOWN); + +#if wxUSE_THREADS +// Critical section protecting gs_platInfo initialization. +wxCriticalSection gs_csInit; +#endif // wxUSE_THREADS + +} // anonymous namespace // ---------------------------------------------------------------------------- // constants @@ -213,12 +223,12 @@ void wxPlatformInfo::InitForCurrentPlatform() /* static */ const wxPlatformInfo& wxPlatformInfo::Get() { - static bool initialized = false; - if ( !initialized ) - { +#if wxUSE_THREADS + wxCriticalSectionLocker lockInit(gs_csInit); +#endif // wxUSE_THREADS + + if ( !gs_platInfo.m_initializedForCurrentPlatform ) gs_platInfo.InitForCurrentPlatform(); - initialized = true; - } return gs_platInfo; } From a456327d5024d6d8e644fd26a6274db400154d14 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 28 Jul 2025 17:32:42 +0200 Subject: [PATCH 203/416] Fix assert checking for wxSocket flags compatibility While wxSOCKET_NOWAIT is incompatible with wxSOCKET_WAITALL, using wxSOCKET_NOWAIT_READ and wxSOCKET_WAITALL_WRITE should be allowed, but it was not. Fix this and also split the assert in two for a bit more clarity. See #17114, #25665. (cherry picked from commit 943e4fb18d7b2a3b717628dcc576132837945905) --- docs/changes.txt | 1 + src/common/socket.cpp | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 42bc475913e2..cfd2dea11ef6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -255,6 +255,7 @@ Changes in behaviour which may result in build errors All: - Backport several CMake enhancements from 3.3 (Maarten Bent, #25448). +- Fix using wxSOCKET_NOWAIT_READ and wxSOCKET_WAITALL_WRITE together (#17114). - Make wxPlatformInfo::Get() thread-safe (#25459). All (GUI): diff --git a/src/common/socket.cpp b/src/common/socket.cpp index b5f5a91cfa5e..caa515c10ed6 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -1704,12 +1704,18 @@ void wxSocketBase::SetTimeout(long seconds) void wxSocketBase::SetFlags(wxSocketFlags flags) { - // Do some sanity checking on the flags used: not all values can be used - // together. - wxASSERT_MSG( !(flags & wxSOCKET_NOWAIT) || - !(flags & (wxSOCKET_WAITALL | wxSOCKET_BLOCK)), - "Using wxSOCKET_WAITALL or wxSOCKET_BLOCK with " - "wxSOCKET_NOWAIT doesn't make sense" ); + // Do some sanity checking on the flags used: we can't not wait at all and + // wait for all data in the same direction (but using wxSOCKET_NOWAIT_READ + // with wxSOCKET_WAITALL_WRITE, or vice versa, is fine). + wxASSERT_MSG( (!(flags & wxSOCKET_NOWAIT_READ) || + !(flags & wxSOCKET_WAITALL_READ)) && + (!(flags & wxSOCKET_NOWAIT_WRITE) || + !(flags & wxSOCKET_WAITALL_WRITE)), + "wxSOCKET_WAITALL and wxSOCKET_NOWAIT are incompatible" ); + + // And blocking is not compatible with not waiting, in any direction. + wxASSERT_MSG( !(flags & wxSOCKET_BLOCK) || !(flags & wxSOCKET_NOWAIT), + "wxSOCKET_BLOCK and wxSOCKET_NOWAIT are incompatible" ); // Blocking sockets are very different from non-blocking ones and we need // to [un]register the socket with the event loop if wxSOCKET_BLOCK is From 30c0f6a675bd586c50820838f0814817b1b5ae92 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 Aug 2025 15:22:14 +0200 Subject: [PATCH 204/416] Fix readlink problem in configure build under macOS < 12 Don't use "readlink -f" as readlink doesn't support this option in macOS 11 and earlier. Just construct the full path ourselves instead. Closes #25675. --- configure | 10 ++++++---- configure.in | 10 ++++++---- docs/changes.txt | 1 + 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/configure b/configure index ff442b5c9f94..7744c050b0f9 100755 --- a/configure +++ b/configure @@ -34271,15 +34271,17 @@ rm -f core conftest.err conftest.$ac_objext \ DYLIB_RPATH_POSTLINK="${HOST_PREFIX}install_name_tool -id \$@ \$@" cat <change-install-names #!/bin/sh +set -e +libdir=\$(cd lib ; pwd -P) libnames=\$(cd lib ; ls -1 libwx*${WX_RELEASE}.dylib) changes='' for dep in \${libnames} ; do - target=\$(readlink -f \${4}/\${dep}) - changes="\${changes} -change \${target} \${3}/\${dep}" + target=\$(readlink \${4}/\${dep}) + changes="\${changes} -change \${libdir}\${target} \${3}/\${dep}" done for i in \${libnames} ; do - lib=\$(readlink -f \${1}/\${i}) - ${HOST_PREFIX}install_name_tool \${changes} -id \${3}/\${i} \${lib} + lib=\$(readlink \${1}/\${i}) + ${HOST_PREFIX}install_name_tool \${changes} -id \${3}/\${i} \${libdir}/\${lib} done if test -f "\${2}/wxrc-${WX_RELEASE}" ; then diff --git a/configure.in b/configure.in index 9e119382a893..1b4e2b385e23 100644 --- a/configure.in +++ b/configure.in @@ -4142,15 +4142,17 @@ if test "$wxUSE_SHARED" = "yes"; then DYLIB_RPATH_POSTLINK="${HOST_PREFIX}install_name_tool -id \$@ \$@" cat <change-install-names #!/bin/sh +set -e +libdir=\$(cd lib ; pwd -P) libnames=\$(cd lib ; ls -1 libwx*${WX_RELEASE}.dylib) changes='' for dep in \${libnames} ; do - target=\$(readlink -f \${4}/\${dep}) - changes="\${changes} -change \${target} \${3}/\${dep}" + target=\$(readlink \${4}/\${dep}) + changes="\${changes} -change \${libdir}\${target} \${3}/\${dep}" done for i in \${libnames} ; do - lib=\$(readlink -f \${1}/\${i}) - ${HOST_PREFIX}install_name_tool \${changes} -id \${3}/\${i} \${lib} + lib=\$(readlink \${1}/\${i}) + ${HOST_PREFIX}install_name_tool \${changes} -id \${3}/\${i} \${libdir}/\${lib} done if test -f "\${2}/wxrc-${WX_RELEASE}" ; then diff --git a/docs/changes.txt b/docs/changes.txt index cfd2dea11ef6..53658185c483 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -285,6 +285,7 @@ wxOSX: - Fix crash on startup when using Farsi as system language (#25561). - Do not activate "Close" button on Cmd-C (nobugshere, #25346). - Fix memory leak in wxColour::Set() (#25569). +- Fix regression with configure build under macOS < 12 (#25675). 3.2.8.1: (released 2025-05-25) From c84d53012fa1d0034fb48a0225008e32c705841a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 13 Aug 2025 23:08:43 +0200 Subject: [PATCH 205/416] Fix wrong documentation of wxObjectDataPtr ctor This ctor was wrongly documented back in cfa9866bf5 (revision contributed by Utensil Candel, 2008-03-30) to call IncRef() on the pointer passed to it but in fact it just takes ownership of it. See #25692. (cherry picked from commit ea0a01879f09721eb97e4dfb879971fda6431130) --- interface/wx/object.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/wx/object.h b/interface/wx/object.h index 5532ac95a968..9fec9edb24dc 100644 --- a/interface/wx/object.h +++ b/interface/wx/object.h @@ -581,7 +581,8 @@ class wxObjectDataPtr Constructor. @a ptr is a pointer to the reference counted object to which this class points. - If @a ptr is not NULL @b T::IncRef() will be called on the object. + This object takes ownership of @a ptr, i.e.\ it will call T::DecRef() + on it if it is non-null when this object is destroyed or reset. */ wxObjectDataPtr(T* ptr = NULL); From c13eadfb4429b0dd9703f084f038dfe5e1969fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Tue, 5 Aug 2025 16:00:05 +0200 Subject: [PATCH 206/416] Fix MSVS debug visualizer of wxStrings Fix the visualizer to display full Unicode string. Previously, only the first character was shown in recent versions of Visual Studio. This was due to the use of "sb" format specifier meaning an ANSI string. Use condition expressions to cover both wchar_t and UTF-8 builds. Correct the specifier for UTF-8 case to be "s8b" so that it interprets and displays UTF-8 correctly. See #25684. (cherry picked from commit 77dd42f3c6f5198f50874955fcb25e91dac9f083) --- docs/changes.txt | 1 + misc/msvc/wxWidgets.natvis | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 53658185c483..953b5933b6a5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -278,6 +278,7 @@ wxMSW - Fix regression in wxTreeCtrl indent size in high DPI (Maarten Bent, #25282). - Fix using wxNO_IMPLICIT_WXSTRING_ENCODING with PCH (#25568). - Fix crash when copying wxBitmaps if GDI resources are exhausted (#24703). +- Fix MSVS debug visualizer for wxString (#25684). - Fix TAB behaviour in a panel with notebook as only active child (#25443). wxOSX: diff --git a/misc/msvc/wxWidgets.natvis b/misc/msvc/wxWidgets.natvis index ca15f7cdea1a..1eea4893d670 100644 --- a/misc/msvc/wxWidgets.natvis +++ b/misc/msvc/wxWidgets.natvis @@ -13,11 +13,12 @@ http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2# + "sub" or "s8b" qualifier to get rid of L"..." around the string and + then add the quotes back. This also has a (nice) side effect of not + doubling the backslashes inside the string. --> - "{m_impl,sb}" + "{m_impl,sub}" + "{m_impl,s8b}" m_impl From da73abbd8452cd6ad162b28ff59260de811a044b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 12 Jun 2025 22:40:28 +0200 Subject: [PATCH 207/416] Don't bother resetting wxStaticBitmap image when destroying it This results in sending a WM_PAINT to the control parent which may be rather unexpected if it happens while it is itself being destroyed, see the fix for #25499 in the parent commit, so don't do it when Free() is called from dtor. And it is also unnecessary to do it when Free() is called from DoUpdateImage(), as it calls MSWReplaceImageHandle() with another, valid, handle right next anyhow. See #25518. (cherry picked from commit 3e32a9abe1e05f0cddb17c791a59977bed8e8cff) --- src/msw/statbmp.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp index 47c398a54545..54a42f561d96 100644 --- a/src/msw/statbmp.cpp +++ b/src/msw/statbmp.cpp @@ -162,8 +162,6 @@ void wxStaticBitmap::Free() { m_bitmap.UnRef(); - MSWReplaceImageHandle(0); - if ( m_ownsCurrentHandle ) { ::DeleteObject(m_currentHandle); From 9b0dd3817a8579405db9d77430fd9f24f152b088 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 17 Aug 2025 23:51:32 +0200 Subject: [PATCH 208/416] Reduce GDI resource usage in wxMSW wxStaticBitmap Free unused bitmaps in wxMSW wxStaticBitmap to reduce GDI resource usage in this class. See #25698, #25699. (cherry picked from commit a39832140e8a854c9854fc7f7b32f563f9df1365) --- docs/changes.txt | 1 + include/wx/msw/statbmp.h | 4 ---- src/msw/statbmp.cpp | 39 +++++++++++++++++++++++++-------------- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 953b5933b6a5..ae4f95bc6b33 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -280,6 +280,7 @@ wxMSW - Fix crash when copying wxBitmaps if GDI resources are exhausted (#24703). - Fix MSVS debug visualizer for wxString (#25684). - Fix TAB behaviour in a panel with notebook as only active child (#25443). +- Reduce GDI resource usage in wxStaticBitmap (Alex Shvartzkop, #25698). wxOSX: diff --git a/include/wx/msw/statbmp.h b/include/wx/msw/statbmp.h index 384343517b8a..387c23a89bb4 100644 --- a/include/wx/msw/statbmp.h +++ b/include/wx/msw/statbmp.h @@ -133,10 +133,6 @@ class WXDLLIMPEXP_CORE wxStaticBitmap : public wxStaticBitmapBase // Flag indicating whether we own m_currentHandle, i.e. should delete it. bool m_ownsCurrentHandle; - // Replace the image at the native control level with the given HBITMAP or - // HICON (which can be 0) and destroy the previous image if necessary. - void MSWReplaceImageHandle(WXHANDLE handle); - wxDECLARE_DYNAMIC_CLASS(wxStaticBitmap); wxDECLARE_EVENT_TABLE(); diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp index 54a42f561d96..c75e7a7fed8f 100644 --- a/src/msw/statbmp.cpp +++ b/src/msw/statbmp.cpp @@ -223,19 +223,6 @@ void wxStaticBitmap::DoPaintManually(wxPaintEvent& WXUNUSED(event)) true /* use mask */); } -void wxStaticBitmap::MSWReplaceImageHandle(WXHANDLE handle) -{ - HGDIOBJ oldHandle = (HGDIOBJ)::SendMessage(GetHwnd(), STM_SETIMAGE, - m_icon.IsOk() ? IMAGE_ICON : IMAGE_BITMAP, (LPARAM)handle); - // detect if this is still the handle we passed before or - // if the static-control made a copy of the bitmap! - if (oldHandle != 0 && oldHandle != (HGDIOBJ) m_currentHandle) - { - // the static control made a copy and we are responsible for deleting it - ::DeleteObject((HGDIOBJ) oldHandle); - } -} - void wxStaticBitmap::DoUpdateImage(const wxSize& sizeOld, bool wasIcon) { const wxSize sizeNew = GetImageSize(); @@ -296,7 +283,31 @@ void wxStaticBitmap::DoUpdateImage(const wxSize& sizeOld, bool wasIcon) .TurnOn(isIcon ? SS_ICON : SS_BITMAP); } - MSWReplaceImageHandle(m_currentHandle); + + // Update the handle used by the native control. + const WPARAM imageType = m_icon.IsOk() ? IMAGE_ICON : IMAGE_BITMAP; + + const HGDIOBJ currentHandle = (HGDIOBJ)m_currentHandle; + const HGDIOBJ oldHandle = (HGDIOBJ) + ::SendMessage(GetHwnd(), STM_SETIMAGE, imageType, (LPARAM)currentHandle); + + // detect if this is still the handle we passed before or + // if the static-control made a copy of the bitmap! + if ( oldHandle != 0 && oldHandle != currentHandle ) + { + // the static control made a copy and we are responsible for deleting it + ::DeleteObject(oldHandle); + } + + // Also check if we need to keep our current handle, it may be unnecessary + // if the native control doesn't actually use it. + const HGDIOBJ newHandle = (HGDIOBJ) + ::SendMessage(GetHwnd(), STM_GETIMAGE, imageType, 0); + if ( newHandle != currentHandle ) + { + // The control made a copy of the image and we don't need to keep it. + Free(); + } if ( sizeNew != sizeOld ) { From c363545d12b336113ea60526ee25784d271cbd5f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 22 Aug 2025 00:44:08 +0200 Subject: [PATCH 209/416] Fix window size after unmaximizing it in XFCE/MATE Workaround for Mutter from 9537141500 (Fix handling window total size under GNOME with X11, 2025-04-28) broke the well behaving WMs used by other desktop environments, such as XFCE, as it resulted in the window size being mistakenly adjusted after the decorations size was changed due to restoring a previous maximized window. Prevent this from happening by not adjusting the size after the window has been already mapped. See #25348, #25349, #25708, #25711. (cherry picked from commit 9b7371954364413608d93b210a9b0d2738a1f6a4) --- docs/changes.txt | 1 + include/wx/gtk/toplevel.h | 1 + src/gtk/toplevel.cpp | 27 +++++++++++++++++---------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index ae4f95bc6b33..2d8f4fe5b00f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -271,6 +271,7 @@ wxGTK: - Fix height of read-only wxBitmapComboBox (#25468). - Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). - Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). +- Fix regression when unmaximizing windows under XFCE/MATE (#25708). - Show system default window buttons under Wayland (#25562). wxMSW diff --git a/include/wx/gtk/toplevel.h b/include/wx/gtk/toplevel.h index b057a4a0ce03..fa1f305d8ae2 100644 --- a/include/wx/gtk/toplevel.h +++ b/include/wx/gtk/toplevel.h @@ -94,6 +94,7 @@ class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase // GTK callbacks virtual void GTKHandleRealized() wxOVERRIDE; + void GTKHandleMapped(); void GTKConfigureEvent(int x, int y); diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index ad963c17338b..b530883b1e28 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -453,7 +453,14 @@ gtk_frame_map_callback( GtkWidget*, GdkEvent * WXUNUSED(event), wxTopLevelWindow *win ) { - const bool wasIconized = win->IsIconized(); + win->GTKHandleMapped(); + return false; +} +} + +void wxTopLevelWindowGTK::GTKHandleMapped() +{ + const bool wasIconized = IsIconized(); if (wasIconized) { // Because GetClientSize() returns (0,0) when IsIconized() is true, @@ -462,21 +469,21 @@ gtk_frame_map_callback( GtkWidget*, // tlw that was "rolled up" with some WMs. // Queue a resize rather than sending size event directly to allow // children to be made visible first. - win->m_useCachedClientSize = false; - win->m_clientWidth = 0; - gtk_widget_queue_resize(win->m_wxwindow); + m_useCachedClientSize = false; + m_clientWidth = 0; + gtk_widget_queue_resize(m_wxwindow); } // it is possible for m_isShown to be false here, see bug #9909 - if (win->wxWindowBase::Show(true)) + if (wxWindowBase::Show(true)) { - win->GTKDoAfterShow(); + GTKDoAfterShow(); } // restore focus-on-map setting in case ShowWithoutActivating() was called - gtk_window_set_focus_on_map(GTK_WINDOW(win->m_widget), true); + gtk_window_set_focus_on_map(GTK_WINDOW(m_widget), true); - return false; -} + // Deferred show is no longer possible + m_deferShowAllowed = false; } //----------------------------------------------------------------------------- @@ -1298,7 +1305,7 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si if (m_width != oldSize.x || m_height != oldSize.y) { - m_deferShowAllowed = true; + m_deferShowAllowed = !gtk_widget_get_mapped(m_widget); m_useCachedClientSize = false; #ifdef __WXGTK3__ From 323016cdeda38bc96780e6736a5a6ceaca9c5a43 Mon Sep 17 00:00:00 2001 From: jey5nd6 Date: Fri, 22 Aug 2025 14:48:43 +0200 Subject: [PATCH 210/416] Fix showing extra controls in wxFileDialog under macOS These controls were not shown due to a forgotten colon in the test for setAccessoryViewDisclosed support added in e765756555 (OSX file dialog extensions (#2592), 2021-11-26). Fix this simply by adding the colon, which is part of the method name, but also avoid calling this method for save file dialogs which not only don't need it, but result in an immediate application exit if it is called on them. See #25717. (combined cherry pick from 426f745c6b069e9cd71a47a2272f5d6e07a9c6df and 32ea27c34f4b88eb6d407c223d0b91c5c884554b) --- docs/changes.txt | 1 + src/osx/cocoa/filedlg.mm | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 2d8f4fe5b00f..37a04c8c3dd4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -286,6 +286,7 @@ wxMSW wxOSX: - Fix crash on startup when using Farsi as system language (#25561). +- Fix showing extra controls in wxFileDialog (jey5nd6, #25717). - Do not activate "Close" button on Cmd-C (nobugshere, #25346). - Fix memory leak in wxColour::Set() (#25569). - Fix regression with configure build under macOS < 12 (#25675). diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 66ae39a2d53c..6edc93bb6d88 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -513,8 +513,12 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions [accView removeFromSuperview]; [panel setAccessoryView:accView]; + // We need to explicitly show the accessory view for "Open" file + // dialogs, but doing it for "Save" dialogs is not only unnecessary but + // results in an immediate application abort (see #25717). wxCLANG_WARNING_SUPPRESS(undeclared-selector) - if ([panel respondsToSelector:@selector(setAccessoryViewDisclosed)]) + if (!HasFlag(wxFD_SAVE) && + [panel respondsToSelector:@selector(setAccessoryViewDisclosed:)]) { [(id)panel setAccessoryViewDisclosed:YES]; } From ab1c1f23365e4a181c6c7116290946c3f1c15659 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 2 Sep 2025 01:08:59 +0200 Subject: [PATCH 211/416] Fix check for extended locale functions in CMake HAVE_LOCALE_T is misnamed, as it must only be defined not just when locale_t type is available but when the functions using it, such as strxxx_l(), are available. Due to the confusion about the nature of this symbol, CMake didn't check for it correctly and only checked for its existence, but musl (used by e.g. Alpine) does define the type without providing any of the functions using it, which resulted in build errors later. Fix this by checking for both the type and the functions in CMake too, just as we do in configure. See #25749, #25750. (cherry picked from commit 170c38631458dcef648c31b9d98dcc20a8c57f9c) --- build/cmake/setup.cmake | 15 +++++++++++---- docs/changes.txt | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/build/cmake/setup.cmake b/build/cmake/setup.cmake index 3ac663e2dd27..997b1b5302f2 100644 --- a/build/cmake/setup.cmake +++ b/build/cmake/setup.cmake @@ -672,13 +672,20 @@ if(wxUSE_FSWATCHER) endif() if(wxUSE_XLOCALE) + list(APPEND xlocale_headers locale.h stdlib.h) check_include_file(xlocale.h HAVE_XLOCALE_H) - set(CMAKE_EXTRA_INCLUDE_FILES locale.h) if(HAVE_XLOCALE_H) - list(APPEND CMAKE_EXTRA_INCLUDE_FILES xlocale.h) + list(APPEND xlocale_headers xlocale.h) endif() - check_type_size(locale_t LOCALE_T) - set(CMAKE_EXTRA_INCLUDE_FILES) + wx_check_c_source_compiles(" + locale_t t; + strtod_l(NULL, NULL, t); + strtol_l(NULL, NULL, 0, t); + strtoul_l(NULL, NULL, 0, t); +" + HAVE_LOCALE_T + ${xlocale_headers} + ) endif() # Check sizes of various types diff --git a/docs/changes.txt b/docs/changes.txt index 37a04c8c3dd4..d6d25bd898e2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -257,6 +257,7 @@ All: - Backport several CMake enhancements from 3.3 (Maarten Bent, #25448). - Fix using wxSOCKET_NOWAIT_READ and wxSOCKET_WAITALL_WRITE together (#17114). - Make wxPlatformInfo::Get() thread-safe (#25459). +- Fix CMake build under Alpine Linux and other systems using musl (#25749). All (GUI): From 97a9f9b8eb969acd858f1ea3d2b84621007795e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Sat, 30 Aug 2025 14:03:35 +0200 Subject: [PATCH 212/416] Fix broken wxMenuItem bitmap setting on macOS This reverts most of 337940f and 616e7c8 (with small bits of c0dbe80) and replaces the error-prone implementation with a simple and straightforward one. On macOS, NSImage is a direct equivalent of wxBitmapBundle and looking up and converting a specific-scale bitmap when the menu is attached is unnecessary busywork. Instead, switch wxMenuItemImpl to use wxBitmapBundle too. This is private API, so there are no compatibility concerns. Among the bugs in the previous implementation were: - ignoring bitmaps set in the global Mac menu - ignoring bitmaps set in the Mac-specific application menu - loosing compatibility with NSImage-backed wxBitmap and rendering them without appearance awareness and in low resolution in the global menu See #25744. --- include/wx/osx/core/private.h | 2 +- include/wx/osx/menu.h | 4 ++-- include/wx/osx/menuitem.h | 1 + src/osx/cocoa/menuitem.mm | 5 +++-- src/osx/iphone/menuitem.mm | 2 +- src/osx/menu_osx.cpp | 38 ++--------------------------------- src/osx/menuitem_osx.cpp | 7 ++++++- 7 files changed, 16 insertions(+), 43 deletions(-) diff --git a/include/wx/osx/core/private.h b/include/wx/osx/core/private.h index cf52b8d06494..b907da8f526d 100644 --- a/include/wx/osx/core/private.h +++ b/include/wx/osx/core/private.h @@ -160,7 +160,7 @@ public : } virtual ~wxMenuItemImpl() ; - virtual void SetBitmap( const wxBitmap& bitmap ) = 0; + virtual void SetBitmap( const wxBitmapBundle& bitmap ) = 0; virtual void Enable( bool enable ) = 0; virtual void Check( bool check ) = 0; virtual void SetLabel( const wxString& text, wxAcceleratorEntry *entry ) = 0; diff --git a/include/wx/osx/menu.h b/include/wx/osx/menu.h index 96e3515b2a64..777a77149a21 100644 --- a/include/wx/osx/menu.h +++ b/include/wx/osx/menu.h @@ -72,7 +72,7 @@ class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase virtual void Attach(wxMenuBarBase *menubar) wxOVERRIDE; #endif - void SetupBitmaps(); + void SetupBitmaps(); //unused protected: // hide special menu items like exit, preferences etc @@ -172,7 +172,7 @@ class WXDLLIMPEXP_CORE wxMenuBar : public wxMenuBarBase static wxMenuBar* MacGetCommonMenuBar() { return s_macCommonMenuBar; } virtual void Attach(wxFrame *frame) wxOVERRIDE; - void SetupBitmaps(); + void SetupBitmaps(); // unused static WXHMENU MacGetWindowMenuHMenu() { return s_macWindowMenuHandle ; } diff --git a/include/wx/osx/menuitem.h b/include/wx/osx/menuitem.h index 7b29f950c9a8..fee0dfca6d60 100644 --- a/include/wx/osx/menuitem.h +++ b/include/wx/osx/menuitem.h @@ -38,6 +38,7 @@ class WXDLLIMPEXP_CORE wxMenuItem: public wxMenuItemBase // override base class virtuals virtual void SetItemLabel(const wxString& strName) wxOVERRIDE; + virtual void SetBitmap(const wxBitmapBundle& bitmap) wxOVERRIDE; virtual void Enable(bool bDoEnable = true) wxOVERRIDE; virtual void Check(bool bDoCheck = true) wxOVERRIDE; diff --git a/src/osx/cocoa/menuitem.mm b/src/osx/cocoa/menuitem.mm index dd7369ef5810..7e892d6e2688 100644 --- a/src/osx/cocoa/menuitem.mm +++ b/src/osx/cocoa/menuitem.mm @@ -19,6 +19,7 @@ #include "wx/menu.h" #endif // WX_PRECOMP +#include "wx/private/bmpbndl.h" #include "wx/osx/private.h" #include "wx/osx/private/available.h" @@ -249,9 +250,9 @@ - (void)setHidden:(BOOL)hidden; ~wxMenuItemCocoaImpl(); - void SetBitmap( const wxBitmap& bitmap ) wxOVERRIDE + void SetBitmap( const wxBitmapBundle& bitmap ) wxOVERRIDE { - [m_osxMenuItem setImage:bitmap.GetNSImage()]; + [m_osxMenuItem setImage:wxOSXGetImageFromBundle(bitmap)]; } void Enable( bool enable ) wxOVERRIDE diff --git a/src/osx/iphone/menuitem.mm b/src/osx/iphone/menuitem.mm index 1863e0ccd740..d16ef43f1b54 100644 --- a/src/osx/iphone/menuitem.mm +++ b/src/osx/iphone/menuitem.mm @@ -192,7 +192,7 @@ void wxMacCocoaMenuItemSetAccelerator( UIMenuItem* menuItem, wxAcceleratorEntry* ~wxMenuItemCocoaImpl(); - void SetBitmap( const wxBitmap& bitmap ) wxOVERRIDE + void SetBitmap( const wxBitmapBundle& bitmap ) wxOVERRIDE { } diff --git a/src/osx/menu_osx.cpp b/src/osx/menu_osx.cpp index 3c5b77c63b1d..32f1d54c5f91 100644 --- a/src/osx/menu_osx.cpp +++ b/src/osx/menu_osx.cpp @@ -156,14 +156,6 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *item, size_t pos) // if we're already attached to the menubar, we must update it if ( IsAttached() && GetMenuBar()->IsAttached() ) { - if ( item->IsSubMenu() ) - { - item->GetSubMenu()->SetupBitmaps(); - } - if ( !item->IsSeparator() ) - { - item->UpdateItemBitmap(); - } GetMenuBar()->Refresh(); } #endif // wxUSE_MENUBAR @@ -418,38 +410,17 @@ void wxMenu::HandleMenuClosed() void wxMenu::Attach(wxMenuBarBase *menubar) { wxMenuBase::Attach(menubar); - - if (menubar->IsAttached()) - { - SetupBitmaps(); - } } #endif void wxMenu::SetInvokingWindow(wxWindow* win) { wxMenuBase::SetInvokingWindow(win); - - if ( win ) - SetupBitmaps(); } void wxMenu::SetupBitmaps() { - for ( wxMenuItemList::compatibility_iterator node = m_items.GetFirst(); - node; - node = node->GetNext() ) - { - wxMenuItem *item = node->GetData(); - if ( item->IsSubMenu() ) - { - item->GetSubMenu()->SetupBitmaps(); - } - if ( !item->IsSeparator() ) - { - item->UpdateItemBitmap(); - } - } + // unused, kept for ABI compatibility } #if wxUSE_MENUBAR @@ -694,17 +665,12 @@ wxString wxMenuBar::GetMenuLabel(size_t pos) const void wxMenuBar::SetupBitmaps() { - for ( wxMenuList::const_iterator it = m_menus.begin(); it != m_menus.end(); ++it ) - { - (*it)->SetupBitmaps(); - } + // unused, kept for ABI compatibility } void wxMenuBar::Attach(wxFrame *frame) { wxMenuBarBase::Attach(frame); - - SetupBitmaps(); } // --------------------------------------------------------------------------- diff --git a/src/osx/menuitem_osx.cpp b/src/osx/menuitem_osx.cpp index 39b839d0e3be..4a190e386677 100644 --- a/src/osx/menuitem_osx.cpp +++ b/src/osx/menuitem_osx.cpp @@ -153,6 +153,11 @@ void wxMenuItem::SetItemLabel(const wxString& text) UpdateItemText() ; } +void wxMenuItem::SetBitmap(const wxBitmapBundle& bitmap) +{ + wxMenuItemBase::SetBitmap(bitmap); + UpdateItemBitmap(); +} void wxMenuItem::UpdateItemBitmap() { @@ -161,7 +166,7 @@ void wxMenuItem::UpdateItemBitmap() if ( m_bitmap.IsOk() ) { - GetPeer()->SetBitmap(GetBitmap()); + GetPeer()->SetBitmap(m_bitmap); } } From 8d728c5d9d66018c2621f9e487efea1cbed2495c Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Mon, 8 Sep 2025 07:49:49 -0400 Subject: [PATCH 213/416] Initialize value to suppress false positive warning from MSVC MSVC gives a "possibly uninitialized variable" warning even if this can't happen as FromString() always fills it in if it returns true. Initialize the variable just to avoid this warning. See #25771. (cherry picked from commit affc1b2da1e51c1c107dd8f83b839d73ce84a7e8) --- src/common/valnum.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/valnum.cpp b/src/common/valnum.cpp index 0d583ea928a4..e0b024367dad 100644 --- a/src/common/valnum.cpp +++ b/src/common/valnum.cpp @@ -266,7 +266,7 @@ wxIntegerValidatorBase::FromString(const wxString& s, else { // Parse as unsigned to ensure we don't accept minus sign here. - ULongestValueType uvalue; + ULongestValueType uvalue = 0; if ( !wxNumberFormatter::FromString(s, &uvalue) ) return false; From 498f4fe92a273890212c7ea68ab027195f14efbf Mon Sep 17 00:00:00 2001 From: Richard Date: Mon, 8 Sep 2025 14:39:01 -0600 Subject: [PATCH 214/416] Document that wxIMPLEMENT_APP must be used in global scope As this macro defines main(), it can't be used inside any namespace. See #25772, #25775. (cherry picked from commit 02cd327f0ef4f48587240d8f16ab5f74a20a8596) --- docs/doxygen/overviews/app.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/doxygen/overviews/app.h b/docs/doxygen/overviews/app.h index cb2ae2e963e1..f669737866b0 100644 --- a/docs/doxygen/overviews/app.h +++ b/docs/doxygen/overviews/app.h @@ -61,6 +61,10 @@ You can also use wxDECLARE_APP(appClass) in a header file to declare the wxGetAp function which returns a reference to the application object. Otherwise you can only use the global @c wxTheApp pointer which is of type @c wxApp*. +Please note that wxIMPLEMENT_APP() and wxDECLARE_APP() must always be used in +the global scope and not within a namespace, even if the application class is +within a namespace. + @section overview_app_shutdown Application Shutdown From 82da38723c5f42f368032f876500d4537695cdc1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 8 Sep 2025 23:10:15 +0200 Subject: [PATCH 215/416] Document wxIMPLEMENT_APP_NO_MAIN() too This was mentioned in the documentation of other macros but not documented itself, do document it now. (cherry picked from commit 212bfaf97731543e0bd16cbd598bd9fee8ca133e) --- interface/wx/app.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/interface/wx/app.h b/interface/wx/app.h index 7b80f7b505f8..110fc553b4a9 100644 --- a/interface/wx/app.h +++ b/interface/wx/app.h @@ -1234,6 +1234,24 @@ class wxApp : public wxAppConsole */ #define wxDECLARE_APP( className ) +/** + This macro and tells wxWidgets which application class should be used. + + Unlike the more usual wxIMPLEMENT_APP() macro, this macro does not define + the entry point of the application, i.e. doesn't define @c main() or + @c WinMain() function, so you need to implement it separately when using + it. + + The @a className passed to this macro must be a name of a default + constructible class deriving from wxApp that will be instantiated by + wxWidgets during its initialization. + + Note that this macro requires a final semicolon. + + @header{wx/app.h} + */ +#define wxIMPLEMENT_APP_NO_MAIN( className ) + /** This macro defines the application entry point and tells wxWidgets which application class should be used. @@ -1243,8 +1261,9 @@ class wxApp : public wxAppConsole typical GUI application it's simpler and more convenient to use this macro to do both together. - The @a className passed to this macro must be a name of the class deriving - from wxApp. + The @a className passed to this macro must be a name of a default + constructible class deriving from wxApp that will be instantiated by + wxWidgets during its initialization. Note that this macro requires a final semicolon. From 07495d603b84753333ba6248eecb9d466e3aa0d8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 23 Apr 2024 15:21:55 +0200 Subject: [PATCH 216/416] Don't leak surface every time wxOverlay is used in wxGTK Free the old surface pointer before overwriting it with the new one in wxOverlayImpl::EndDrawing(). This resulted in huge memory leaks when using wxOverlay repeatedly, e.g. while dragging something around the window. See #24500. (cherry picked from commit 34e68666838b4538fc1910eda3fb0fd7a27bcc30) --- docs/changes.txt | 1 + src/gtk/overlay.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index d6d25bd898e2..ae5b5a4ec9f4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -270,6 +270,7 @@ wxGTK: - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). +- Fix memory leak when using wxOverlay (#24500). - Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). - Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). - Fix regression when unmaximizing windows under XFCE/MATE (#25708). diff --git a/src/gtk/overlay.cpp b/src/gtk/overlay.cpp index e4446077b22e..a714faf57959 100644 --- a/src/gtk/overlay.cpp +++ b/src/gtk/overlay.cpp @@ -167,6 +167,8 @@ void wxOverlayImpl::EndDrawing(wxDC* dc) return; cairo_pattern_t* pattern = cairo_pop_group(m_cr); + if (m_surface) + cairo_surface_destroy(m_surface); cairo_pattern_get_surface(pattern, &m_surface); cairo_surface_reference(m_surface); cairo_pattern_destroy(pattern); From 1f29d170868f35608e993f8520257b38b1a275d4 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 2 Sep 2025 16:48:45 +0200 Subject: [PATCH 217/416] Fix Shift-TAB behaviour when notebook is the only active child This is similar to 082d1fd28a (Fix TAB behaviour in a panel with notebook as only active child, 2025-05-24) but fixes Shift-TAB handling, and not TAB, by making it wrap around to notebook itself in this case. See #25443. (cherry picked from commit 329162e4f4c008c4e706aa72c5e50702a7016a13) --- src/msw/notebook.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 977249068f8d..94998bfe7bed 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -1030,7 +1030,17 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) // focus is currently on notebook tab and should leave // it backwards (Shift-TAB) event.SetCurrentFocus(this); - parent->HandleWindowEvent(event); + if ( !parent->HandleWindowEvent(event) ) + { + // if the parent didn't handle this event, the notebook + // must be its only child accepting focus, so let the page + // handle it to wrap around to the last control in tab order + if ( m_selection != wxNOT_FOUND ) + { + wxWindow* page = m_pages[m_selection]; + page->HandleWindowEvent(event); + } + } } else if ( isFromParent || isFromSelf ) { From a6fc33b416e2ebc804d80a1ac66021935c434573 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Sep 2025 22:38:04 +0200 Subject: [PATCH 218/416] Don't link with unnecessary and now removed AGL framework This framework has apparently been deprecated since quite some time and was removed from macOS 26, so linking with it resulted in an error. Don't do this any longer. See #25798. (cherry picked from commit dd3f2509499e0e6aac4ebf8dab72b5d496c5bfbc) --- configure | 2 +- configure.in | 2 +- docs/changes.txt | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 7744c050b0f9..63a6a4882065 100755 --- a/configure +++ b/configure @@ -32397,7 +32397,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then if test "$wxUSE_OSX_COCOA" = 1; then - OPENGL_LIBS="-framework OpenGL -framework AGL" + OPENGL_LIBS="-framework OpenGL" elif test "$wxUSE_MSW" = 1; then OPENGL_LIBS="-lopengl32 -lglu32" elif test "$wxUSE_MOTIF" = 1 -o "$wxUSE_X11" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1; then diff --git a/configure.in b/configure.in index 1b4e2b385e23..a5656ce430c4 100644 --- a/configure.in +++ b/configure.in @@ -3871,7 +3871,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then dnl look in glcanvas.h for the list of platforms supported by wxGlCanvas: if test "$wxUSE_OSX_COCOA" = 1; then - OPENGL_LIBS="-framework OpenGL -framework AGL" + OPENGL_LIBS="-framework OpenGL" elif test "$wxUSE_MSW" = 1; then OPENGL_LIBS="-lopengl32 -lglu32" elif test "$wxUSE_MOTIF" = 1 -o "$wxUSE_X11" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1; then diff --git a/docs/changes.txt b/docs/changes.txt index ae5b5a4ec9f4..1dececcc2392 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -292,6 +292,7 @@ wxOSX: - Do not activate "Close" button on Cmd-C (nobugshere, #25346). - Fix memory leak in wxColour::Set() (#25569). - Fix regression with configure build under macOS < 12 (#25675). +- Fix build under macOS 26 Tahoe (#25798). 3.2.8.1: (released 2025-05-25) From f2c432cc0df43e68405c57a5aa965e2729a9e99c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Sep 2025 21:11:44 +0200 Subject: [PATCH 219/416] Make wxGenericCalendarCtrl DPI aware Adjust the code to compile with C++98. See #25762. (cherry picked from commit 18711b55baecb6246bf7daa629874688c9e125ae) --- samples/calendar/calendar.cpp | 5 ++- src/generic/calctrlg.cpp | 68 ++++++++++++++++++----------------- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/samples/calendar/calendar.cpp b/samples/calendar/calendar.cpp index 7246793102f8..05b58e6dffb0 100644 --- a/samples/calendar/calendar.cpp +++ b/samples/calendar/calendar.cpp @@ -390,9 +390,8 @@ bool MyApp::OnInit() wxUILocale::UseDefault(); // Create the main application window - MyFrame *frame = new MyFrame("Calendar wxWidgets sample" - ,wxPoint(50, 50), wxSize(460, 340) - ); + MyFrame* frame = new MyFrame("Calendar wxWidgets sample"); + frame->SetSize(frame->FromDIP(wxSize(460, 340))); frame->Show(true); diff --git a/src/generic/calctrlg.cpp b/src/generic/calctrlg.cpp index b7548b05000a..055597e66b2e 100644 --- a/src/generic/calctrlg.cpp +++ b/src/generic/calctrlg.cpp @@ -674,8 +674,10 @@ size_t wxGenericCalendarCtrl::GetWeek(const wxDateTime& date) const // the same space // the constants used for the layout -#define VERT_MARGIN 5 // distance between choice and calendar -#define HORZ_MARGIN 5 // spin +static const int VERT_MARGIN = 5; // distance between choice and calendar +static const int HORZ_MARGIN = 5; // distance between choice and spin +static const int DAY_MARGIN = 2; // distance between day rows and column +static const int WEEK_MARGIN = 4; // extra width of the week column wxSize wxGenericCalendarCtrl::DoGetBestSize() const { @@ -683,7 +685,7 @@ wxSize wxGenericCalendarCtrl::DoGetBestSize() const const_cast(this)->RecalcGeometry(); wxCoord width = 7*m_widthCol + m_calendarWeekWidth, - height = 7*m_heightRow + m_rowOffset + VERT_MARGIN; + height = 7*m_heightRow + m_rowOffset + FromDIP(VERT_MARGIN); if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ) { @@ -691,9 +693,9 @@ wxSize wxGenericCalendarCtrl::DoGetBestSize() const const wxSize bestSizeSpin = m_spinYear->GetBestSize(); height += wxMax(bestSizeChoice.y, bestSizeSpin.y) - + VERT_MARGIN; + + FromDIP(VERT_MARGIN); - wxCoord w2 = bestSizeChoice.x + HORZ_MARGIN + bestSizeSpin.x; + wxCoord w2 = bestSizeChoice.x + FromDIP(HORZ_MARGIN) + bestSizeSpin.x; if ( width < w2 ) width = w2; } @@ -714,20 +716,20 @@ void wxGenericCalendarCtrl::DoMoveWindow(int x, int y, int width, int height) if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && m_staticMonth ) { wxSize sizeChoice = m_choiceMonth->GetEffectiveMinSize(); - wxSize sizeStatic = m_staticMonth->GetSize(); - wxSize sizeSpin = m_spinYear->GetSize(); + wxSize sizeStatic = m_staticMonth->GetEffectiveMinSize(); + wxSize sizeSpin = m_spinYear->GetEffectiveMinSize(); int maxHeight = wxMax(sizeSpin.y, sizeChoice.y); int dy = (maxHeight - sizeStatic.y) / 2; - m_choiceMonth->Move(x, y + (maxHeight - sizeChoice.y)/2); + m_choiceMonth->SetSize(x, y + (maxHeight - sizeChoice.y)/2, sizeChoice.x, -1); m_staticMonth->SetSize(x, y + dy, sizeChoice.x, -1); - int xDiff = sizeChoice.x + HORZ_MARGIN; + int xDiff = sizeChoice.x + FromDIP(HORZ_MARGIN); m_spinYear->SetSize(x + xDiff, y + (maxHeight - sizeSpin.y)/2, width - xDiff, maxHeight); m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y); - yDiff = maxHeight + VERT_MARGIN; + yDiff = maxHeight + FromDIP(VERT_MARGIN); } else // no controls on the top { @@ -774,11 +776,11 @@ void wxGenericCalendarCtrl::RecalcGeometry() } m_calendarWeekWidth = HasFlag( wxCAL_SHOW_WEEK_NUMBERS ) - ? dc.GetTextExtent( wxString::Format( wxT( "%d" ), 42 )).GetWidth() + 4 : 0; + ? dc.GetTextExtent( wxString::Format( wxT( "%d" ), 42 )).GetWidth() + FromDIP(WEEK_MARGIN) : 0; // leave some margins - m_widthCol += 2; - m_heightRow += 2; + m_widthCol += FromDIP(DAY_MARGIN); + m_heightRow += FromDIP(DAY_MARGIN); m_rowOffset = HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ? m_heightRow : 0; // conditional in relation to style } @@ -848,10 +850,12 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) if ( AllowMonthChange() ) { wxDateTime ldpm = wxDateTime(1,m_date.GetMonth(), m_date.GetYear()) - wxDateSpan::Day(); // last day prev month + int rectx = FromDIP(4); + int recty = FromDIP(3); // Check if range permits change if ( IsDateInRange(ldpm) && ( ( ldpm.GetYear() == m_date.GetYear() ) ? true : AllowYearChange() ) ) { - m_leftArrowRect = wxRect(larrowx - 3, arrowy - 3, (arrowheight / 2) + 8, (arrowheight + 6)); + m_leftArrowRect = wxRect(larrowx - rectx + 1, arrowy - recty, (arrowheight / 2) + 2 * rectx, (arrowheight + 2 * recty)); dc.SetBrush(*wxBLACK_BRUSH); dc.SetPen(*wxBLACK_PEN); dc.DrawPolygon(3, leftarrow, larrowx , arrowy, wxWINDING_RULE); @@ -861,7 +865,7 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) wxDateTime fdnm = wxDateTime(1,m_date.GetMonth(), m_date.GetYear()) + wxDateSpan::Month(); // first day next month if ( IsDateInRange(fdnm) && ( ( fdnm.GetYear() == m_date.GetYear() ) ? true : AllowYearChange() ) ) { - m_rightArrowRect = wxRect(rarrowx - 4, arrowy - 3, (arrowheight / 2) + 8, (arrowheight + 6)); + m_rightArrowRect = wxRect(rarrowx - rectx, arrowy - recty, (arrowheight / 2) + 2 * rectx, (arrowheight + 2 * recty)); dc.SetBrush(*wxBLACK_BRUSH); dc.SetPen(*wxBLACK_PEN); dc.DrawPolygon(3, rightarrow, rarrowx , arrowy, wxWINDING_RULE); @@ -896,7 +900,9 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) n = wd; wxCoord dayw, dayh; dc.GetTextExtent(m_weekdays[n], &dayw, &dayh); - dc.DrawText(m_weekdays[n], x0 + (wd*m_widthCol) + ((m_widthCol- dayw) / 2), y); // center the day-name + int dayx = x0 + (wd * m_widthCol) + ((m_widthCol - dayw) / 2); + int dayy = y + m_heightRow / 2 - dayh / 2; + dc.DrawText(m_weekdays[n], dayx, dayy); // center the day-name } } @@ -917,7 +923,11 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) { const int weekNr = date.GetWeekOfYear(); wxString text = wxString::Format( wxT( "%d" ), weekNr ); - dc.DrawText( text, m_calendarWeekWidth - dc.GetTextExtent( text ).GetWidth() - 2, y + m_heightRow * i ); + wxCoord weekw, weekh; + dc.GetTextExtent(text, &weekw, &weekh); + int weekx = m_calendarWeekWidth - weekw - (FromDIP(WEEK_MARGIN) / 2); + int weeky = (i * m_heightRow) + (y + m_heightRow / 2 - weekh / 2); + dc.DrawText(text, weekx, weeky); date += wxDateSpan::Week(); } } @@ -955,8 +965,8 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) // don't use wxDate::Format() which prepends 0s unsigned int day = date.GetDay(); wxString dayStr = wxString::Format(wxT("%u"), day); - wxCoord width; - dc.GetTextExtent(dayStr, &width, NULL); + wxCoord width, height; + dc.GetTextExtent(dayStr, &width, &height); bool changedColours = false, changedFont = false; @@ -1018,7 +1028,7 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) } wxCoord x = wd*m_widthCol + (m_widthCol - width) / 2 + x0; - dc.DrawText(dayStr, x, y + 1); + dc.DrawText(dayStr, x, y + m_heightRow / 2 - height / 2); if ( !isSel && attr && attr->HasBorder() ) { @@ -1036,16 +1046,17 @@ void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) dc.SetPen(pen); dc.SetBrush(*wxTRANSPARENT_BRUSH); + int shapeSize = wxMin(m_widthCol, m_heightRow) - 1; + wxRect shapeRect(x + width / 2 - shapeSize / 2, y, shapeSize, shapeSize); + switch ( attr->GetBorder() ) { case wxCAL_BORDER_SQUARE: - dc.DrawRectangle(x - 2, y, - width + 4, m_heightRow); + dc.DrawRectangle(shapeRect); break; case wxCAL_BORDER_ROUND: - dc.DrawEllipse(x - 2, y, - width + 4, m_heightRow); + dc.DrawEllipse(shapeRect); break; default: @@ -1116,15 +1127,6 @@ void wxGenericCalendarCtrl::RefreshDate(const wxDateTime& date) rect.width = 7*m_widthCol; rect.height = m_heightRow; -#ifdef __WXMSW__ - // VZ: for some reason, the selected date seems to occupy more space under - // MSW - this is probably some bug in the font size calculations, but I - // don't know where exactly. This fix is ugly and leads to more - // refreshes than really needed, but without it the selected days - // leaves even more ugly underscores on screen. - rect.Inflate(0, 1); -#endif // MSW - #if DEBUG_PAINT wxLogDebug("*** refreshing week %d at (%d, %d)-(%d, %d)\n", GetWeek(date), From 84f27aa1b6e969d316c0ec354ea78003cb848fde Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Wed, 24 Sep 2025 15:02:09 +0300 Subject: [PATCH 220/416] Silence warning about non-virtual dtor on VC++ <=2017 Explicitly defining a destructor in wxMSWOwnerDrawnButtonBase causes precisely the kind of compiler warnings (C4265) that the definition was meant to suppress on GCC. C4265 is not enabled by default in VC++, but if you have it enabled, you'll get plenty of pointless warnings through anything that #includes wx/msw/ownerdrawnbutton.h. This is also the only spot in wx headers that triggers C4265. Closes #25828. --- include/wx/msw/ownerdrawnbutton.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/wx/msw/ownerdrawnbutton.h b/include/wx/msw/ownerdrawnbutton.h index 054076e67553..3f2946141cca 100644 --- a/include/wx/msw/ownerdrawnbutton.h +++ b/include/wx/msw/ownerdrawnbutton.h @@ -10,6 +10,15 @@ #ifndef _WX_MSW_OWNERDRAWNBUTTON_H_ #define _WX_MSW_OWNERDRAWNBUTTON_H_ +// With MSVC 2017 and earlier, explicitly defining the destructor below +// _causes_ exactly the kind of compiler warnings (C4265) the definition +// was meant to avoid (on GCC). With later versions of MSVC, there is no +// warning either way. We'll disable C4265 temporarily here. +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4265) // non-virtual destructor with virtual functions +#endif + // ---------------------------------------------------------------------------- // wxMSWOwnerDrawnButton: base class for any kind of Windows buttons // ---------------------------------------------------------------------------- @@ -129,4 +138,8 @@ class wxMSWOwnerDrawnButton bool IsOwnerDrawn() const { return MSWIsOwnerDrawn(); } }; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #endif // _WX_MSW_OWNERDRAWNBUTTON_H_ From ed76f502c1ef0dc5d58c0eb31092bcc73f664b54 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:40:20 -0400 Subject: [PATCH 221/416] Clarify wxLog::SetActiveTarget() See #25852. (cherry picked from commit 5de9ceb603ab608bbcba563f584b854ac68bcaf8) --- interface/wx/log.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interface/wx/log.h b/interface/wx/log.h index 1d4235e2f0a6..6bac941da340 100644 --- a/interface/wx/log.h +++ b/interface/wx/log.h @@ -306,6 +306,10 @@ class wxLog active log target is set to @NULL a new default log target will be created when logging occurs. + @note The logging system will take ownership of the target you pass + in here. However, it is your responsibility to delete the target you + are replacing (i.e., the return value of this function). + @see SetThreadActiveTarget() */ static wxLog* SetActiveTarget(wxLog* logtarget); From 46cfa36c09c9c81e87adec912ffd0bf580427306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Mon, 6 Oct 2025 11:37:03 +0200 Subject: [PATCH 222/416] Fix nested markup conversion to NSAttributedString wxMarkupToAttrStringBase implementation of markup parsing failed to correctly apply nested attributes: in e.g. foo, only the outer attribute was in effect. This was due to applying - and overwriting - attributes to a span in OnAttrEnd(), which is called first for the inner span, and then for the outer one, overwriting all inner changes. Instead, apply the currently effective attributes to text in OnText(), similarly to how wxMarkupParserRenderOutput does it. As a side effect, this also eliminates the need to apply default font to the entire range first. See #25864. (cherry picked from commit ca05aee2f8134dcae53aecd1a952d2a57f51b223) --- docs/changes.txt | 1 + include/wx/osx/cocoa/private/markuptoattr.h | 84 ++++++--------------- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1dececcc2392..51822c18dd83 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -293,6 +293,7 @@ wxOSX: - Fix memory leak in wxColour::Set() (#25569). - Fix regression with configure build under macOS < 12 (#25675). - Fix build under macOS 26 Tahoe (#25798). +- Fix nested markup attributes handling (Václav Slavík, #25864). 3.2.8.1: (released 2025-05-25) diff --git a/include/wx/osx/cocoa/private/markuptoattr.h b/include/wx/osx/cocoa/private/markuptoattr.h index 2a50707f1bb2..bcd22b7c7597 100644 --- a/include/wx/osx/cocoa/private/markuptoattr.h +++ b/include/wx/osx/cocoa/private/markuptoattr.h @@ -37,12 +37,6 @@ class wxMarkupToAttrStringBase : public wxMarkupParserAttrOutput [m_attrString beginEditing]; - // First thing we do is change the default string font: as mentioned in - // Apple documentation, attributed strings use "Helvetica 12" font by - // default which is different from the system "Lucida Grande" font. So - // we need to explicitly change the font for the entire string. - ApplyFont(font, NSMakeRange(0, [m_attrString length])); - // Now translate the markup tags to corresponding attributes. wxMarkupParser parser(*this); parser.Parse(markup); @@ -56,27 +50,6 @@ class wxMarkupToAttrStringBase : public wxMarkupParserAttrOutput [m_attrString release]; } - void ApplyFont(const wxFont& font, const NSRange& range) - { - [m_attrString addAttribute:NSFontAttributeName - value:font.OSXGetNSFont() - range:range]; - - if ( font.GetStrikethrough() ) - { - [m_attrString addAttribute:NSStrikethroughStyleAttributeName - value:@(NSUnderlineStyleSingle) - range:range]; - } - - if ( font.GetUnderlined() ) - { - [m_attrString addAttribute:NSUnderlineStyleAttributeName - value:@(NSUnderlineStyleSingle) - range:range]; - } - } - // prepare text chunk for display, e.g. strip mnemonics from it virtual wxString PrepareText(const wxString& text) = 0; @@ -89,53 +62,42 @@ class wxMarkupToAttrStringBase : public wxMarkupParserAttrOutput return m_attrString; } - // Implement base class pure virtual methods to process markup tags. virtual void OnText(const wxString& text) { - m_pos += PrepareText(text).length(); - } + const Attr& attr = GetAttr(); - virtual void OnAttrStart(const Attr& WXUNUSED(attr)) - { - // Just remember the starting position of the range, we can't really - // set the attribute until we find the end of it. - m_rangeStarts.push(m_pos); - } + NSMutableDictionary *dict = [NSMutableDictionary dictionary]; - virtual void OnAttrEnd(const Attr& attr) - { - unsigned start = m_rangeStarts.top(); - m_rangeStarts.pop(); - - const NSRange range = NSMakeRange(start, m_pos - start); - - ApplyFont(attr.font, range); - - if ( attr.foreground.IsOk() ) - { - [m_attrString addAttribute:NSForegroundColorAttributeName - value:attr.foreground.OSXGetNSColor() - range:range]; - } - - if ( attr.background.IsOk() ) - { - [m_attrString addAttribute:NSBackgroundColorAttributeName - value:attr.background.OSXGetNSColor() - range:range]; - } + dict[NSFontAttributeName] = attr.effectiveFont.OSXGetNSFont(); + if ( attr.effectiveFont.GetStrikethrough() ) + dict[NSStrikethroughStyleAttributeName] = @(NSUnderlineStyleSingle); + if ( attr.effectiveFont.GetUnderlined() ) + dict[NSUnderlineStyleAttributeName] = @(NSUnderlineStyleSingle); + + if ( attr.effectiveForeground.IsOk() ) + dict[NSForegroundColorAttributeName] = attr.effectiveForeground.OSXGetNSColor(); + + if ( attr.effectiveBackground.IsOk() ) + dict[NSBackgroundColorAttributeName] = attr.effectiveBackground.OSXGetNSColor(); + + const unsigned len = PrepareText(text).length(); + + [m_attrString addAttributes:dict range:NSMakeRange(m_pos, len)]; + + m_pos += len; } + virtual void OnAttrStart(const Attr& WXUNUSED(attr)) {} + + virtual void OnAttrEnd(const Attr& WXUNUSED(attr)) {} + private: // The attributed string we're building. NSMutableAttributedString *m_attrString; // The current position in the output string. unsigned m_pos; - - // The positions of starting ranges. - wxStack m_rangeStarts; }; From f2cff7f490e354b42604b4f774f68e0e33f79b2d Mon Sep 17 00:00:00 2001 From: Federico Perini Date: Mon, 6 Oct 2025 14:32:59 +0200 Subject: [PATCH 223/416] Avoid using already destroyed timers in wxOSX Check that the timer is still valid before using the associated object. This is necessary because already queued timer events are still delivered, even if wxTimer is destroyed. See #25871. (cherry picked from commit f25aec1b38bf208a34e0aabefae5e05ca265ecd3) --- docs/changes.txt | 1 + src/osx/core/timer.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 51822c18dd83..85f4ab80510b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -294,6 +294,7 @@ wxOSX: - Fix regression with configure build under macOS < 12 (#25675). - Fix build under macOS 26 Tahoe (#25798). - Fix nested markup attributes handling (Václav Slavík, #25864). +- Fix possible use of already destroyed wxTimers (Federico Perini, #25871). 3.2.8.1: (released 2025-05-25) diff --git a/src/osx/core/timer.cpp b/src/osx/core/timer.cpp index 900295d2b6ee..3c745adc5101 100644 --- a/src/osx/core/timer.cpp +++ b/src/osx/core/timer.cpp @@ -25,11 +25,17 @@ struct wxOSXTimerInfo CFRunLoopTimerRef m_timerRef; }; -void wxProcessTimer(CFRunLoopTimerRef WXUNUSED(theTimer), void *data) +void wxProcessTimer(CFRunLoopTimerRef theTimer, void *data) { if ( data == NULL ) return; + // CFRunLoop can fire timer callbacks after CFRunLoopTimerInvalidate() + // has been called (e.g., if the callback was already queued when Stop() was called). + // Verify the timer is still valid before proceeding to avoid crashes. + if ( !CFRunLoopTimerIsValid(theTimer) ) + return; + wxOSXTimerImpl* timer = (wxOSXTimerImpl*)data; if ( timer->IsOneShot() ) From addef36a74c857e355226753d2bdc3e2e2a99021 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Wed, 15 Oct 2025 08:28:38 -0400 Subject: [PATCH 224/416] Fix harmless unused parameter warning in wxOSX Add missing WXUNUSED(). See #25880. (cherry picked from commit 33b289bb9ba39c3ce207d172fdf3a6e33fdec16f) --- include/wx/osx/cocoa/private/markuptoattr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/osx/cocoa/private/markuptoattr.h b/include/wx/osx/cocoa/private/markuptoattr.h index bcd22b7c7597..aad9896409b1 100644 --- a/include/wx/osx/cocoa/private/markuptoattr.h +++ b/include/wx/osx/cocoa/private/markuptoattr.h @@ -27,7 +27,7 @@ class wxMarkupToAttrStringBase : public wxMarkupParserAttrOutput m_attrString(NULL) {} - void Parse(const wxFont& font, const wxString& markup) + void Parse(const wxFont& WXUNUSED(font), const wxString& markup) { const wxCFStringRef label(PrepareText(wxMarkupParser::Strip(markup))); m_attrString = [[NSMutableAttributedString alloc] From 978e2a24676be2e2752c1101f4dae5585619f9a5 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Wed, 15 Oct 2025 08:34:07 -0400 Subject: [PATCH 225/416] Check that wxRibbonBar tab icon is valid before using it Using invalid item resulted in an assert, avoid it by checking if it is valid before using it. Also avoid calling GetIcon() and GetLogicalWidth() twice in a row by storing the result in a variable. See #25881. (cherry picked from commit 3f9d34b4a161cb1aeeba04017691a48bb8889d60) Co-authored-by: Vadim Zeitlin --- src/ribbon/art_msw.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ribbon/art_msw.cpp b/src/ribbon/art_msw.cpp index a27195e8932d..ed865926d8bb 100644 --- a/src/ribbon/art_msw.cpp +++ b/src/ribbon/art_msw.cpp @@ -1478,8 +1478,13 @@ void wxRibbonMSWArtProvider::DrawTab( int x = tab.rect.x + 3; if(m_flags & wxRIBBON_BAR_SHOW_PAGE_ICONS) { - x += 3 + tab.page->GetIcon().GetLogicalWidth(); - width -= 3 + tab.page->GetIcon().GetLogicalWidth(); + const wxBitmap& icon = tab.page->GetIcon(); + if (icon.IsOk()) + { + const int iconWidth = icon.GetLogicalWidth(); + x += 3 + iconWidth; + width -= 3 + iconWidth; + } } int y = tab.rect.y + (tab.rect.height - text_height) / 2; From 9de810e2183b056779368722fab0e8b5b87220d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Wed, 15 Oct 2025 19:20:33 +0200 Subject: [PATCH 226/416] Improve padding when using HiDPI in generic wxDataViewCtrl It looked almost non-existent at 200%, so scale it with DPI to improve the control appearance. Closes #25882. (cherry picked from commit 450aa484afd242d1ba9e43fe0d7a00b0b3b273af) --- src/generic/datavgen.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index a28475639930..378cd9b08c50 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -2507,7 +2507,7 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent ) if ( cell->PrepareForItem(model, item, column->GetModelColumn()) ) { wxRect item_rect(x, 0, width, height); - item_rect.Deflate(PADDING_RIGHTLEFT, 0); + item_rect.Deflate(FromDIP(PADDING_RIGHTLEFT), 0); // dc.SetClippingRegion( item_rect ); cell->WXCallRender(item_rect, &dc, 0); @@ -2932,7 +2932,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) } wxRect item_rect = cell_rect; - item_rect.Deflate(PADDING_RIGHTLEFT, 0); + item_rect.Deflate(FromDIP(PADDING_RIGHTLEFT), 0); // account for the tree indent (harmless if we're not indented) item_rect.x += indent; @@ -6156,7 +6156,7 @@ unsigned int wxDataViewCtrl::GetBestColumnWidth(int idx) const int max_width = calculator.GetMaxWidth(); if ( max_width > 0 ) - max_width += 2 * PADDING_RIGHTLEFT; + max_width += 2 * FromDIP(PADDING_RIGHTLEFT); const_cast(this)->m_colsBestWidths[idx].width = max_width; return max_width; From eb8287f22636184b9df786100ac2685ff84c8e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Wed, 15 Oct 2025 19:19:38 +0200 Subject: [PATCH 227/416] Fix compilation with wxUSE_OWNER_DRAWN==0 Add missing wxUSE_OWNER_DRAWN check to wxMenuItem code. Closes #25883. (cherry picked from commit 7d91e361eb6fae730434df8f6f3abc4c17d91650) --- src/msw/menuitem.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp index c60d38550d5d..553d0211a6bc 100644 --- a/src/msw/menuitem.cpp +++ b/src/msw/menuitem.cpp @@ -761,12 +761,14 @@ void wxMenuItem::DoSetBitmap(const wxBitmapBundle& bmpNew, bool bChecked) void wxMenuItem::SetupBitmaps() { +#if wxUSE_OWNER_DRAWN // Owner-drawn items must not return valid bitmaps even if they have them, // this somehow breaks the item measuring logic and the menu may not become // wide enough to accommodate the items text, so just don't do anything at // all for them here. if ( IsOwnerDrawn() ) return; +#endif // wxUSE_OWNER_DRAWN const int itemPos = MSGetMenuItemPos(); if ( itemPos == -1 ) From 1a1a6838d47a5c5e2748cef79772c4f4e3e7a039 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Wed, 15 Oct 2025 21:23:26 +0200 Subject: [PATCH 228/416] Fix selecting individual columns with Ctrl-Click in wxGrid This didn't work correctly because the check if the column was already selected in wxGridColumnOperations::IsLineInSelection() used incorrect parameter order when calling IsInSelection(). See #25884. (cherry picked from commit c7e5734797078dd293cf05ba683bcd7603eebf53) --- docs/changes.txt | 1 + include/wx/generic/private/grid.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 85f4ab80510b..93fcdb81444f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -264,6 +264,7 @@ All (GUI): - Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). - Don't assert in wxGridSizer::Calc{Cols,Rows}() if sizer is empty (#25641). - Fix calling wxDataViewCtrl::Collapse() from event handler (#25631). +- Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). - Improve wxActivityIndicator dots colour contrast with background (#25405). wxGTK: diff --git a/include/wx/generic/private/grid.h b/include/wx/generic/private/grid.h index 9ada5661c0a4..c7aa4e0733fe 100644 --- a/include/wx/generic/private/grid.h +++ b/include/wx/generic/private/grid.h @@ -917,7 +917,7 @@ class wxGridColumnOperations : public wxGridOperations { grid->DeselectCol(line); } virtual bool IsLineInSelection(wxGrid *grid, int line) const wxOVERRIDE - { return grid->m_selection->IsInSelection(line, 0); } + { return grid->m_selection->IsInSelection(0, line); } virtual wxGrid::EventResult SendEvent(wxGrid *grid, wxEventType eventType, int line, const wxMouseEvent& event) const wxOVERRIDE From 04bd8091ae30f269c6e288bc0365f7437d29de67 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Fri, 17 Oct 2025 09:02:01 -0400 Subject: [PATCH 229/416] Fix bitmap position in wxDC::DrawLabel() in high DPI Use bitmap size in logical, not physical, pixels to position it correctly. See #25888. (cherry picked from commit 23083720a9f8d134c6d7b481d567e133d9384621) --- docs/changes.txt | 1 + src/common/dcbase.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 93fcdb81444f..66ff7022bd8f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -263,6 +263,7 @@ All (GUI): - Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451). - Don't assert in wxGridSizer::Calc{Cols,Rows}() if sizer is empty (#25641). +- Fix bitmap position in wxDC::DrawLabel() in high DPI (Blake Madden, #25888). - Fix calling wxDataViewCtrl::Collapse() from event handler (#25631). - Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). - Improve wxActivityIndicator dots colour contrast with background (#25405). diff --git a/src/common/dcbase.cpp b/src/common/dcbase.cpp index a94ecbac0aba..7330f53f9311 100644 --- a/src/common/dcbase.cpp +++ b/src/common/dcbase.cpp @@ -1202,8 +1202,8 @@ void wxDC::DrawLabel(const wxString& text, wxCoord width, height; if ( bitmap.IsOk() ) { - width = widthText + bitmap.GetWidth(); - height = bitmap.GetHeight(); + width = widthText + wxRound(bitmap.GetLogicalWidth()); + height = wxRound(bitmap.GetLogicalHeight()); } else // no bitmap { @@ -1246,7 +1246,7 @@ void wxDC::DrawLabel(const wxString& text, { DrawBitmap(bitmap, x, y, true /* use mask */); - wxCoord offset = bitmap.GetWidth() + 4; + wxCoord offset = wxRound(bitmap.GetLogicalWidth()) + 4; x += offset; width -= offset; From 707cb8ef533a21ddc3268e2ced6d8eada2732766 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 20 Oct 2025 00:58:44 +0200 Subject: [PATCH 230/416] Revert to using FreeBSD 14.2 for Cirrus CI builds FreeBSD 15 seems to support inotify() too now, but our tests still don't pass when using it, probably because it is still implemented in terms of kqueue() internally. Until this can be fixed, use the same FreeBSD 14.2 as in master. --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 55a5571fb3de..c882c7ea9aee 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -11,7 +11,7 @@ task: skip: "changesIncludeOnly('appveyor.yml','CMakeLists.txt','.circleci/**','.github/**','docs/**','interface/**','include/wx/{msw,osx,qt}/**','src/{msw,osx,qt}/**','build/{cmake,msw,osx}/**')" name: Cirrus CI / FreeBSD wxGTK 3 freebsd_instance: - image_family: freebsd-15-0-snap + image_family: freebsd-14-2 before_script: | echo LD_LIBRARY_PATH=`pwd`/lib >> $CIRRUS_ENV From 925aaa5e6225c0048aa30b4775c551b1f2765ee0 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 5 Jun 2025 18:50:05 +0200 Subject: [PATCH 231/416] Fix fatal assert when using box indicators in wxStyledTextCtrl This assert, generated from wxEVT_PAINT handler, happened because SurfaceImpl class unconditionally casts its wxDC to wxMemoryDC before creating wxGraphicsContext from it, but the actual wxDC was a wxPaintDC, created in wxStyledTextCtrl::OnPaint(), and not a wxMemoryDC. Fix this by creating wxBufferedPaintDC, which is a wxMemoryDC, instead. Note that it is not clear how could this work before as OnPaint() created wxPaintDC since always, and SurfaceImpl seems to have always needed wxMemoryDC too. It would also be better to avoid casting wxDC to wxMemoryDC in the first place, as this forces us to use wxMemoryDC even on platforms using double-buffering, i.e. effectively unnecessarily triple-buffering drawing here. (cherry picked from commit e92f57b421938e00f0ad944c281c2e353eee2ab8) See #25917. --- src/stc/stc.cpp | 4 +++- src/stc/stc.cpp.in | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/stc/stc.cpp b/src/stc/stc.cpp index d7eeeb70cff5..e72f71346510 100644 --- a/src/stc/stc.cpp +++ b/src/stc/stc.cpp @@ -5194,7 +5194,9 @@ void wxStyledTextCtrl::StartStyling(int start, int unused) // Event handlers void wxStyledTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) { - wxPaintDC dc(this); + // This _must_ be a wxMemoryDC because the code in SurfaceImpl (see + // PlatWX.cpp) unconditionally casts it to wxMemoryDC currently. + wxBufferedPaintDC dc(this); m_swx->DoPaint(&dc, GetUpdateRegion().GetBox()); } diff --git a/src/stc/stc.cpp.in b/src/stc/stc.cpp.in index 6eb183b18184..47e17402d2e2 100644 --- a/src/stc/stc.cpp.in +++ b/src/stc/stc.cpp.in @@ -721,7 +721,9 @@ void wxStyledTextCtrl::StartStyling(int start, int unused) // Event handlers void wxStyledTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) { - wxPaintDC dc(this); + // This _must_ be a wxMemoryDC because the code in SurfaceImpl (see + // PlatWX.cpp) unconditionally casts it to wxMemoryDC currently. + wxBufferedPaintDC dc(this); m_swx->DoPaint(&dc, GetUpdateRegion().GetBox()); } From 9317d44a20c9ef453e2b32e8469ee9c607ba9dee Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Fri, 24 Oct 2025 19:49:09 +0200 Subject: [PATCH 232/416] Fix handling filters in wxFileDialog in wxOSX As allowedTypes were restricted to the first filter expression, choosing another filter only showed the files conforming to both expressions instead of only applying the selected filter. This commit is best viewed ignoring whitespace-only changes. Fixes wxWidgets/Phoenix/issues#2806 See #25918, #25922. (cherry picked from commit b153aafee9d74ecfaef7b1447b79012e6e60c11a) --- docs/changes.txt | 1 + src/osx/cocoa/filedlg.mm | 44 +++++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 66ff7022bd8f..62f7f9bdf1ca 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -297,6 +297,7 @@ wxOSX: - Fix build under macOS 26 Tahoe (#25798). - Fix nested markup attributes handling (Václav Slavík, #25864). - Fix possible use of already destroyed wxTimers (Federico Perini, #25871). +- Fix handling of multiple filters in wxFileDialog (#25918). 3.2.8.1: (released 2025-05-25) diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 6edc93bb6d88..163beb81cf07 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -261,7 +261,7 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions wxCHECK_RET(parentWindow, "Window modal display requires parent."); - NSArray* types = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; + NSArray* allTypes = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; m_useFileTypeFilter = m_filterExtensions.GetCount() > 1; @@ -287,7 +287,6 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions else if ( m_useFileTypeFilter ) { m_firstFileTypeFilter = GetMatchingFilterExtension(m_fileName); - types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); } if ( HasFlag(wxFD_SAVE) ) @@ -303,7 +302,7 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions // be able to pass this in [sPanel setTreatsFilePackagesAsDirectories:NO]; [sPanel setCanSelectHiddenExtension:YES]; - [sPanel setAllowedFileTypes:types]; + [sPanel setAllowedFileTypes:allTypes]; [sPanel setAllowsOtherFileTypes:NO]; [sPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -317,14 +316,17 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions */ if(m_firstFileTypeFilter > 0) { - DoOnFilterSelected(m_firstFileTypeFilter); + DoOnFilterSelected(m_firstFileTypeFilter); } else { - if ( m_delegate ) - [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [sPanel setAllowedFileTypes: types]; + NSArray* types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); + if ( m_delegate ) + [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; + else + { + [sPanel setAllowedFileTypes: types]; + } } NSWindow* nativeParent = parentWindow->GetWXWindow(); @@ -352,7 +354,7 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions [oPanel setCanChooseFiles:YES]; [oPanel setMessage:cf.AsNSString()]; [oPanel setAllowsMultipleSelection: (HasFlag(wxFD_MULTIPLE) ? YES : NO )]; - [oPanel setAllowedFileTypes:types]; + [oPanel setAllowedFileTypes:allTypes]; [oPanel setAllowsOtherFileTypes:NO]; [oPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -368,8 +370,6 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions { if ( m_delegate ) [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [oPanel setAllowedFileTypes: types]; } NSWindow* nativeParent = parentWindow->GetWXWindow(); @@ -464,7 +464,9 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions [panel validateVisibleColumns]; } else + { [panel setAllowedFileTypes:types]; + } m_currentlySelectedFilterIndex = index; @@ -579,7 +581,7 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions int returnCode = -1; - NSArray* types = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; + NSArray* allTypes = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; m_useFileTypeFilter = m_filterExtensions.GetCount() > 1; @@ -605,7 +607,6 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions else if ( m_useFileTypeFilter ) { m_firstFileTypeFilter = GetMatchingFilterExtension(m_fileName); - types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); } OSXBeginModalDialog(); @@ -623,7 +624,7 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions // be able to pass this in [sPanel setTreatsFilePackagesAsDirectories:NO]; [sPanel setCanSelectHiddenExtension:YES]; - [sPanel setAllowedFileTypes:types]; + [sPanel setAllowedFileTypes:allTypes]; [sPanel setAllowsOtherFileTypes:NO]; [sPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -645,10 +646,11 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions } else { - if ( m_delegate ) - [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [sPanel setAllowedFileTypes: types]; + NSArray* types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); + if ( m_delegate ) + [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; + else + [sPanel setAllowedFileTypes: types]; } if ( !m_dir.IsEmpty() ) @@ -677,7 +679,7 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions [oPanel setCanChooseFiles:YES]; [oPanel setMessage:cf.AsNSString()]; [oPanel setAllowsMultipleSelection: (HasFlag(wxFD_MULTIPLE) ? YES : NO )]; - [oPanel setAllowedFileTypes:types]; + [oPanel setAllowedFileTypes:allTypes]; [oPanel setAllowsOtherFileTypes:NO]; [oPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -693,9 +695,9 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions { if ( m_delegate ) [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [oPanel setAllowedFileTypes: types]; } + + if ( !m_dir.IsEmpty() ) [oPanel setDirectoryURL:[NSURL fileURLWithPath:dir.AsNSString() isDirectory:YES]]; From 2ec9a3c741e62324027585b8556c7d079caf7ee4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 25 Oct 2025 23:45:18 +0200 Subject: [PATCH 233/416] Recalculate wxGenericTreeCtrl line height after font change This ensures that the items always consume as much space as they need vertically and not more. See #16428. (cherry picked from commit 3e937bbd19aaa500fdfd9593cd9cf79d0ef36d15) --- docs/changes.txt | 1 + src/generic/treectlg.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 62f7f9bdf1ca..d0e9d5539ee8 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -267,6 +267,7 @@ All (GUI): - Fix calling wxDataViewCtrl::Collapse() from event handler (#25631). - Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). - Improve wxActivityIndicator dots colour contrast with background (#25405). +- Update wxGenericTreeCtrl item height after changing its font (#16428). wxGTK: diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index d54a81b2fb88..e7bf21b5ef17 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -1336,6 +1336,8 @@ bool wxGenericTreeCtrl::SetFont( const wxFont &font ) m_normalFont = font; m_boldFont = m_normalFont.Bold(); + CalculateLineHeight(); + if (m_anchor) m_anchor->RecursiveResetTextSize(); From 33d52db86759218d71ff10b688a61281c1aa3c4b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 30 Oct 2025 20:36:03 +0100 Subject: [PATCH 234/416] Fix compilation problem due to memset_s() when using PCH Define __STDC_WANT_LIB_EXT1__ in wx/platform.h, which is included before the standard headers even when using PCH, to make sure memset_s() declaration is available in this case too. See #24687. (cherry picked from commit e913e9eba4815d5b2fe8148ed9b8b61e0441160f) --- docs/changes.txt | 1 + include/wx/platform.h | 6 ++++++ src/unix/utilsunx.cpp | 4 ---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index d0e9d5539ee8..b269d576d8bf 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -296,6 +296,7 @@ wxOSX: - Fix memory leak in wxColour::Set() (#25569). - Fix regression with configure build under macOS < 12 (#25675). - Fix build under macOS 26 Tahoe (#25798). +- Fix build problem with memset_s() with PCH enabled (#24687). - Fix nested markup attributes handling (Václav Slavík, #25864). - Fix possible use of already destroyed wxTimers (Federico Perini, #25871). - Fix handling of multiple filters in wxFileDialog (#25918). diff --git a/include/wx/platform.h b/include/wx/platform.h index ceb58249de63..965507029d5d 100644 --- a/include/wx/platform.h +++ b/include/wx/platform.h @@ -286,6 +286,12 @@ # if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) # define wxSIZE_T_IS_ULONG # endif + + /* Define this as soon as possible and before string.h is included to + get memset_s() declaration from it if available. */ +# ifndef __STDC_WANT_LIB_EXT1__ +# define __STDC_WANT_LIB_EXT1__ 1 +# endif # endif /* diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 9e3c38dfd054..50236e80710d 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -18,10 +18,6 @@ // for compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -// Define this as soon as possible and before string.h is included to get -// memset_s() declaration from it if available. -#define __STDC_WANT_LIB_EXT1__ 1 - #include "wx/utils.h" #if !defined(HAVE_SETENV) && defined(HAVE_PUTENV) From 11d7b6fb42b2ffac037f561caef314d6d1a9bd87 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Nov 2025 21:41:47 +0100 Subject: [PATCH 235/416] Use Scintilla as win32 classname for wxStyledTextCtrl This way applications like screen readers know how to interface with it. --- src/stc/stc.cpp | 20 ++++++++++++++++---- src/stc/stc.cpp.in | 20 ++++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/stc/stc.cpp b/src/stc/stc.cpp index e72f71346510..b69f1db4e6bd 100644 --- a/src/stc/stc.cpp +++ b/src/stc/stc.cpp @@ -195,10 +195,22 @@ bool wxStyledTextCtrl::Create(wxWindow *parent, long style, const wxString& name) { - style |= wxVSCROLL | wxHSCROLL; - if (!wxControl::Create(parent, id, pos, size, - style | wxWANTS_CHARS | wxCLIP_CHILDREN, - wxDefaultValidator, name)) + style |= wxVSCROLL | wxHSCROLL | wxWANTS_CHARS | wxCLIP_CHILDREN; + + // We want to use a specific class name for this window in wxMSW to make it + // possible to configure screen readers to handle it specifically. + bool created = +#ifdef __WXMSW__ + CreateUsingMSWClass( + wxApp::GetRegisteredClassName(wxT("Scintilla")), + parent, id, pos, size, style, name + ); +#else + wxControl::Create( + parent, id, pos, size, style, wxDefaultValidator, name + ); +#endif + if ( !created ) return false; #ifdef LINK_LEXERS diff --git a/src/stc/stc.cpp.in b/src/stc/stc.cpp.in index 47e17402d2e2..0ae9ae7a36cf 100644 --- a/src/stc/stc.cpp.in +++ b/src/stc/stc.cpp.in @@ -195,10 +195,22 @@ bool wxStyledTextCtrl::Create(wxWindow *parent, long style, const wxString& name) { - style |= wxVSCROLL | wxHSCROLL; - if (!wxControl::Create(parent, id, pos, size, - style | wxWANTS_CHARS | wxCLIP_CHILDREN, - wxDefaultValidator, name)) + style |= wxVSCROLL | wxHSCROLL | wxWANTS_CHARS | wxCLIP_CHILDREN; + + // We want to use a specific class name for this window in wxMSW to make it + // possible to configure screen readers to handle it specifically. + bool created = +#ifdef __WXMSW__ + CreateUsingMSWClass( + wxApp::GetRegisteredClassName(wxT("Scintilla")), + parent, id, pos, size, style, name + ); +#else + wxControl::Create( + parent, id, pos, size, style, wxDefaultValidator, name + ); +#endif + if ( !created ) return false; #ifdef LINK_LEXERS From a5973f19b79221665bf436cb4d0eddcf8bb22242 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Nov 2025 21:52:19 +0100 Subject: [PATCH 236/416] Forward all win32 messages to the Scintilla control And if they are not processed, continue with the normal message handler. --- src/stc/ScintillaWX.cpp | 24 ++++++++++++++++-------- src/stc/stc.cpp | 12 ++---------- src/stc/stc.cpp.in | 12 ++---------- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp index 98f0c1377844..132be218678e 100644 --- a/src/stc/ScintillaWX.cpp +++ b/src/stc/ScintillaWX.cpp @@ -752,8 +752,15 @@ void ScintillaWX::FineTickerCancel(TickReason reason) { //---------------------------------------------------------------------- -sptr_t ScintillaWX::DefWndProc(unsigned int /*iMessage*/, uptr_t /*wParam*/, sptr_t /*lParam*/) { +sptr_t ScintillaWX::DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { +#ifdef __WXMSW__ + return stc->wxControl::MSWWindowProc(iMessage, wParam, lParam); +#else + wxUnusedVar(iMessage); + wxUnusedVar(wParam); + wxUnusedVar(lParam); return 0; +#endif } sptr_t ScintillaWX::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { @@ -829,13 +836,13 @@ sptr_t ScintillaWX::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) InvalidateStyleRedraw(); } } - break; + return 0; #endif #ifdef SCI_LEXER case SCI_LOADLEXERLIBRARY: LexerManager::GetInstance()->Load((const char*)lParam); - break; + return 0; #endif case SCI_GETDIRECTFUNCTION: return reinterpret_cast(DirectFunction); @@ -848,24 +855,25 @@ sptr_t ScintillaWX::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) case WM_IME_STARTCOMPOSITION: // Always use windowed IME in ScintillaWX for now. Inline IME not implemented yet ImeStartComposition(); - return stc->wxControl::MSWWindowProc(iMessage, wParam, lParam); + break; case WM_IME_ENDCOMPOSITION: ImeEndComposition(); - return stc->wxControl::MSWWindowProc(iMessage, wParam, lParam); + break; case WM_IME_KEYDOWN: case WM_IME_REQUEST: case WM_IME_COMPOSITION: case WM_IME_SETCONTEXT: // These events are forwarded here for future inline IME implementation - return stc->wxControl::MSWWindowProc(iMessage, wParam, lParam); + break; #endif default: - return ScintillaBase::WndProc(iMessage, wParam, lParam); + break; } - return 0; + + return ScintillaBase::WndProc(iMessage, wParam, lParam); } diff --git a/src/stc/stc.cpp b/src/stc/stc.cpp index b69f1db4e6bd..90ccd6e1f261 100644 --- a/src/stc/stc.cpp +++ b/src/stc/stc.cpp @@ -5690,18 +5690,10 @@ WXLRESULT wxStyledTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - switch(nMsg) { - // Forward IME messages to ScintillaWX - case WM_IME_KEYDOWN: - case WM_IME_REQUEST: - case WM_IME_STARTCOMPOSITION: - case WM_IME_ENDCOMPOSITION: - case WM_IME_COMPOSITION: - case WM_IME_SETCONTEXT: + if ( m_swx ) return SendMsg(nMsg, wParam, lParam); - default: + else return wxControl::MSWWindowProc(nMsg, wParam, lParam); - } } #endif diff --git a/src/stc/stc.cpp.in b/src/stc/stc.cpp.in index 0ae9ae7a36cf..dbf2db9684c3 100644 --- a/src/stc/stc.cpp.in +++ b/src/stc/stc.cpp.in @@ -1217,18 +1217,10 @@ WXLRESULT wxStyledTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - switch(nMsg) { - // Forward IME messages to ScintillaWX - case WM_IME_KEYDOWN: - case WM_IME_REQUEST: - case WM_IME_STARTCOMPOSITION: - case WM_IME_ENDCOMPOSITION: - case WM_IME_COMPOSITION: - case WM_IME_SETCONTEXT: + if ( m_swx ) return SendMsg(nMsg, wParam, lParam); - default: + else return wxControl::MSWWindowProc(nMsg, wParam, lParam); - } } #endif From bfdd0df6da91eda26b7b20d2c3555e745bf744d8 Mon Sep 17 00:00:00 2001 From: Kees-van-der-Oord-Nikon Date: Thu, 19 Jun 2025 08:33:06 +0200 Subject: [PATCH 237/416] Add support for HTML 5 charset attribute in wxHtmlParser See #25546. (cherry picked from commit 59ed646ae35e8c5d7db3c57f5456f23d9f01eeb4) --- docs/changes.txt | 1 + src/html/htmlpars.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 6f6aaf96f7ca..27c5df46b008 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -268,6 +268,7 @@ All (GUI): - Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). - Improve wxActivityIndicator dots colour contrast with background (#25405). - Update wxGenericTreeCtrl item height after changing its font (#16428). +- Respect HTML5 charset attribute in wxHTML (Kees van der Oord, #25546). wxGTK: diff --git a/src/html/htmlpars.cpp b/src/html/htmlpars.cpp index c60e15c824f5..483212f8497b 100644 --- a/src/html/htmlpars.cpp +++ b/src/html/htmlpars.cpp @@ -906,6 +906,14 @@ bool wxMetaTagHandler::HandleTag(const wxHtmlTag& tag) return false; } + // HTML 5 charset + if (tag.GetParamAsString(wxT("charset"), m_retval)) + { + m_Parser->StopParsing(); + return false; + } + + // HTML 4 charset wxString httpEquiv, content; if (tag.GetParamAsString(wxT("HTTP-EQUIV"), &httpEquiv) && From e88399300a2371b2bf224e8ae996ce5276b5d983 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Fri, 28 Nov 2025 14:02:06 -0800 Subject: [PATCH 238/416] Fix building/running with GTK < 2.22 gtk_message_dialog_get_message_area() requires GTK 2.22 (cherry picked from commit e1a88aaa14d67c44ed7ed03c4a8025f55499ae1d) --- src/gtk/msgdlg.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gtk/msgdlg.cpp b/src/gtk/msgdlg.cpp index b3b4f1add383..fe65d544bfe4 100644 --- a/src/gtk/msgdlg.cpp +++ b/src/gtk/msgdlg.cpp @@ -188,9 +188,11 @@ void wxMessageDialog::GTKCreateMsgDialog() gtk_window_set_keep_above(GTK_WINDOW(m_widget), TRUE); } +#if GTK_CHECK_VERSION(2,22,0) // A GTKMessageDialog usually displays its labels without selection enabled, // so we enable selection to allow the user to select+copy the text out of // the dialog. + if (wx_is_at_least_gtk2(22)) { GtkMessageDialog * const msgdlg = GTK_MESSAGE_DIALOG(m_widget); @@ -207,6 +209,7 @@ void wxMessageDialog::GTKCreateMsgDialog() } } } +#endif // GTK_CHECK_VERSION(2,22,0) // we need to add buttons manually if we use custom labels or always for // Yes/No/Cancel dialog as GTK+ doesn't support it natively From fe7a6e243cd746b4c45e10487ea1bd7c2c83764f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 12 Jul 2025 17:26:29 +0200 Subject: [PATCH 239/416] Remove wxAuiTabCtrl::OnEraseBackground() This can be replaced by a SetBackgroundStyle() call. No real changes, just a simplification. (cherry picked from commit 066e144826ff61d7c1d08adcb03767ad8a5dcd1f) --- src/aui/auibook.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/aui/auibook.cpp b/src/aui/auibook.cpp index 49a7ad5e407d..e16f542b4f0d 100644 --- a/src/aui/auibook.cpp +++ b/src/aui/auibook.cpp @@ -987,7 +987,6 @@ void wxAuiTabContainer::DoShowHide() wxBEGIN_EVENT_TABLE(wxAuiTabCtrl, wxControl) EVT_PAINT(wxAuiTabCtrl::OnPaint) - EVT_ERASE_BACKGROUND(wxAuiTabCtrl::OnEraseBackground) EVT_SIZE(wxAuiTabCtrl::OnSize) EVT_LEFT_DOWN(wxAuiTabCtrl::OnLeftDown) EVT_LEFT_DCLICK(wxAuiTabCtrl::OnLeftDClick) @@ -1013,6 +1012,7 @@ wxAuiTabCtrl::wxAuiTabCtrl(wxWindow* parent, const wxSize& size, long style) : wxControl(parent, id, pos, size, style) { + SetBackgroundStyle(wxBG_STYLE_PAINT); SetName(wxT("wxAuiTabCtrl")); m_clickPt = wxDefaultPosition; m_isDragging = false; @@ -1046,6 +1046,7 @@ void wxAuiTabCtrl::OnSysColourChanged(wxSysColourChangedEvent &event) void wxAuiTabCtrl::OnEraseBackground(wxEraseEvent& WXUNUSED(evt)) { + // This is not used any more but preseved for ABI compatibility in 3.2. } void wxAuiTabCtrl::OnSize(wxSizeEvent& evt) From d1aa51729fd5ec99423c596085e8f5c9f0829c65 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 21 Nov 2025 15:55:03 +0100 Subject: [PATCH 240/416] Don't reinvent wxAutoBufferedPaintDC in wxAuiTabContainer code Remove code in wxAuiTabContainer::Render() which was basically doing the same thing as wxAutoBufferedPaintDC does except without using shared buffer optimization. This code predates wxAutoBufferedPaintDC appearance, so it made sense originally but it doesn't make sense since a very long time any more. (cherry picked from commit 28eaad75fd5dbc1d0c846880d1bc47b269e8c0ce) --- src/aui/auibook.cpp | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/src/aui/auibook.cpp b/src/aui/auibook.cpp index e16f542b4f0d..a88339ff66f7 100644 --- a/src/aui/auibook.cpp +++ b/src/aui/auibook.cpp @@ -409,11 +409,8 @@ void wxAuiTabContainer::SetTabOffset(size_t offset) // Render() renders the tab catalog to the specified DC // It is a virtual function and can be overridden to // provide custom drawing capabilities -void wxAuiTabContainer::Render(wxDC* raw_dc, wxWindow* wnd) +void wxAuiTabContainer::Render(wxDC* pdc, wxWindow* wnd) { - if (!raw_dc || !raw_dc->IsOk()) - return; - if (m_rect.IsEmpty()) return; @@ -421,23 +418,7 @@ void wxAuiTabContainer::Render(wxDC* raw_dc, wxWindow* wnd) size_t page_count = m_pages.GetCount(); size_t button_count = m_buttons.GetCount(); -#if wxALWAYS_NATIVE_DOUBLE_BUFFER - wxDC& dc = *raw_dc; -#else - wxMemoryDC dc; - - // use the same layout direction as the window DC uses to ensure that the - // text is rendered correctly - dc.SetLayoutDirection(raw_dc->GetLayoutDirection()); - - wxBitmap bmp; - // create off-screen bitmap - bmp.Create(m_rect.GetWidth(), m_rect.GetHeight(),*raw_dc); - dc.SelectObject(bmp); - - if (!dc.IsOk()) - return; -#endif + wxDC& dc = *pdc; // ensure we show as many tabs as possible while (m_tabOffset > 0 && IsTabVisible(page_count-1, m_tabOffset-1, &dc, wnd)) @@ -712,13 +693,6 @@ void wxAuiTabContainer::Render(wxDC* raw_dc, wxWindow* wnd) &tab_button.rect, &x_extent); } - - -#if !wxALWAYS_NATIVE_DOUBLE_BUFFER - raw_dc->Blit(m_rect.x, m_rect.y, - m_rect.GetWidth(), m_rect.GetHeight(), - &dc, 0, 0); -#endif } // Is the tab visible? @@ -1026,7 +1000,7 @@ wxAuiTabCtrl::~wxAuiTabCtrl() void wxAuiTabCtrl::OnPaint(wxPaintEvent&) { - wxPaintDC dc(this); + wxAutoBufferedPaintDC dc(this); dc.SetFont(GetFont()); From 46d47d3bb7d197338d12d59d085b2fbb120c4273 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 21 Nov 2025 16:07:28 +0100 Subject: [PATCH 241/416] Use 24bpp backing store bitmap in wxMSW to speed up drawing on it Avoid the overhead of converting the backing store bitmap to DIB and back when drawing bitmaps with alpha on it in AlphaBlt(), which may be very significant, by using 24bpp bitmap: as it doesn't have alpha, it doesn't need to be adjusted after drawing on it. This is ugly and it would be better to have a better implementation of AlphaBlt(), but it's not clear how to do it, and for now this fixes a real user-visible problem. See #14403, #23841. (cherry picked from commit b732393986e5a4d73c79db5446f3d4b7b138d370) --- docs/changes.txt | 1 + src/common/dcbufcmn.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 27c5df46b008..c1aff17c85be 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -289,6 +289,7 @@ wxMSW - Fix wxStyledTextCtrl support in screen readers (Maarten Bent, #25963). - Fix TAB behaviour in a panel with notebook as only active child (#25443). - Reduce GDI resource usage in wxStaticBitmap (Alex Shvartzkop, #25698). +- Significantly improve performance of drawing bitmaps in wxAUI (#23841). wxOSX: diff --git a/src/common/dcbufcmn.cpp b/src/common/dcbufcmn.cpp index 9b1c1f3159b6..c84a77f96cf3 100644 --- a/src/common/dcbufcmn.cpp +++ b/src/common/dcbufcmn.cpp @@ -83,9 +83,23 @@ class wxSharedDCBufferManager : public wxModule const double scale = dc ? dc->GetContentScaleFactor() : 1.0; wxBitmap* const buffer = new wxBitmap; + // Explicitly request 24bpp bitmap under MSW to avoid slow down when + // drawing bitmaps with alpha channel on 32bpp bitmap: as explained in + // AlphaBlt() implementation in src/msw/dc.cpp, we need to manually + // reset alpha values in this case, which involves converting the + // bitmap to DIB and back and may be very slow. As we don't really care + // about the alpha values in the backing store bitmap (everything is + // already blended when drawing to it), use 24bpp bitmap to avoid this. + const int depth = +#if defined(__WXMSW__) + 24; +#else + wxBITMAP_SCREEN_DEPTH; +#endif + // we must always return a valid bitmap but creating a bitmap of // size 0 would fail, so create a 1*1 bitmap in this case - buffer->CreateWithDIPSize(wxMax(w, 1), wxMax(h, 1), scale); + buffer->CreateWithDIPSize(wxMax(w, 1), wxMax(h, 1), scale, depth); return buffer; } From a06400f9aed173065dd48411a045edb0f78bc86d Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Sun, 23 Nov 2025 16:08:35 +0100 Subject: [PATCH 242/416] Support EGL 1.4 instead of previously required 1.5 Check for the availability of eglCreatePlatformWindowSurfaceEXT() if EGL version is < 1.5 and use it if it's available, as it allows applications using wxGLCanvasEGL to work on some (many?) systems without EGL 1.5 support. See #22325. Co-authored-by: Vadim Zeitlin (cherry picked from commit 602b80d89615a23f31f6c315cb08097fc831f237) --- docs/changes.txt | 1 + include/wx/unix/glegl.h | 9 +++++ src/unix/glegl.cpp | 77 +++++++++++++++++++++++++++++++++++------ 3 files changed, 77 insertions(+), 10 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index c1aff17c85be..aa5422d223d6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -272,6 +272,7 @@ All (GUI): wxGTK: +- Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). - Fix memory leak when using wxOverlay (#24500). diff --git a/include/wx/unix/glegl.h b/include/wx/unix/glegl.h index a3aae69dad7b..4e4f567c5ada 100644 --- a/include/wx/unix/glegl.h +++ b/include/wx/unix/glegl.h @@ -131,6 +131,15 @@ class WXDLLIMPEXP_GL wxGLCanvasEGL : public wxGLCanvasBase wl_egl_window *m_wlEGLWindow; private: + // Call eglCreatePlatformWindowSurface() when using EGL 1.5 or later, + // otherwise try eglCreatePlatformWindowSurfaceEXT() if it's available and + // fall back on eglCreateWindowSurface() otherwise. + // + // This function uses m_display and m_config which must be initialized + // before using it and should be passed either m_xwindow or m_wlEGLWindow + // depending on whether we are using X11 or Wayland. + EGLSurface CallCreatePlatformWindowSurface(void *window) const; + EGLConfig *m_config; EGLDisplay m_display; diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index 3b1e20156354..46719da81ae6 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -55,6 +55,10 @@ WX_DECLARE_HASH_SET(wxGLCanvasEGL*, wxPointerHash, wxPointerEqual, wxGLCanvasSet // And use it to remember which objects already called eglSwapInterval(). wxGLCanvasSet gs_alreadySetSwapInterval; +// EGL version initialized by InitConfig(). +EGLint gs_eglMajor = 0; +EGLint gs_eglMinor = 0; + } // anonymous namespace // ---------------------------------------------------------------------------- @@ -547,6 +551,63 @@ static void gtk_glcanvas_size_callback(GtkWidget *widget, } // extern "C" #endif // GDK_WINDOWING_WAYLAND +EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const +{ + // Type of eglCreatePlatformWindowSurface[EXT](). + typedef EGLSurface (*CreatePlatformWindowSurface)(EGLDisplay display, + EGLConfig config, + void* window, + EGLAttrib const* attrib_list); + + if ( gs_eglMajor > 1 || (gs_eglMajor == 1 && gs_eglMinor >= 5) ) + { + // EGL 1.5 or later: use eglCreatePlatformWindowSurface() which must be + // available. + static CreatePlatformWindowSurface s_eglCreatePlatformWindowSurface = NULL; + if ( !s_eglCreatePlatformWindowSurface ) + { + s_eglCreatePlatformWindowSurface = reinterpret_cast( + eglGetProcAddress("eglCreatePlatformWindowSurface")); + } + + // This check is normally superfluous but avoid crashing just in case + // it isn't. + if ( s_eglCreatePlatformWindowSurface ) + { + return s_eglCreatePlatformWindowSurface(m_display, m_config, + window, + NULL); + } + } + + // Try loading the appropriate EGL function on first use. + static CreatePlatformWindowSurface s_eglCreatePlatformWindowSurfaceEXT = NULL; + static bool s_extFuncInitialized = false; + if ( !s_extFuncInitialized ) + { + s_extFuncInitialized = true; + + if ( IsExtensionSupported("EGL_EXT_platform_base") ) + { + s_eglCreatePlatformWindowSurfaceEXT = reinterpret_cast( + eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT")); + } + } + + if ( s_eglCreatePlatformWindowSurfaceEXT ) + { + return s_eglCreatePlatformWindowSurfaceEXT(m_display, m_config, + window, + NULL); + } + else + { + return eglCreateWindowSurface(m_display, m_config, + reinterpret_cast(window), + NULL); + } +} + bool wxGLCanvasEGL::CreateSurface() { m_display = GetDisplay(); @@ -567,8 +628,7 @@ bool wxGLCanvasEGL::CreateSurface() } m_xwindow = GDK_WINDOW_XID(window); - m_surface = eglCreatePlatformWindowSurface(m_display, *m_config, - &m_xwindow, NULL); + m_surface = CallCreatePlatformWindowSurface(&m_xwindow); } #endif #ifdef GDK_WINDOWING_WAYLAND @@ -599,8 +659,7 @@ bool wxGLCanvasEGL::CreateSurface() wl_surface_set_buffer_scale(m_wlSurface, scale); m_wlEGLWindow = wl_egl_window_create(m_wlSurface, w * scale, h * scale); - m_surface = eglCreatePlatformWindowSurface(m_display, *m_config, - m_wlEGLWindow, NULL); + m_surface = CallCreatePlatformWindowSurface(m_wlEGLWindow); // We need to use "map-event" instead of "map" to ensure that the // widget's underlying Wayland surface has been created. @@ -720,22 +779,20 @@ EGLConfig *wxGLCanvasEGL::InitConfig(const wxGLAttributes& dispAttrs) return NULL; } - EGLint eglMajor = 0; - EGLint eglMinor = 0; - if ( !eglInitialize(dpy, &eglMajor, &eglMinor) ) + if ( !eglInitialize(dpy, &gs_eglMajor, &gs_eglMinor) ) { wxFAIL_MSG("eglInitialize failed"); return NULL; } // The runtime EGL version cannot be known until EGL has been initialized. - if ( eglMajor < 1 || (eglMajor == 1 && eglMinor < 5) ) + if ( gs_eglMajor < 1 || (gs_eglMajor == 1 && gs_eglMinor < 4) ) { // Ignore the return value here, we cannot recover at this point. eglTerminate(dpy); wxLogError(wxString::Format( - "EGL version is %d.%d. EGL version 1.5 or greater is required.", - eglMajor, eglMinor)); + "EGL version is %d.%d. EGL version 1.4 or greater is required.", + gs_eglMajor, gs_eglMinor)); return NULL; } From 3953237f36a8995436c2aba58478cd01d0210781 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Sun, 23 Nov 2025 11:41:22 +0200 Subject: [PATCH 243/416] Do not log bogus system error in wxRenameFile() There is no failed system call at this point, so there is no relevant system error available either. See #25985. (cherry picked from commit b26154516091a8df96e1dad649f564841b38c093) --- src/common/filefn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index b3828e5664b3..972f1050edac 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -1032,7 +1032,7 @@ wxRenameFile(const wxString& file1, const wxString& file2, bool overwrite) if ( !overwrite && wxFileExists(file2) ) { - wxLogSysError + wxLogError ( _("Failed to rename the file '%s' to '%s' because the destination file already exists."), file1.c_str(), file2.c_str() From e2850919b185c953a78d2d204c0cc19b641f335a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 26 Nov 2025 19:16:19 +0100 Subject: [PATCH 244/416] Fix initial scale of wxGLCanvas under EGL/Wayland The scale of the canvas was set up correctly only once we received "size-allocate" signal from GTK, but this doesn't necessarily happen when the window is first shown and after its scale factor is actually known. Ensure that we use the correct scale by catching the notification about its change too. This makes buffer scale factor correct from the very beginning, without having to wait for a resize. See #23733, #25465. (cherry picked from commit 036087097b6de0be2ad00a99b5ee84d9ad2ad152) --- docs/changes.txt | 1 + include/wx/unix/glegl.h | 2 +- src/unix/glegl.cpp | 33 ++++++++++++++++++++++++++------- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index aa5422d223d6..8924651b9ca2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -275,6 +275,7 @@ wxGTK: - Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). +- Fix initial appearance of wxGLCanvas when using high DPI (#23733). - Fix memory leak when using wxOverlay (#24500). - Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). - Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). diff --git a/include/wx/unix/glegl.h b/include/wx/unix/glegl.h index 4e4f567c5ada..09bcb27ce257 100644 --- a/include/wx/unix/glegl.h +++ b/include/wx/unix/glegl.h @@ -154,7 +154,7 @@ class WXDLLIMPEXP_GL wxGLCanvasEGL : public wxGLCanvasBase static EGLConfig *ms_glEGLConfig; friend void wxEGLUpdatePosition(wxGLCanvasEGL* win); - friend void wxEGLSetScale(wxGLCanvasEGL* win, int scale); + friend void wxEGLUpdateGeometry(GtkWidget* widget, wxGLCanvasEGL* win); }; // ---------------------------------------------------------------------------- diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index 46719da81ae6..f3258ad4cc70 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -479,9 +479,17 @@ void wxEGLUpdatePosition(wxGLCanvasEGL* win) wl_subsurface_set_position(win->m_wlSubsurface, x, y); } -// Helper declared as friend in the header and so can access m_wlSurface. -void wxEGLSetScale(wxGLCanvasEGL* win, int scale) +// Helper declared as friend in the header and so can access member variables. +// +// Used when size or scale factor changes +void wxEGLUpdateGeometry(GtkWidget* widget, wxGLCanvasEGL* win) { + int scale = gtk_widget_get_scale_factor(widget); + wl_egl_window_resize(win->m_wlEGLWindow, win->m_width * scale, + win->m_height * scale, 0, 0); + + wxEGLUpdatePosition(win); + wl_surface_set_buffer_scale(win->m_wlSurface, scale); } @@ -540,12 +548,14 @@ static void gtk_glcanvas_size_callback(GtkWidget *widget, GtkAllocation *, wxGLCanvasEGL *win) { - int scale = gtk_widget_get_scale_factor(widget); - wl_egl_window_resize(win->m_wlEGLWindow, win->m_width * scale, - win->m_height * scale, 0, 0); + wxEGLUpdateGeometry(widget, win); +} - wxEGLUpdatePosition(win); - wxEGLSetScale(win, scale); +static void gtk_glcanvas_scale_factor_notify(GtkWidget* widget, + GParamSpec*, + wxGLCanvasEGL *win) +{ + wxEGLUpdateGeometry(widget, win); } } // extern "C" @@ -672,8 +682,17 @@ bool wxGLCanvasEGL::CreateSurface() // Not unmapping the canvas as soon as possible causes problems when reparenting g_signal_connect(m_widget, "unmap", G_CALLBACK(gtk_glcanvas_unmap_callback), this); + + // We connect to "size-allocate" to update the position of the + // subsurface when the toplevel window is moved, which also updates the + // scale as a side effect, but we need to also separately connect to + // "notify::scale-factor" to catch scale changes, which is especially + // important initially, as we don't get a "size-allocate" with the + // correct scale when the window is created. g_signal_connect(m_widget, "size-allocate", G_CALLBACK(gtk_glcanvas_size_callback), this); + g_signal_connect(m_widget, "notify::scale-factor", + G_CALLBACK (gtk_glcanvas_scale_factor_notify), this); } #endif From 2db5b45971748d7830e486147d9e5597de103666 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 29 Nov 2025 15:31:38 +0100 Subject: [PATCH 245/416] Backport CMake changes Including changes from #25910, #25850, #25817, #25796, #25781, #25757, #25756, #25736, #25669, #25666, #25643, #25578, #25526, #25462 and more. Closes #25998. --- .github/workflows/code_checks.yml | 1 + CMakeLists.txt | 15 +- build/cmake/README.md | 2 +- build/cmake/config.cmake | 20 +- build/cmake/functions.cmake | 186 ++++++++++++------ build/cmake/init.cmake | 66 +++++-- build/cmake/install.cmake | 45 ++--- build/cmake/lib/CMakeLists.txt | 9 +- build/cmake/lib/base/CMakeLists.txt | 22 ++- build/cmake/lib/core/CMakeLists.txt | 12 +- build/cmake/lib/expat.cmake | 10 +- build/cmake/lib/gl/CMakeLists.txt | 2 + build/cmake/lib/html/CMakeLists.txt | 2 +- build/cmake/lib/jpeg.cmake | 10 +- build/cmake/lib/media/CMakeLists.txt | 3 + build/cmake/lib/nanosvg.cmake | 10 +- build/cmake/lib/png.cmake | 10 +- build/cmake/lib/regex.cmake | 15 +- build/cmake/lib/tiff.cmake | 11 +- build/cmake/lib/webview/CMakeLists.txt | 37 ++-- build/cmake/lib/zlib.cmake | 14 +- build/cmake/locale/CMakeLists.txt | 21 +- build/cmake/main.cmake | 20 +- build/cmake/modules/FindSDL2.cmake | 2 +- build/cmake/modules/cotire.cmake | 47 +++-- .../cmake/modules/cotire_test/CMakeLists.txt | 9 +- build/cmake/options.cmake | 33 +++- build/cmake/policies.cmake | 5 + build/cmake/samples/CMakeLists.txt | 2 +- build/cmake/toolkit.cmake | 31 ++- build/cmake/utils/CMakeLists.txt | 11 +- build/cmake/wxWidgetsConfig.cmake.in | 89 ++++++--- samples/minimal/CMakeLists.txt | 23 +-- 33 files changed, 547 insertions(+), 248 deletions(-) diff --git a/.github/workflows/code_checks.yml b/.github/workflows/code_checks.yml index 3d9bbf0df1c5..d2e3f3c0bdd2 100644 --- a/.github/workflows/code_checks.yml +++ b/.github/workflows/code_checks.yml @@ -50,6 +50,7 @@ jobs: ':!configure' \ ':!descrip.mms' \ ':!install-sh' \ + ':!build/cmake/modules/cotire.cmake' \ ':!docs/doxygen/doxygen-awesome-css/*' \ ':!samples/widgets/widgets.bkl' \ ':!**/*akefile*' \ diff --git a/CMakeLists.txt b/CMakeLists.txt index d6a4b49bc233..8bec92df372f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,13 +7,16 @@ # Licence: wxWindows licence ############################################################################# -cmake_minimum_required(VERSION 3.0...3.31) +cmake_minimum_required(VERSION 3.5...4.1) if(NOT CMAKE_CONFIGURATION_TYPES) get_property(HAVE_MULTI_CONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) # Set default configuration types for multi-config generators if(HAVE_MULTI_CONFIG_GENERATOR) - set(CMAKE_CONFIGURATION_TYPES "Debug;Release") + string(CONCAT config_hint "Semicolon separated list of supported " + "configuration types, only supports Debug, Release, MinSizeRel, " + "and RelWithDebInfo, anything else will be ignored.") + set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING ${config_hint}) endif() endif() @@ -21,7 +24,9 @@ endif() if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(default_build_type "Debug") message(STATUS "Setting build type to '${default_build_type}' as none was specified.") - set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE) + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel" + ) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release") endif() @@ -85,8 +90,8 @@ string(REGEX MATCH "([0-9]+)" math(EXPR wxSOVERSION_MAJOR "${WX_CURRENT} - ${WX_AGE}") set(wxSOVERSION ${wxSOVERSION_MAJOR}.${WX_AGE}.${WX_REVISION}) -set(wxVERSION ${wxMAJOR_VERSION}.${wxMINOR_VERSION}.${wxRELEASE_NUMBER}) -set(wxCOPYRIGHT "2002-2025 wxWidgets") +set(wxVERSION ${wxMAJOR_VERSION}.${wxMINOR_VERSION}.${wxRELEASE_NUMBER} CACHE INTERNAL "wxWidgets version") +set(wxCOPYRIGHT "2002-2025 wxWidgets" CACHE INTERNAL "wxWidgets copyright") set(wxLANGUAGES C CXX) if(APPLE AND NOT CMAKE_VERSION VERSION_LESS "3.16") diff --git a/build/cmake/README.md b/build/cmake/README.md index 552dba343a41..31dfafe5ba0b 100644 --- a/build/cmake/README.md +++ b/build/cmake/README.md @@ -36,7 +36,7 @@ Files * Includes all other cmake files * options.cmake * All user selectable build options should be defined in this file via - calls to `wx_option()` + calls to `wx_option()` or `wx_option_auto()` * policies.cmake * [CMake policies][2] for wxWidgets should be defined in this file * setup.cmake diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index 35e141129e52..69d3a19c8309 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -100,18 +100,21 @@ function(wx_write_config_inplace) execute_process( COMMAND "${CMAKE_COMMAND}" -E ${COPY_CMD} - "${wxBINARY_DIR}/lib/wx/config/inplace-${TOOLCHAIN_FULLNAME}" + "${wxCONFIG_DIR}/inplace-${TOOLCHAIN_FULLNAME}" "${wxBINARY_DIR}/wx-config" ) endfunction() function(wx_write_config) + wx_get_install_dir(include) + wx_get_install_platform_dir(library) + wx_get_install_platform_dir(runtime) set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix "\${prefix}") - set(includedir "\${prefix}/include") - set(libdir "\${exec_prefix}/lib") - set(bindir "\${exec_prefix}/bin") + set(includedir "\${prefix}/${include_dir}") + set(libdir "\${exec_prefix}/${library_dir}") + set(bindir "\${exec_prefix}/${runtime_dir}") if(wxBUILD_MONOLITHIC) set(MONOLITHIC 1) @@ -143,15 +146,12 @@ function(wx_write_config) set(STD_BASE_LIBS_ALL xml net base) set(STD_GUI_LIBS_ALL xrc html qa adv core) foreach(lib IN ITEMS xrc webview stc richtext ribbon propgrid aui gl media html qa adv core xml net base) - list(FIND wxLIB_TARGETS wx${lib} hasLib) - if (hasLib GREATER -1) + if (wx${lib} IN_LIST wxLIB_TARGETS) wx_string_append(BUILT_WX_LIBS "${lib} ") - list(FIND STD_BASE_LIBS_ALL ${lib} index) - if (index GREATER -1) + if (${lib} IN_LIST STD_BASE_LIBS_ALL) wx_string_append(STD_BASE_LIBS "${lib} ") endif() - list(FIND STD_GUI_LIBS_ALL ${lib} index) - if (index GREATER -1) + if (${lib} IN_LIST STD_GUI_LIBS_ALL) wx_string_append(STD_GUI_LIBS "${lib} ") endif() endif() diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 7ae1cb506055..4b173e7074cb 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -8,24 +8,24 @@ ############################################################################# include(CMakeDependentOption) -include(CMakeParseArguments) # For compatibility with CMake < 3.4 include(ExternalProject) include(CMakePrintHelpers) - -# Use the MSVC/makefile naming convention, or the configure naming convention, -# this is the same check as used in FindwxWidgets. -if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING) - set(WIN32_MSVC_NAMING 1) -else() - set(WIN32_MSVC_NAMING 0) -endif() - +include(GNUInstallDirs) # List of libraries added via wx_add_library() to use for wx-config -# and headers added via wx_append_sources() to use for install. set(wxLIB_TARGETS) +# List of headers added via wx_append_sources() to use for install set(wxINSTALL_HEADERS) - +# List of files not included in the install manifest +set(WX_EXTRA_UNINSTALL_FILES) + +# create one target with all libraries, same as FindwxWidgets +set(CREATE_WX_TARGET OFF) +if(NOT TARGET wxWidgets AND NOT TARGET wxWidgets::wxWidgets) + set(CREATE_WX_TARGET ON) + add_library(wxWidgets INTERFACE) + add_library(wxWidgets::wxWidgets ALIAS wxWidgets) +endif() # This function adds a list of headers to a variable while prepending # include/ to the path @@ -101,20 +101,46 @@ macro(wx_get_flavour flavour prefix) endif() endmacro() -if(WIN32_MSVC_NAMING) - # Generator expression to not create different Debug and Release directories - set(GEN_EXPR_DIR "$<1:/>") - set(wxINSTALL_INCLUDE_DIR "include") -else() - set(GEN_EXPR_DIR "/") - wx_get_flavour(lib_flavour "-") - set(wxINSTALL_INCLUDE_DIR "include/wx-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${lib_flavour}") -endif() +# Get the library/runtime/archive directory +macro(wx_get_install_dir artifact) + string(TOUPPER ${artifact} artifact_upper) + + if("${artifact_upper}" STREQUAL "RUNTIME") + set(${artifact}_dir "${CMAKE_INSTALL_BINDIR}") + elseif("${artifact_upper}" STREQUAL "LIBRARY") + set(${artifact}_dir "${CMAKE_INSTALL_LIBDIR}") + elseif("${artifact_upper}" STREQUAL "ARCHIVE") + set(${artifact}_dir "${CMAKE_INSTALL_LIBDIR}") + elseif("${artifact_upper}" STREQUAL "INCLUDE") + set(${artifact}_dir "${CMAKE_INSTALL_INCLUDEDIR}") + else() + message(FATAL_ERROR "Unknown install artifact: ${artifact}") + endif() + + if(wxBUILD_INSTALL_${artifact_upper}_DIR) + set(${artifact}_dir "${wxBUILD_INSTALL_${artifact_upper}_DIR}") + endif() +endmacro() + +# Get the library/runtime/archive directory including platform specific sub-directory +macro(wx_get_install_platform_dir artifact) + wx_get_install_dir(${artifact}) + if(wxBUILD_INSTALL_PLATFORM_SUBDIR AND wxPLATFORM_LIB_DIR) + wx_string_append(${artifact}_dir "/${wxPLATFORM_LIB_DIR}") + endif() +endmacro() # Set properties common to builtin third party libraries and wx libs function(wx_set_common_target_properties target_name) cmake_parse_arguments(wxCOMMON_TARGET_PROPS "DEFAULT_WARNINGS" "" "" ${ARGN}) + if(WIN32_MSVC_NAMING) + # Generator expression to not create different Debug and Release directories + set(GEN_EXPR_DIR "$<1:/>") + else() + set(GEN_EXPR_DIR "/") + endif() + set_target_properties(${target_name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" ARCHIVE_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" @@ -269,7 +295,7 @@ function(wx_set_target_properties target_name) endif() # For compatibility with MSVS project files and makefile.vc, use arch # suffix for non-x86 (including x86_64) DLLs. - if(MSVC AND wxARCH_SUFFIX) + if(WIN32_MSVC_NAMING AND wxARCH_SUFFIX) # This one already includes the leading underscore, so don't add another one. wx_string_append(dll_suffix "${wxARCH_SUFFIX}") endif() @@ -283,7 +309,7 @@ function(wx_set_target_properties target_name) endif() set(lib_prefix "lib") - if(MSVC OR (WIN32 AND wxBUILD_SHARED)) + if(WIN32_MSVC_NAMING OR (WIN32 AND wxBUILD_SHARED)) set(lib_prefix) elseif (CYGWIN AND wxBUILD_SHARED) set(lib_prefix "cyg") @@ -353,7 +379,7 @@ function(wx_set_target_properties target_name) target_compile_definitions(${target_name} PUBLIC _UNICODE) endif() - if(WIN32 AND MSVC) + if(MSVC) # Suppress deprecation warnings for standard library calls target_compile_definitions(${target_name} PRIVATE _CRT_SECURE_NO_DEPRECATE=1 @@ -363,13 +389,14 @@ function(wx_set_target_properties target_name) ) endif() + wx_get_install_dir(library) file(RELATIVE_PATH wxSETUP_HEADER_REL ${wxOUTPUT_DIR} ${wxSETUP_HEADER_PATH}) target_include_directories(${target_name} BEFORE PUBLIC $ $ - $ + $ $ ) @@ -404,6 +431,10 @@ function(wx_set_target_properties target_name) PUBLIC ${WIN32_LIBRARIES}) endif() + if(wxTOOLKIT_LIBRARY_DIRS AND NOT wxTARGET_IS_BASE) + target_link_directories(${target_name} + PUBLIC ${wxTOOLKIT_LIBRARY_DIRS}) + endif() if(wxTOOLKIT_LIBRARIES AND NOT wxTARGET_IS_BASE) target_link_libraries(${target_name} PUBLIC ${wxTOOLKIT_LIBRARIES}) @@ -446,21 +477,6 @@ function(wx_set_target_properties target_name) wx_set_common_target_properties(${target_name}) endfunction() -macro(wx_get_install_dir artifact default) - string(TOUPPER ${artifact} artifact_upper) - if(wxBUILD_INSTALL_${artifact_upper}_DIR) - set(${artifact}_dir "${wxBUILD_INSTALL_${artifact_upper}_DIR}") - else() - set(${artifact}_dir ${default}) - endif() - if(wxBUILD_INSTALL_PLATFORM_SUBDIR) - if(${artifact}_dir) - wx_string_append(${artifact}_dir ${GEN_EXPR_DIR}) - endif() - wx_string_append(${artifact}_dir "${wxPLATFORM_LIB_DIR}") - endif() -endmacro() - # Add a wxWidgets library # wx_add_library( [IS_BASE;IS_PLUGIN;IS_MONO] ...) @@ -498,20 +514,25 @@ macro(wx_add_library name) add_library(${name} ${wxBUILD_LIB_TYPE} ${src_files}) add_library(wx::${name_short} ALIAS ${name}) + add_library(wxWidgets::${name_short} ALIAS ${name}) + if(CREATE_WX_TARGET) + target_link_libraries(wxWidgets INTERFACE ${name}) + endif() + wx_set_target_properties(${name} ${ARGN}) set_target_properties(${name} PROPERTIES PROJECT_LABEL ${name_short}) - # Setup install - if(MSYS OR CYGWIN) - # configure puts the .dll in the bin directory - set(runtime_default_dir "bin") - else() - set(runtime_default_dir "lib") - endif() + wx_get_install_platform_dir(library) + wx_get_install_platform_dir(archive) + wx_get_install_platform_dir(runtime) - wx_get_install_dir(library "lib") - wx_get_install_dir(archive "lib") - wx_get_install_dir(runtime "${runtime_default_dir}") + if(WIN32_MSVC_NAMING AND NOT wxBUILD_INSTALL_RUNTIME_DIR) + # override the default 'bin' to match MSVC solution + set(runtime_dir "lib") + if(wxBUILD_INSTALL_PLATFORM_SUBDIR AND wxPLATFORM_LIB_DIR) + wx_string_append(runtime_dir "/${wxPLATFORM_LIB_DIR}") + endif() + endif() wx_install(TARGETS ${name} EXPORT wxWidgetsTargets @@ -578,6 +599,17 @@ macro(wx_lib_include_directories name) if(wxBUILD_MONOLITHIC) list(APPEND wxMONO_INCLUDE_DIRS ${ARGN}) set(wxMONO_INCLUDE_DIRS ${wxMONO_INCLUDE_DIRS} PARENT_SCOPE) + else() + target_include_directories(${name} PRIVATE ${ARGN}) + endif() +endmacro() + +# Same as wx_lib_include_directories() but prepends the given directories to +# the include path instead of appending them. +macro(wx_lib_include_directories_before name) + if(wxBUILD_MONOLITHIC) + list(PREPEND wxMONO_INCLUDE_DIRS ${ARGN}) + set(wxMONO_INCLUDE_DIRS ${wxMONO_INCLUDE_DIRS} PARENT_SCOPE) else() target_include_directories(${name} BEFORE PRIVATE ${ARGN}) endif() @@ -607,8 +639,8 @@ macro(wx_add_dependencies name) endif() endmacro() -# Set common properties for a builtin third party library -function(wx_set_builtin_target_properties target_name) +# Set output name for a builtin third party library +macro(wx_set_builtin_target_ouput_name target target_name) set(lib_unicode) if(wxUSE_UNICODE AND target_name STREQUAL "wxregex") set(lib_unicode "u") @@ -627,10 +659,23 @@ function(wx_set_builtin_target_properties target_name) set(lib_version "-${wxMAJOR_VERSION}.${wxMINOR_VERSION}") endif() - set_target_properties(${target_name} PROPERTIES + set(lib_prefix "lib") + if(WIN32_MSVC_NAMING OR (WIN32 AND wxBUILD_SHARED)) + set(lib_prefix) + elseif (CYGWIN AND wxBUILD_SHARED) + set(lib_prefix "cyg") + endif() + + set_target_properties(${target} PROPERTIES OUTPUT_NAME "${target_name}${lib_unicode}${lib_rls}${lib_flavour}${lib_version}" OUTPUT_NAME_DEBUG "${target_name}${lib_unicode}${lib_dbg}${lib_flavour}${lib_version}" + PREFIX "${lib_prefix}" ) +endmacro() + +# Set common properties for a builtin third party library +function(wx_set_builtin_target_properties target_name) + wx_set_builtin_target_ouput_name(${target_name} "${target_name}") if(wxUSE_UNICODE) if(WIN32) @@ -660,7 +705,8 @@ function(wx_set_builtin_target_properties target_name) wx_set_common_target_properties(${target_name} DEFAULT_WARNINGS) if(NOT wxBUILD_SHARED) - wx_install(TARGETS ${name} EXPORT wxWidgetsTargets ARCHIVE DESTINATION "lib${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}") + wx_get_install_platform_dir(archive) + wx_install(TARGETS ${name} EXPORT wxWidgetsTargets ARCHIVE DESTINATION "${archive_dir}") endif() endfunction() @@ -682,6 +728,11 @@ function(wx_add_builtin_library name) add_library(${name} STATIC ${src_list}) add_library(wx::${name_short} ALIAS ${name}) + add_library(wxWidgets::${name_short} ALIAS ${name}) + if(CREATE_WX_TARGET) + target_link_libraries(wxWidgets INTERFACE ${name}) + endif() + wx_set_builtin_target_properties(${name}) set_target_properties(${name} PROPERTIES PROJECT_LABEL ${name_short}) endfunction() @@ -715,14 +766,6 @@ function(wx_add_thirdparty_library var_name lib_name help_str) wx_option(${var_name} ${help_str} ${thirdparty_lib_default} STRINGS builtin sys OFF) - if(${var_name} STREQUAL "sys") - # If the sys library can not be found use builtin - find_package(${lib_name}) - if(NOT ${lib_name}_FOUND) - wx_option_force_value(${var_name} builtin) - endif() - endif() - set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} ${var_name} "${help_str}" PARENT_SCOPE) endfunction() @@ -733,6 +776,7 @@ function(wx_print_thirdparty_library_summary) foreach(entry IN LISTS wxTHIRD_PARTY_LIBRARIES) if(NOT var_name) set(var_name ${entry}) + string(APPEND wxTHIRD_PARTY_SUMMARY_NOW "${var_name}=${${var_name}}-") else() string(LENGTH ${var_name} len) if(len GREATER nameLength) @@ -745,6 +789,15 @@ function(wx_print_thirdparty_library_summary) set(var_name) endif() endforeach() + + # Avoid printing out the message if we're being reconfigured and nothing + # has changed since the previous run, so check if the current summary + # differs from the cached value. + if("${wxTHIRD_PARTY_SUMMARY_NOW}" STREQUAL "${wxTHIRD_PARTY_SUMMARY}") + return() + endif() + set(wxTHIRD_PARTY_SUMMARY ${wxTHIRD_PARTY_SUMMARY_NOW} CACHE INTERNAL "internal summary of 3rd party libraries used by wxWidgets") + math(EXPR nameLength "${nameLength}+1") # account for : set(message "Which libraries should wxWidgets use?\n") @@ -1039,6 +1092,15 @@ function(wx_option name desc) endif() endfunction() +# A convenient wrapper for wx_option() for an option set to AUTO by default but +# also allowing ON and OFF values, with AUTO meaning that the option is set to +# ON if possible (e.g. required support for it is detected) and turned OFF with +# just a warning otherwise, while ON means that an error is given if it can't +# be enabled. +function(wx_option_auto name desc) + wx_option(${name} ${desc} AUTO STRINGS ON OFF AUTO) +endfunction() + # Force a new value for an option created with wx_option function(wx_option_force_value name value) get_property(helpstring CACHE ${name} PROPERTY HELPSTRING) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index af036838ab3b..2ad16342f3b6 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -111,11 +111,11 @@ elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID} endif() endif() -if(wxBUILD_COMPATIBILITY VERSION_LESS 3.0) - set(WXWIN_COMPATIBILITY_2_8 ON) -endif() -if(wxBUILD_COMPATIBILITY VERSION_LESS 3.1) +if(NOT wxBUILD_COMPATIBILITY STREQUAL "NONE") set(WXWIN_COMPATIBILITY_3_0 ON) + if(wxBUILD_COMPATIBILITY VERSION_LESS 3.0) + set(WXWIN_COMPATIBILITY_2_8 ON) + endif() endif() # Build wxBUILD_FILE_ID used for config and setup path @@ -169,14 +169,18 @@ if(WIN32) endif() endif() +wx_get_install_dir(include) if(WIN32_MSVC_NAMING) if(wxBUILD_SHARED) set(lib_suffix "_dll") else() set(lib_suffix "_lib") endif() - set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}") + set(wxINSTALL_INCLUDE_DIR "${include_dir}") +else() + wx_get_flavour(lib_flavour "-") + set(wxINSTALL_INCLUDE_DIR "${include_dir}/wx-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${lib_flavour}") endif() if(wxBUILD_CUSTOM_SETUP_HEADER_PATH) @@ -317,7 +321,14 @@ if(wxUSE_INTL AND NOT wxUSE_FILE) endif() if(wxUSE_THREADS) - find_package(Threads REQUIRED) + if(ANDROID) + # Android has pthreads but FindThreads fails due to missing pthread_cancel + set(CMAKE_USE_PTHREADS_INIT 1) + set(CMAKE_THREAD_LIBS_INIT "") + set(Threads_FOUND TRUE) + else() + find_package(Threads REQUIRED) + endif() endif() if(wxUSE_LIBLZMA) @@ -361,6 +372,11 @@ if(UNIX) # have GNOME libsecret under Unix to be able to compile this class. find_package(LIBSECRET) if(NOT LIBSECRET_FOUND) + if(wxUSE_SECRETSTORE STREQUAL ON) + message(FATAL_ERROR "wxSecretStore support requested, but libsecret was not found: either install it or don't set wxUSE_SECRETSTORE to ON") + endif() + + # wxUSE_SECRETSTORE must be AUTO, continue with a warning. message(WARNING "libsecret not found, wxSecretStore won't be available") wx_option_force_value(wxUSE_SECRETSTORE OFF) endif() @@ -498,18 +514,43 @@ if(wxUSE_GUI) message(WARNING "webkit not found or enabled, wxWebview won't be available") wx_option_force_value(wxUSE_WEBVIEW OFF) endif() - elseif(WXMSW) - if(NOT wxUSE_WEBVIEW_IE AND NOT wxUSE_WEBVIEW_EDGE) - message(WARNING "WebviewIE and WebviewEdge not found or enabled, wxWebview won't be available") - wx_option_force_value(wxUSE_WEBVIEW OFF) - endif() elseif(APPLE) if(NOT wxUSE_WEBVIEW_WEBKIT) message(WARNING "webkit not found or enabled, wxWebview won't be available") wx_option_force_value(wxUSE_WEBVIEW OFF) endif() + else() + set(wxUSE_WEBVIEW_WEBKIT OFF) + endif() + + if(WXMSW AND NOT wxUSE_WEBVIEW_IE AND NOT wxUSE_WEBVIEW_EDGE) + message(WARNING "WebviewIE and WebviewEdge not found or enabled, wxWebview won't be available") + wx_option_force_value(wxUSE_WEBVIEW OFF) + endif() + endif() + + set(wxWebviewInfo "enable wxWebview") + if(wxUSE_WEBVIEW) + if(wxUSE_WEBVIEW_WEBKIT) + list(APPEND webviewBackends "WebKit") + endif() + if(wxUSE_WEBVIEW_WEBKIT2) + list(APPEND webviewBackends "WebKit2") + endif() + if(wxUSE_WEBVIEW_EDGE) + if(wxUSE_WEBVIEW_EDGE_STATIC) + list(APPEND webviewBackends "Edge (static)") + else() + list(APPEND webviewBackends "Edge") + endif() + endif() + if(wxUSE_WEBVIEW_IE) + list(APPEND webviewBackends "IE") endif() + string(REPLACE ";" ", " webviewBackends "${webviewBackends}") + set(wxWebviewInfo "${wxWebviewInfo} with ${webviewBackends}") endif() + set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_WEBVIEW ${wxWebviewInfo}) if(wxUSE_PRIVATE_FONTS AND WXGTK) find_package(FONTCONFIG) @@ -520,7 +561,7 @@ if(wxUSE_GUI) endif() endif() - if(wxUSE_MEDIACTRL AND WXGTK AND NOT APPLE AND NOT WIN32) + if(wxUSE_MEDIACTRL AND WXGTK AND NOT WIN32) find_package(GSTREAMER 1.0 COMPONENTS video) if(NOT GSTREAMER_FOUND) find_package(GSTREAMER 0.10 COMPONENTS interfaces) @@ -545,6 +586,7 @@ if(wxUSE_GUI) find_package(SDL2) if(NOT SDL2_FOUND) find_package(SDL) + mark_as_advanced(SDL_INCLUDE_DIR SDLMAIN_LIBRARY) endif() if(NOT SDL2_FOUND AND NOT SDL_FOUND) message(WARNING "SDL not found, SDL Audio back-end won't be available") diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake index c191577a8adb..4d8d42fd7690 100644 --- a/build/cmake/install.cmake +++ b/build/cmake/install.cmake @@ -36,41 +36,49 @@ if(MSVC) ) endif() +wx_get_install_platform_dir(library) + # setup header and wx-config if(WIN32_MSVC_NAMING) # create both Debug and Release directories, so CMake doesn't complain about # non-existent path when only Release or Debug build has been installed set(lib_unicode "u") install(DIRECTORY - DESTINATION "lib/${wxPLATFORM_LIB_DIR}/${wxBUILD_TOOLKIT}${lib_unicode}") + DESTINATION "${library_dir}/${wxBUILD_TOOLKIT}${lib_unicode}") install(DIRECTORY - DESTINATION "lib/${wxPLATFORM_LIB_DIR}/${wxBUILD_TOOLKIT}${lib_unicode}d") + DESTINATION "${library_dir}/${wxBUILD_TOOLKIT}${lib_unicode}d") install( DIRECTORY "${wxSETUP_HEADER_PATH}" - DESTINATION "lib/${wxPLATFORM_LIB_DIR}") + DESTINATION "${library_dir}") else() install( DIRECTORY "${wxSETUP_HEADER_PATH}" - DESTINATION "lib/wx/include") + DESTINATION "${library_dir}/wx/include" + ) install( FILES "${wxOUTPUT_DIR}/wx/config/${wxBUILD_FILE_ID}" - DESTINATION "lib/wx/config" + DESTINATION "${library_dir}/wx/config" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ ) - install(DIRECTORY DESTINATION "bin") + wx_get_install_platform_dir(runtime) + install(DIRECTORY DESTINATION "${runtime_dir}") install(CODE "execute_process( \ COMMAND ${CMAKE_COMMAND} -E create_symlink \ - \"${CMAKE_INSTALL_PREFIX}/lib/wx/config/${wxBUILD_FILE_ID}\" \ - \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wx-config\" \ + \"${CMAKE_INSTALL_PREFIX}/${library_dir}/wx/config/${wxBUILD_FILE_ID}\" \ + \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config\" \ )" ) + list(APPEND WX_EXTRA_UNINSTALL_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config") endif() -install(EXPORT wxWidgetsTargets NAMESPACE wx:: DESTINATION "lib/cmake/wxWidgets/${wxPLATFORM_LIB_DIR}") +wx_get_install_dir(library) +set(wx_cmake_dir "${library_dir}/cmake/wxWidgets-${wxMAJOR_VERSION}.${wxMINOR_VERSION}") + +install(EXPORT wxWidgetsTargets NAMESPACE wx:: DESTINATION "${wx_cmake_dir}/${wxPLATFORM_LIB_DIR}") # find_package config file include(CMakePackageConfigHelpers) @@ -93,11 +101,11 @@ write_basic_package_version_file( configure_package_config_file( "${wxSOURCE_DIR}/build/cmake/wxWidgetsConfig.cmake.in" "${projectConfig}" - INSTALL_DESTINATION "lib/cmake/wxWidgets" + INSTALL_DESTINATION "${wx_cmake_dir}" ) install( FILES "${projectConfig}" "${versionConfig}" - DESTINATION "lib/cmake/wxWidgets" + DESTINATION "${wx_cmake_dir}" ) # uninstall target @@ -108,21 +116,6 @@ else() endif() if(NOT TARGET ${UNINST_NAME}) - # these symlinks are not included in the install manifest - set(WX_EXTRA_UNINSTALL_FILES) - if(NOT WIN32_MSVC_NAMING) - if(IPHONE) - set(EXE_SUFFIX ".app") - else() - set(EXE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX}) - endif() - - set(WX_EXTRA_UNINSTALL_FILES - "${CMAKE_INSTALL_PREFIX}/bin/wx-config" - "${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX}" - ) - endif() - configure_file( "${wxSOURCE_DIR}/build/cmake/uninstall.cmake.in" "${wxBINARY_DIR}/uninstall.cmake" diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index d7a38c47e248..60d56d55e627 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -39,7 +39,14 @@ endmacro() # Define base libraries set(LIBS base) -add_opt_lib(net wxUSE_SOCKETS) + +# wxNet should be built if either wxUSE_SOCKETS or wxUSE_WEBREQUEST is on. +if(wxUSE_SOCKETS OR wxUSE_WEBREQUEST) + set(wxUSE_NET ON) +else() + set(wxUSE_NET OFF) +endif() +add_opt_lib(net wxUSE_NET) # Define UI libraries if(wxUSE_GUI) diff --git a/build/cmake/lib/base/CMakeLists.txt b/build/cmake/lib/base/CMakeLists.txt index 2966614eecaa..3a45abb0c5e3 100644 --- a/build/cmake/lib/base/CMakeLists.txt +++ b/build/cmake/lib/base/CMakeLists.txt @@ -28,12 +28,15 @@ endif() wx_add_library(wxbase IS_BASE ${BASE_FILES}) +# Note that when using built-in versions of the libraries, their include +# directories must come before the system ones which could be used by some +# other dependency. if(wxUSE_ZLIB) - wx_lib_include_directories(wxbase ${ZLIB_INCLUDE_DIRS}) + wx_lib_include_directories_before(wxbase ${ZLIB_INCLUDE_DIRS}) wx_lib_link_libraries(wxbase PRIVATE ${ZLIB_LIBRARIES}) endif() if(wxUSE_REGEX) - wx_lib_include_directories(wxbase ${REGEX_INCLUDE_DIRS}) + wx_lib_include_directories_before(wxbase ${REGEX_INCLUDE_DIRS}) wx_lib_link_libraries(wxbase PRIVATE ${REGEX_LIBRARIES}) endif() if(wxUSE_LIBLZMA) @@ -51,13 +54,24 @@ endif() if(APPLE) wx_lib_link_libraries(wxbase + PRIVATE + "-framework Security" PUBLIC "-framework CoreFoundation" ) + if(WXOSX_IPHONE) + wx_lib_link_libraries(wxbase + PUBLIC + "-framework UIKit" + ) + else() + wx_lib_link_libraries(wxbase + PUBLIC + "-framework AppKit" + ) + endif() if(WXOSX_COCOA) wx_lib_link_libraries(wxbase - PRIVATE - "-framework Security" PUBLIC "-framework Carbon" "-framework Cocoa" diff --git a/build/cmake/lib/core/CMakeLists.txt b/build/cmake/lib/core/CMakeLists.txt index 7c4683a328ef..b68dbc563071 100644 --- a/build/cmake/lib/core/CMakeLists.txt +++ b/build/cmake/lib/core/CMakeLists.txt @@ -52,9 +52,13 @@ elseif(WXOSX_IPHONE) wx_append_sources(CORE_SRC OSX_IPHONE) elseif(WXQT) wx_append_sources(CORE_SRC QT) - if(WIN32) + if(UNIX) + wx_append_sources(CORE_SRC QT_UNIX) + elseif(WIN32) wx_append_sources(CORE_SRC QT_WIN32) endif() +elseif(WXX11) + wx_append_sources(CORE_SRC X11_LOWLEVEL) endif() wx_add_library(wxcore ${CORE_SRC}) @@ -62,10 +66,12 @@ foreach(lib JPEG PNG TIFF NANOSVG) if(${lib}_LIBRARIES) wx_lib_link_libraries(wxcore PRIVATE ${${lib}_LIBRARIES}) endif() + # When using built-in versions of the libraries, their include directories + # must come before the system ones which could be used by the toolkit. if(${lib}_INCLUDE_DIRS) - wx_lib_include_directories(wxcore ${${lib}_INCLUDE_DIRS}) + wx_lib_include_directories_before(wxcore ${${lib}_INCLUDE_DIRS}) elseif(${lib}_INCLUDE_DIR) - wx_lib_include_directories(wxcore ${${lib}_INCLUDE_DIR}) + wx_lib_include_directories_before(wxcore ${${lib}_INCLUDE_DIR}) endif() endforeach() if(wxUSE_NANOSVG STREQUAL "sys" AND wxUSE_NANOSVG_EXTERNAL_ENABLE_IMPL) diff --git a/build/cmake/lib/expat.cmake b/build/cmake/lib/expat.cmake index 7200dd5dab6c..de7a9d69c223 100644 --- a/build/cmake/lib/expat.cmake +++ b/build/cmake/lib/expat.cmake @@ -7,6 +7,14 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_EXPAT STREQUAL "sys") + find_package(EXPAT) + if(NOT EXPAT_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_EXPAT builtin) + endif() +endif() + if(wxUSE_EXPAT STREQUAL "builtin") # TODO: implement building expat via its CMake file, using # add_subdirectory or ExternalProject_Add @@ -17,6 +25,4 @@ if(wxUSE_EXPAT STREQUAL "builtin") ) set(EXPAT_LIBRARIES wxexpat) set(EXPAT_INCLUDE_DIRS ${wxSOURCE_DIR}/src/expat/expat/lib) -elseif(wxUSE_EXPAT) - find_package(EXPAT REQUIRED) endif() diff --git a/build/cmake/lib/gl/CMakeLists.txt b/build/cmake/lib/gl/CMakeLists.txt index dc49b18345ce..d7541577fe70 100644 --- a/build/cmake/lib/gl/CMakeLists.txt +++ b/build/cmake/lib/gl/CMakeLists.txt @@ -19,6 +19,8 @@ elseif(WXOSX_IPHONE) wx_append_sources(GL_FILES OPENGL_OSX_IPHONE) elseif(WXQT) wx_append_sources(GL_FILES OPENGL_QT) +elseif(WXX11) + wx_append_sources(GL_FILES OPENGL_X11) endif() wx_add_library(wxgl ${GL_FILES}) diff --git a/build/cmake/lib/html/CMakeLists.txt b/build/cmake/lib/html/CMakeLists.txt index 3fd0ebd0413c..7a19d45c89b7 100644 --- a/build/cmake/lib/html/CMakeLists.txt +++ b/build/cmake/lib/html/CMakeLists.txt @@ -9,7 +9,7 @@ wx_append_sources(HTML_FILES HTML_CMN) -if(WIN32 OR wxUSE_LIBMSPACK) +if(WXMSW) wx_append_sources(HTML_FILES HTML_MSW) endif() diff --git a/build/cmake/lib/jpeg.cmake b/build/cmake/lib/jpeg.cmake index 77014944a739..5146788673a5 100644 --- a/build/cmake/lib/jpeg.cmake +++ b/build/cmake/lib/jpeg.cmake @@ -7,6 +7,14 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_LIBJPEG STREQUAL "sys") + find_package(JPEG) + if(NOT JPEG_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_LIBJPEG builtin) + endif() +endif() + if(wxUSE_LIBJPEG STREQUAL "builtin") wx_add_builtin_library(wxjpeg src/jpeg/jaricom.c @@ -62,6 +70,4 @@ if(wxUSE_LIBJPEG STREQUAL "builtin") ) set(JPEG_LIBRARIES wxjpeg) set(JPEG_INCLUDE_DIR ${wxSOURCE_DIR}/src/jpeg) -elseif(wxUSE_LIBJPEG) - find_package(JPEG REQUIRED) endif() diff --git a/build/cmake/lib/media/CMakeLists.txt b/build/cmake/lib/media/CMakeLists.txt index 0c5e59184afa..9941e5d5cd46 100644 --- a/build/cmake/lib/media/CMakeLists.txt +++ b/build/cmake/lib/media/CMakeLists.txt @@ -17,8 +17,11 @@ elseif(WXOSX_IPHONE) wx_append_sources(MEDIA_FILES MEDIA_OSX_IPHONE) elseif(WXGTK) wx_append_sources(MEDIA_FILES MEDIA_UNIX) + wx_append_sources(MEDIA_FILES MEDIA_GTK) elseif(WXQT) wx_append_sources(MEDIA_FILES MEDIA_QT) +elseif(WXX11) + wx_append_sources(MEDIA_FILES MEDIA_UNIX) endif() wx_add_library(wxmedia ${MEDIA_FILES}) diff --git a/build/cmake/lib/nanosvg.cmake b/build/cmake/lib/nanosvg.cmake index 401bf48fcf15..2135799a3ed7 100644 --- a/build/cmake/lib/nanosvg.cmake +++ b/build/cmake/lib/nanosvg.cmake @@ -7,6 +7,14 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_NANOSVG STREQUAL "sys") + find_package(NanoSVG) + if(NOT NanoSVG_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_NANOSVG builtin) + endif() +endif() + if(wxUSE_NANOSVG STREQUAL "builtin") set(wxUSE_NANOSVG_EXTERNAL 0 PARENT_SCOPE) elseif(wxUSE_NANOSVG) @@ -16,8 +24,6 @@ elseif(wxUSE_NANOSVG) set(NANOSVG_INCLUDE_DIRS ) set(wxUSE_NANOSVG_EXTERNAL_ENABLE_IMPL TRUE) - find_package(NanoSVG REQUIRED) - foreach(TARGETNAME NanoSVG::nanosvg NanoSVG::nanosvgrast unofficial::nanosvg) if(NOT TARGET ${TARGETNAME}) continue() diff --git a/build/cmake/lib/png.cmake b/build/cmake/lib/png.cmake index 13ddab58e06b..8f64bf4a2e3d 100644 --- a/build/cmake/lib/png.cmake +++ b/build/cmake/lib/png.cmake @@ -7,6 +7,14 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_LIBPNG STREQUAL "sys") + find_package(PNG) + if(NOT PNG_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_LIBPNG builtin) + endif() +endif() + if(wxUSE_LIBPNG STREQUAL "builtin") # TODO: implement building libpng via its CMake file, using # add_subdirectory or ExternalProject_Add @@ -53,6 +61,4 @@ if(wxUSE_LIBPNG STREQUAL "builtin") target_link_libraries(wxpng PRIVATE ${ZLIB_LIBRARIES}) set(PNG_LIBRARIES wxpng) set(PNG_INCLUDE_DIRS ${wxSOURCE_DIR}/src/png) -elseif(wxUSE_LIBPNG) - find_package(PNG REQUIRED) endif() diff --git a/build/cmake/lib/regex.cmake b/build/cmake/lib/regex.cmake index 41eadda877cb..136b5499a54c 100644 --- a/build/cmake/lib/regex.cmake +++ b/build/cmake/lib/regex.cmake @@ -7,6 +7,17 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_REGEX STREQUAL "sys") + find_package(PCRE2) + if(NOT PCRE2_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_REGEX builtin) + else() + set(REGEX_LIBRARIES ${PCRE2_LIBRARIES}) + set(REGEX_INCLUDE_DIRS ${PCRE2_INCLUDE_DIRS}) + endif() +endif() + if(wxUSE_REGEX STREQUAL "builtin") # TODO: implement building PCRE2 via its CMake file, using # add_subdirectory or ExternalProject_Add @@ -43,8 +54,4 @@ if(wxUSE_REGEX STREQUAL "builtin") set(REGEX_INCLUDE_DIRS ${wxSOURCE_DIR}/3rdparty/pcre/src/wx) target_compile_definitions(wxregex PRIVATE __WX__ HAVE_CONFIG_H) target_include_directories(wxregex PRIVATE ${wxSETUP_HEADER_PATH} ${wxSOURCE_DIR}/include ${REGEX_INCLUDE_DIRS}) -elseif(wxUSE_REGEX) - find_package(PCRE2 REQUIRED) - set(REGEX_LIBRARIES ${PCRE2_LIBRARIES}) - set(REGEX_INCLUDE_DIRS ${PCRE2_INCLUDE_DIRS}) endif() diff --git a/build/cmake/lib/tiff.cmake b/build/cmake/lib/tiff.cmake index f77e5283de33..8ef1eb966f94 100644 --- a/build/cmake/lib/tiff.cmake +++ b/build/cmake/lib/tiff.cmake @@ -7,6 +7,15 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_LIBTIFF STREQUAL "sys") + find_package(TIFF) + mark_as_advanced(Tiff_DIR) + if(NOT TIFF_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_LIBTIFF builtin) + endif() +endif() + if(wxUSE_LIBTIFF STREQUAL "builtin") # TODO: implement building libtiff via its CMake file, using # add_subdirectory or ExternalProject_Add @@ -74,6 +83,4 @@ if(wxUSE_LIBTIFF STREQUAL "builtin") target_link_libraries(wxtiff PRIVATE ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES}) set(TIFF_LIBRARIES wxtiff) set(TIFF_INCLUDE_DIRS ${wxSOURCE_DIR}/src/tiff/libtiff) -elseif(wxUSE_LIBTIFF) - find_package(TIFF REQUIRED) endif() diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index 1d6972507b1b..97c1b51148b0 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -7,17 +7,20 @@ # Licence: wxWindows licence ############################################################################# -function(wx_webview_copy_webview2_loader target) - if(NOT WXMSW OR NOT wxUSE_WEBVIEW_EDGE OR NOT TARGET ${target}) - return() - endif() - +macro(wx_set_webview2_arch) if(wxPLATFORM_ARCH) set(WEBVIEW2_ARCH ${wxPLATFORM_ARCH}) else() set(WEBVIEW2_ARCH x86) endif() +endmacro() +function(wx_webview_copy_webview2_loader target) + if(NOT WXMSW OR NOT wxUSE_WEBVIEW_EDGE OR NOT TARGET ${target}) + return() + endif() + + wx_set_webview2_arch() add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${WEBVIEW2_PACKAGE_DIR}/build/native/${WEBVIEW2_ARCH}/WebView2Loader.dll" @@ -26,7 +29,6 @@ endfunction() wx_append_sources(WEBVIEW_FILES WEBVIEW_CMN) - if(WXMSW) wx_append_sources(WEBVIEW_FILES WEBVIEW_MSW) elseif(WXGTK) @@ -42,9 +44,12 @@ if(APPLE) elseif(WXMSW) if(wxUSE_WEBVIEW_EDGE) # Update the following variables if updating WebView2 SDK - set(WEBVIEW2_VERSION "1.0.705.50") + set(WEBVIEW2_VERSION "1.0.3485.44") set(WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION}") - set(WEBVIEW2_SHA256 "6a34bb553e18cfac7297b4031f3eac2558e439f8d16a45945c22945ac404105d") + # When updating the above version of WebView2, download the nupkg from the above URL. + # Then, from a PowerShell session, call Get-FileHash on the downloaded nupkg file to get its SHA256 + # to update here. + set(WEBVIEW2_SHA256 "BC09150B179246AC90189649B13BE8E6B11B3AC200E817E18DF106E1F3CF489E") set(WEBVIEW2_DEFAULT_PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/packages/Microsoft.Web.WebView2.${WEBVIEW2_VERSION}") @@ -64,7 +69,14 @@ elseif(WXMSW) file(DOWNLOAD ${WEBVIEW2_URL} ${CMAKE_CURRENT_BINARY_DIR}/webview2.nuget - EXPECTED_HASH SHA256=${WEBVIEW2_SHA256}) + EXPECTED_HASH SHA256=${WEBVIEW2_SHA256} + STATUS DOWNLOAD_RESULT) + # Check that the download was successful. + list(GET DOWNLOAD_RESULT 0 DOWNLOAD_RESULT_NUM) + if(NOT ${DOWNLOAD_RESULT_NUM} EQUAL 0) + list(GET DOWNLOAD_RESULT 1 DOWNLOAD_RESULT_STR) + message(FATAL_ERROR "Error ${DOWNLOAD_RESULT_NUM} downloading WebView2 SDK: ${DOWNLOAD_RESULT_STR}.") + endif() file(MAKE_DIRECTORY ${WEBVIEW2_PACKAGE_DIR}) execute_process(COMMAND "${CMAKE_COMMAND}" -E tar x "${CMAKE_CURRENT_BINARY_DIR}/webview2.nuget" @@ -82,8 +94,9 @@ elseif(WXMSW) endif() if (wxUSE_WEBVIEW_EDGE_STATIC) + wx_set_webview2_arch() wx_lib_link_directories(wxwebview PUBLIC - $ + $ ) else() wx_webview_copy_webview2_loader(wxwebview) @@ -146,7 +159,9 @@ if(WXGTK AND wxUSE_WEBVIEW_WEBKIT2) ${WEBKIT2_LIBRARIES} ) - wx_install(TARGETS wxwebkit2_ext LIBRARY DESTINATION "lib/wx/${WX_WEB_EXT_VERSION}/web-extensions") + wx_get_install_platform_dir(library) + + wx_install(TARGETS wxwebkit2_ext LIBRARY DESTINATION "${library_dir}/wx/${WX_WEB_EXT_VERSION}/web-extensions") wx_add_dependencies(wxwebview wxwebkit2_ext) endif() diff --git a/build/cmake/lib/zlib.cmake b/build/cmake/lib/zlib.cmake index 8814adbf28a5..b3c9f552db43 100644 --- a/build/cmake/lib/zlib.cmake +++ b/build/cmake/lib/zlib.cmake @@ -7,6 +7,14 @@ # Licence: wxWindows licence ############################################################################# +if(wxUSE_ZLIB STREQUAL "sys") + find_package(ZLIB) + if(NOT ZLIB_FOUND) + # If the sys library can not be found use builtin + wx_option_force_value(wxUSE_ZLIB builtin) + endif() +endif() + if(wxUSE_ZLIB STREQUAL "builtin") # TODO: implement building zlib via its CMake file, using # add_subdirectory or ExternalProject_Add @@ -27,17 +35,17 @@ if(wxUSE_ZLIB STREQUAL "builtin") src/zlib/uncompr.c src/zlib/zutil.c ) - if(WIN32) + if(MSVC) # Define this to get rid of many warnings about using open(), # read() and other POSIX functions in zlib code. This is much # more convenient than having to modify it to avoid them. target_compile_definitions(wxzlib PRIVATE _CRT_NONSTDC_NO_WARNINGS) endif() + # Tell our modified zconf.h to include wx/setup.h. + target_compile_definitions(wxzlib PRIVATE wxHAVE_SETUP_H=1) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") target_compile_options(wxzlib PRIVATE -Wno-deprecated-non-prototype) endif() set(ZLIB_LIBRARIES wxzlib) set(ZLIB_INCLUDE_DIRS ${wxSOURCE_DIR}/src/zlib) -elseif(wxUSE_ZLIB) - find_package(ZLIB REQUIRED) endif() diff --git a/build/cmake/locale/CMakeLists.txt b/build/cmake/locale/CMakeLists.txt index 1bac4c2fb3d1..0d14533c6ff0 100644 --- a/build/cmake/locale/CMakeLists.txt +++ b/build/cmake/locale/CMakeLists.txt @@ -1,13 +1,20 @@ -if(wxBUILD_LOCALES STREQUAL "AUTO") - find_package(Gettext QUIET) -elseif(wxBUILD_LOCALES) - find_package(Gettext REQUIRED) +if(wxBUILD_LOCALES) + if(wxBUILD_LOCALES STREQUAL "ON") + find_package(Gettext) + else() # wxBUILD_LOCALES is AUTO, don't give any messages if Gettext is not available + find_package(Gettext QUIET) + endif() + if(NOT GETTEXT_FOUND) + if(wxBUILD_LOCALES STREQUAL "ON") + message(FATAL_ERROR "Translations can't be built without gettext: either install it or don't set wxBUILD_LOCALES to ON") + endif() + wx_option_force_value(wxBUILD_LOCALES OFF) + endif() endif() -mark_as_advanced(GETTEXT_MSGMERGE_EXECUTABLE) -mark_as_advanced(GETTEXT_MSGFMT_EXECUTABLE) +mark_as_advanced(GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE) -if(NOT GETTEXT_FOUND OR wxBUILD_LOCALES STREQUAL "OFF") +if(NOT wxBUILD_LOCALES) return() endif() diff --git a/build/cmake/main.cmake b/build/cmake/main.cmake index b4958e02d43b..85dd228802e7 100644 --- a/build/cmake/main.cmake +++ b/build/cmake/main.cmake @@ -47,9 +47,7 @@ endif() if(WIN32_MSVC_NAMING) include(build/cmake/build_cfg.cmake) -endif() - -if(NOT MSVC) +else() # Write wx-config include(build/cmake/config.cmake) endif() @@ -80,6 +78,20 @@ endif() # Print configuration summary wx_print_thirdparty_library_summary() +# Avoid printing out the message if we're being reconfigured and nothing has +# changed since the previous run, so check if the current summary differs from +# the cached value. +set(wxSUMMARY_NOW + "${CMAKE_SYSTEM_NAME}-${wxVERSION}-${wxREQUIRED_OS_DESC}-" + "${wxBUILD_TOOLKIT}-${wxTOOLKIT_VERSION}-${wxTOOLKIT_EXTRA}-" + "${wxBUILD_MONOLITHIC}-${wxBUILD_SHARED}-${wxBUILD_COMPATIBILITY}-" +) +if("${wxSUMMARY_NOW}" STREQUAL "${wxSUMMARY}") + return() +endif() + +set(wxSUMMARY ${wxSUMMARY_NOW} CACHE INTERNAL "internal summary of wxWidgets build options") + if(wxTOOLKIT_EXTRA) string(REPLACE ";" ", " wxTOOLKIT_DESC "${wxTOOLKIT_EXTRA}") set(wxTOOLKIT_DESC "with support for: ${wxTOOLKIT_DESC}") @@ -91,5 +103,5 @@ message(STATUS "Configured wxWidgets ${wxVERSION} for ${CMAKE_SYSTEM_NAME} Should wxWidgets be compiled into single library? ${wxBUILD_MONOLITHIC} Should wxWidgets be linked as a shared library? ${wxBUILD_SHARED} Should wxWidgets support Unicode? ${wxUSE_UNICODE} - What wxWidgets compatibility level should be used? ${wxBUILD_COMPATIBILITY}" + Which wxWidgets API compatibility should be used? ${wxBUILD_COMPATIBILITY}" ) diff --git a/build/cmake/modules/FindSDL2.cmake b/build/cmake/modules/FindSDL2.cmake index 3878427d8c79..79c42b0d7d5d 100644 --- a/build/cmake/modules/FindSDL2.cmake +++ b/build/cmake/modules/FindSDL2.cmake @@ -172,4 +172,4 @@ INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) -MARK_AS_ADVANCED(SDL2MAIN_LIBRARY SDL2_LIBRARY SDL2_INCLUDE_DIR) +MARK_AS_ADVANCED(SDL2MAIN_LIBRARY SDL2_LIBRARY SDL2_INCLUDE_DIR SDL2_LIBRARY_TEMP) diff --git a/build/cmake/modules/cotire.cmake b/build/cmake/modules/cotire.cmake index 09b52a629c85..076150aa1888 100644 --- a/build/cmake/modules/cotire.cmake +++ b/build/cmake/modules/cotire.cmake @@ -37,13 +37,13 @@ set(__COTIRE_INCLUDED TRUE) if (NOT CMAKE_SCRIPT_MODE_FILE) cmake_policy(PUSH) endif() -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.5...4.1) if (NOT CMAKE_SCRIPT_MODE_FILE) cmake_policy(POP) endif() set (COTIRE_CMAKE_MODULE_FILE "${CMAKE_CURRENT_LIST_FILE}") -set (COTIRE_CMAKE_MODULE_VERSION "1.8.0") +set (COTIRE_CMAKE_MODULE_VERSION "1.8.1") # activate select policies if (POLICY CMP0025) @@ -111,7 +111,6 @@ if (POLICY CMP0055) cmake_policy(SET CMP0055 NEW) endif() -include(CMakeParseArguments) include(ProcessorCount) function (cotire_get_configuration_types _configsVar) @@ -1068,10 +1067,10 @@ macro (cotire_check_ignore_header_file_path _headerFile _headerIsIgnoredVar) set (${_headerIsIgnoredVar} TRUE) elseif (IS_DIRECTORY "${_headerFile}") set (${_headerIsIgnoredVar} TRUE) - elseif ("${_headerFile}" MATCHES "\\.\\.|[_-]fixed" AND "${_headerFile}" MATCHES "\\.h$") - # heuristic: ignore C headers with embedded parent directory references or "-fixed" or "_fixed" in path + elseif ("${_headerFile}" MATCHES "\\.\\.|[_-]fixed") + # heuristic: ignore headers with embedded parent directory references or "-fixed" or "_fixed" in path # these often stem from using GCC #include_next tricks, which may break the precompiled header compilation - # with the error message "error: no include path in which to search for header.h" + # with the error message "error: no include path in which to search for header" set (${_headerIsIgnoredVar} TRUE) else() set (${_headerIsIgnoredVar} FALSE) @@ -1695,6 +1694,9 @@ function (cotire_add_pch_compilation_flags _language _compilerID _compilerVersio endif() endif() else() + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) # Clang-cl.exe options used # /Yc creates a precompiled header file # /Fp specifies precompiled header binary file name @@ -1707,10 +1709,10 @@ function (cotire_add_pch_compilation_flags _language _compilerID _compilerVersio if (_flags) # append to list list (APPEND _flags "${_sourceFileType${_language}}" - "/Yc${_prefixFile}" "/Fp${_pchFile}" "/FI${_prefixFile}" /Zs "${_hostFile}") + "/Yc${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") else() # return as a flag string - set (_flags "/Yc\"${_prefixFile}\" /Fp\"${_pchFile}\" /FI\"${_prefixFile}\"") + set (_flags "/Yc\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") endif() endif() elseif (_compilerID MATCHES "Intel") @@ -1845,26 +1847,28 @@ function (cotire_add_prefix_pch_inclusion_flags _language _compilerID _compilerV set (_flags "-include \"${_prefixFile}\"") endif() else() + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) # Clang-cl.exe options used # /Yu uses a precompiled header file during build # /Fp specifies precompiled header binary file name # /FI forces inclusion of file if (_pchFile) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) if (_flags) # append to list - list (APPEND _flags "/Yu${_prefixFile}" "/Fp${_pchFile}" "/FI${_prefixFile}") + list (APPEND _flags "/Yu${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") else() # return as a flag string - set (_flags "/Yu\"${_prefixFile}\" /Fp\"${_pchFile}\" /FI\"${_prefixFile}\"") + set (_flags "/Yu\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") endif() else() # no precompiled header, force inclusion of prefix header if (_flags) # append to list - list (APPEND _flags "/FI${_prefixFile}") + list (APPEND _flags "/FI${_prefixFileNative}") else() # return as a flag string - set (_flags "/FI\"${_prefixFile}\"") + set (_flags "/FI\"${_prefixFileNative}\"") endif() endif() endif() @@ -2046,8 +2050,10 @@ function (cotire_check_precompiled_header_support _language _target _msgVar) else() set (_ccacheExe "${_launcher}") endif() + # ccache 3.7.0 replaced --print-config with --show-config + # use -p instead, which seems to work for all version for now, sigh execute_process( - COMMAND "${_ccacheExe}" "--print-config" + COMMAND "${_ccacheExe}" "-p" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" RESULT_VARIABLE _result OUTPUT_VARIABLE _ccacheConfig OUTPUT_STRIP_TRAILING_WHITESPACE @@ -2396,6 +2402,9 @@ function (cotire_setup_pch_file_compilation _language _target _targetScript _pre "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" "${_prefixFile}" "${_pchFile}" "${_hostFile}" _flags) set_property (SOURCE ${_hostFile} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_hostFile} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_OUTPUTS "${_pchFile}") # make object file generated from host file depend on prefix header set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") @@ -2448,6 +2457,9 @@ function (cotire_setup_pch_file_inclusion _language _target _wholeTarget _prefix "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" "${_prefixFile}" "${_pchFile}" _flags) set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() # make object files generated from source files depend on precompiled header set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") endif() @@ -2461,6 +2473,9 @@ function (cotire_setup_pch_file_inclusion _language _target _wholeTarget _prefix "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" "${_prefixFile}" "${_pchFile}" _flags) set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() # mark sources as cotired to prevent them from being used in another cotired target set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") endif() @@ -2478,6 +2493,9 @@ function (cotire_setup_prefix_file_inclusion _language _target _prefixFile) "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" "${_prefixFile}" "${_pchFile}" _flags) set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + if (COTIRE_DEBUG) + message (STATUS "set_property: SOURCE ${_sourceFiles} APPEND_STRING COMPILE_FLAGS ${_flags}") + endif() # mark sources as cotired to prevent them from being used in another cotired target set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") # make object files generated from source files depend on prefix header @@ -2595,6 +2613,9 @@ function (cotire_setup_target_pch_usage _languages _target _wholeTarget) "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" "${_prefixFile}" "${_pchFile}" _options) set_property(TARGET ${_target} APPEND PROPERTY ${_options}) + if (COTIRE_DEBUG) + message (STATUS "set_property: TARGET ${_target} APPEND PROPERTY ${_options}") + endif() endif() endif() endif() diff --git a/build/cmake/modules/cotire_test/CMakeLists.txt b/build/cmake/modules/cotire_test/CMakeLists.txt index dd1426208f2d..c649767096ee 100644 --- a/build/cmake/modules/cotire_test/CMakeLists.txt +++ b/build/cmake/modules/cotire_test/CMakeLists.txt @@ -1,6 +1,6 @@ # cotire example project -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.5...4.1) if (POLICY CMP0058) # Ninja requires custom command byproducts to be explicit @@ -10,11 +10,8 @@ endif() project (CotireExample) set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/..") - -if (NOT CMAKE_VERSION VERSION_LESS "3.1.0") - set (CMAKE_CXX_STANDARD "98") - set (CMAKE_CXX_EXTENSIONS OFF) -endif() +set (CMAKE_CXX_STANDARD "98") +set (CMAKE_CXX_EXTENSIONS OFF) include(cotire) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index ae27793aad32..811d689f1a0e 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -16,13 +16,13 @@ wx_option(wxBUILD_TESTS "Build console tests (CONSOLE_ONLY) or ALL" OFF STRINGS CONSOLE_ONLY ALL OFF) wx_option(wxBUILD_DEMOS "Build demos" OFF) wx_option(wxBUILD_BENCHMARKS "Build benchmarks" OFF) -wx_option(wxBUILD_LOCALES "Build locales" AUTO STRINGS ON OFF AUTO) +wx_option_auto(wxBUILD_LOCALES "Build locales") mark_as_advanced(wxBUILD_LOCALES) wx_option(wxBUILD_PRECOMP "Use precompiled headers" ON STRINGS ON OFF COTIRE) mark_as_advanced(wxBUILD_PRECOMP) wx_option(wxBUILD_INSTALL "Create install/uninstall target for wxWidgets") wx_option(wxBUILD_COMPATIBILITY - "enable compatibilty with earlier wxWidgets versions" 3.0 STRINGS 2.8 3.0 3.1) + "enable compatibilty with earlier wxWidgets versions" 3.0 STRINGS 2.8 3.0 3.1 NONE) mark_as_advanced(wxBUILD_COMPATIBILITY) # Allow user specified setup.h folder set(wxBUILD_CUSTOM_SETUP_HEADER_PATH "" CACHE PATH "Include path containing custom wx/setup.h") @@ -84,17 +84,32 @@ wx_option(wxBUILD_PIC "Enable position independent code (PIC)." ON) mark_as_advanced(wxBUILD_PIC) wx_option(wxUSE_NO_RTTI "disable RTTI support" OFF) -set(wxBUILD_INSTALL_RUNTIME_DIR "" CACHE PATH "override default sub-directory to install runtime files") +set(wxBUILD_INSTALL_RUNTIME_DIR "" CACHE STRING "override default sub-directory to install runtime files") mark_as_advanced(wxBUILD_INSTALL_RUNTIME_DIR) -set(wxBUILD_INSTALL_LIBRARY_DIR "" CACHE PATH "override default sub-directory to install library files") +set(wxBUILD_INSTALL_LIBRARY_DIR "" CACHE STRING "override default sub-directory to install library files") mark_as_advanced(wxBUILD_INSTALL_LIBRARY_DIR) -set(wxBUILD_INSTALL_ARCHIVE_DIR "" CACHE PATH "override default sub-directory to install archive files") +set(wxBUILD_INSTALL_ARCHIVE_DIR "" CACHE STRING "override default sub-directory to install archive files") mark_as_advanced(wxBUILD_INSTALL_ARCHIVE_DIR) -wx_option(wxBUILD_INSTALL_PLATFORM_SUBDIR "platform specific sub-directory (MSVC-naming)" ON) +wx_option(wxBUILD_INSTALL_PLATFORM_SUBDIR "use platform specific sub-directory (MSVC-naming)" ON) mark_as_advanced(wxBUILD_INSTALL_PLATFORM_SUBDIR) -wx_option(wxBUILD_INSTALL_PDB "install pdb files in the runtime direcotry (MSVC)" OFF) +wx_option(wxBUILD_INSTALL_PDB "install pdb files in the runtime directory (MSVC-naming)" OFF) mark_as_advanced(wxBUILD_INSTALL_PDB) +# Use the MSVC/makefile naming convention, or the configure naming convention, +# this is the same check as used in FindwxWidgets. +wx_option_auto(wxBUILD_WIN32_MSVC_NAMING "Force the MSVC / makefile.[gcc/vc] naming convention") +mark_as_advanced(wxBUILD_WIN32_MSVC_NAMING) +if(wxBUILD_WIN32_MSVC_NAMING STREQUAL "AUTO") + if(MSVC) + set(WIN32_MSVC_NAMING 1) + elseif(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING) + set(WIN32_MSVC_NAMING 1) + else() + set(WIN32_MSVC_NAMING 0) + endif() +else() + set(WIN32_MSVC_NAMING ${wxBUILD_WIN32_MSVC_NAMING}) +endif() # STL options wx_option(wxUSE_STL "use standard C++ classes for everything" OFF) @@ -112,7 +127,7 @@ if(NOT WIN32) wx_option(wxUSE_VISIBILITY "use of ELF symbols visibility") endif() wx_option(wxUSE_UNSAFE_WXSTRING_CONV "provide unsafe implicit conversions in wxString to const char* or std::string") -wx_option(wxUSE_REPRODUCIBLE_BUILD "enable reproducable build" OFF) +wx_option(wxUSE_REPRODUCIBLE_BUILD "enable reproducible build" OFF) # --------------------------------------------------------------------------- # external libraries @@ -211,7 +226,7 @@ wx_option(wxUSE_LOG "use logging system") wx_option(wxUSE_LONGLONG "use wxLongLong class") wx_option(wxUSE_MIMETYPE "use wxMimeTypesManager") wx_option(wxUSE_PRINTF_POS_PARAMS "use wxVsnprintf() which supports positional parameters") -wx_option(wxUSE_SECRETSTORE "use wxSecretStore class") +wx_option_auto(wxUSE_SECRETSTORE "use wxSecretStore class") wx_option(wxUSE_SNGLINST_CHECKER "use wxSingleInstanceChecker class") wx_option(wxUSE_SOUND "use wxSound class") wx_option(wxUSE_SPELLCHECK "enable spell checking in wxTextCtrl") diff --git a/build/cmake/policies.cmake b/build/cmake/policies.cmake index 0a9cadd24571..bd09ee0ca71d 100644 --- a/build/cmake/policies.cmake +++ b/build/cmake/policies.cmake @@ -59,6 +59,11 @@ if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() +if(POLICY CMP0057) + # Support new if() IN_LIST operator. + cmake_policy(SET CMP0057 NEW) +endif() + if(POLICY CMP0060) # Link libraries by full path even in implicit directories. cmake_policy(SET CMP0060 NEW) diff --git a/build/cmake/samples/CMakeLists.txt b/build/cmake/samples/CMakeLists.txt index 6816caa5d7bf..89d9ff467797 100644 --- a/build/cmake/samples/CMakeLists.txt +++ b/build/cmake/samples/CMakeLists.txt @@ -67,7 +67,7 @@ wx_add_sample(htlbox LIBRARIES wxhtml DEPENDS wxUSE_HTML) if(wxUSE_HTML) include(html.cmake) endif() -wx_add_sample(image image.cpp canvas.cpp canvas.h cursor_png.c RES image.rc +wx_add_sample(image image.cpp canvas.cpp canvas.h RES image.rc DATA horse.png horse.jpg horse.bmp horse.gif horse.pcx horse.pnm horse_ag.pnm horse_rg.pnm horse.tif horse.tga horse.xpm horse.cur horse.ico horse3.ani horse.svg smile.xbm toucan.png cmyk.jpg cursor.png diff --git a/build/cmake/toolkit.cmake b/build/cmake/toolkit.cmake index 89d8dcba43d0..0910b66d68f7 100644 --- a/build/cmake/toolkit.cmake +++ b/build/cmake/toolkit.cmake @@ -67,6 +67,7 @@ endif() if(wxUSE_GUI) set(wxTOOLKIT_INCLUDE_DIRS) set(wxTOOLKIT_LIBRARIES) +set(wxTOOLKIT_LIBRARY_DIRS) set(wxTOOLKIT_VERSION) if(WXGTK) @@ -81,6 +82,7 @@ if(WXGTK) find_package(${gtk_lib} REQUIRED) list(APPEND wxTOOLKIT_INCLUDE_DIRS ${${gtk_lib}_INCLUDE_DIRS}) list(APPEND wxTOOLKIT_LIBRARIES ${${gtk_lib}_LIBRARIES}) + list(APPEND wxTOOLKIT_LIBRARY_DIRS ${${gtk_lib}_LIBRARY_DIRS}) list(APPEND wxTOOLKIT_DEFINITIONS ${${gtk_lib}_DEFINITIONS}) list(APPEND wxTOOLKIT_DEFINITIONS __WXGTK__) set(wxTOOLKIT_VERSION ${${gtk_lib}_VERSION}) @@ -119,21 +121,36 @@ endif() # support, but not for Wayland-only GTK (necessarily 3 or later), which is why # we have to do this after find_package(GTKx) above, as this is what sets # wxHAVE_GDK_X11. -if(UNIX AND NOT APPLE AND NOT WIN32 AND (WXX11 OR WXMOTIF OR WXGTK2 OR (WXGTK AND wxHAVE_GDK_X11))) +if(UNIX AND NOT WIN32 AND (WXX11 OR WXMOTIF OR WXGTK2 OR (WXGTK AND wxHAVE_GDK_X11))) find_package(X11 REQUIRED) list(APPEND wxTOOLKIT_INCLUDE_DIRS ${X11_INCLUDE_DIR}) list(APPEND wxTOOLKIT_LIBRARIES ${X11_LIBRARIES}) + mark_as_advanced(X11_xcb_xkb_INCLUDE_PATH) endif() if(WXQT) - set(QT_COMPONENTS Core Widgets Gui OpenGL Test) + find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) + + if(QT_VERSION_MAJOR EQUAL 5) + set(QT_COMPONENTS Core Widgets Gui OpenGL OpenGL Test) + elseif(QT_VERSION_MAJOR EQUAL 6) + set(QT_COMPONENTS Core Widgets Gui OpenGL OpenGLWidgets Test) + endif() + foreach(QT_COMPONENT ${QT_COMPONENTS}) - find_package(Qt5 COMPONENTS ${QT_COMPONENT} REQUIRED) - list(APPEND wxTOOLKIT_INCLUDE_DIRS ${Qt5${QT_COMPONENT}_INCLUDE_DIRS}) - list(APPEND wxTOOLKIT_LIBRARIES ${Qt5${QT_COMPONENT}_LIBRARIES}) - list(APPEND wxTOOLKIT_DEFINITIONS ${Qt5${QT_COMPONENT}_COMPILE_DEFINITIONS}) + find_package(Qt${QT_VERSION_MAJOR} COMPONENTS ${QT_COMPONENT} REQUIRED) + list(APPEND wxTOOLKIT_INCLUDE_DIRS ${Qt${QT_VERSION_MAJOR}${QT_COMPONENT}_INCLUDE_DIRS}) + list(APPEND wxTOOLKIT_LIBRARIES ${Qt${QT_VERSION_MAJOR}${QT_COMPONENT}_LIBRARIES}) + list(APPEND wxTOOLKIT_DEFINITIONS ${Qt${QT_VERSION_MAJOR}${QT_COMPONENT}_COMPILE_DEFINITIONS}) endforeach() - set(wxTOOLKIT_VERSION ${Qt5Core_VERSION}) + set(wxTOOLKIT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION}) + + if(ANDROID) + # A hack to remove _${ANDROID_ABI} that Qt5AndroidSupport.cmake added + # which breaks wx-config. + set(CMAKE_SHARED_LIBRARY_SUFFIX_C ${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(CMAKE_SHARED_LIBRARY_SUFFIX_CXX ${CMAKE_SHARED_LIBRARY_SUFFIX}) + endif() endif() if(wxBUILD_TOOLKIT MATCHES "osx_cocoa") diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt index dbed8cc9b3bb..608351ac4231 100644 --- a/build/cmake/utils/CMakeLists.txt +++ b/build/cmake/utils/CMakeLists.txt @@ -25,9 +25,10 @@ if(wxUSE_XRC) set_target_properties(wxrc PROPERTIES FOLDER "Utilities") + wx_get_install_dir(runtime) wx_install(TARGETS wxrc - RUNTIME DESTINATION "bin" - BUNDLE DESTINATION "bin" + RUNTIME DESTINATION "${runtime_dir}" + BUNDLE DESTINATION "${runtime_dir}" ) if(NOT WIN32_MSVC_NAMING AND wxBUILD_INSTALL) @@ -40,10 +41,12 @@ if(wxUSE_XRC) # Don't use wx_install() here to preserve escaping. install(CODE "execute_process( \ COMMAND ${CMAKE_COMMAND} -E create_symlink \ - \"${CMAKE_INSTALL_PREFIX}/bin/${wxrc_output_name}${EXE_SUFFIX}\" \ - \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX}\" \ + \"${CMAKE_INSTALL_PREFIX}/${runtime_dir}/${wxrc_output_name}${EXE_SUFFIX}\" \ + \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wxrc${EXE_SUFFIX}\" \ )" ) + list(APPEND WX_EXTRA_UNINSTALL_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wxrc${EXE_SUFFIX}") + set(WX_EXTRA_UNINSTALL_FILES ${WX_EXTRA_UNINSTALL_FILES} PARENT_SCOPE) endif() endif() diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in index efdc361505d5..2f3a735d920c 100644 --- a/build/cmake/wxWidgetsConfig.cmake.in +++ b/build/cmake/wxWidgetsConfig.cmake.in @@ -2,6 +2,10 @@ cmake_policy(PUSH) # Set policies to prevent warnings +if(POLICY CMP0057) + # Support new if() IN_LIST operator. + cmake_policy(SET CMP0057 NEW) +endif() if(POLICY CMP0072) # FindOpenGL prefers GLVND by default when available. cmake_policy(GET CMP0072 _OpenGL_GL_POLICY) @@ -11,7 +15,14 @@ if(POLICY CMP0072) endif() # determine target from compiler, platform and library type -if(WIN32 AND NOT CYGWIN AND NOT MSYS) +if(MSVC) + set(WIN32_MSVC_NAMING 1) +elseif(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING) + set(WIN32_MSVC_NAMING 1) +else() + set(WIN32_MSVC_NAMING 0) +endif() +if(WIN32_MSVC_NAMING) if(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC) set(wxCOMPILER_PREFIX "vc") elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) @@ -66,6 +77,23 @@ macro(wx_inherit_property source dest name) endforeach() endmacro() +macro(wx_copy_target ns name libname) + get_target_property(target_type wx::${libname} TYPE) + if(target_type STREQUAL STATIC_LIBRARY) + add_library(${ns}::${name} STATIC IMPORTED) + else() + add_library(${ns}::${name} SHARED IMPORTED) + endif() + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_CONFIGURATIONS) + wx_inherit_property(wx::${libname} ${ns}::${name} INTERFACE_COMPILE_DEFINITIONS) + wx_inherit_property(wx::${libname} ${ns}::${name} INTERFACE_INCLUDE_DIRECTORIES) + wx_inherit_property(wx::${libname} ${ns}::${name} INTERFACE_LINK_LIBRARIES) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LINK_INTERFACE_LANGUAGES) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LOCATION) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_IMPLIB) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LINK_DEPENDENT_LIBRARIES) +endmacro() + # for compatibility with FindwxWidgets set(wxWidgets_LIBRARIES) @@ -91,44 +119,33 @@ foreach(libname @wxLIB_TARGETS@) # use the Release configuration for MinSizeRel and RelWithDebInfo configurations # only when Release target exists, and MinSizeRel/RelWithDebInfo doesn't exist get_target_property(configs wx::${libname} IMPORTED_CONFIGURATIONS) - list(FIND configs "RELEASE" idxSrc) - if(idxSrc GREATER -1) - list(FIND configs "MINSIZEREL" idxSrc) - list(FIND CMAKE_CONFIGURATION_TYPES "MinSizeRel" idxDst) - if(idxSrc EQUAL -1 AND (idxDst GREATER -1 OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")) - set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_MINSIZEREL "Release") + if("RELEASE" IN_LIST configs) + if(NOT "MINSIZEREL" IN_LIST configs) + if("MinSizeRel" IN_LIST CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") + set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_MINSIZEREL "Release") + endif() endif() - list(FIND configs "RELWITHDEBINFO" idxSrc) - list(FIND CMAKE_CONFIGURATION_TYPES "RelWithDebInfo" idxDst) - if(idxSrc EQUAL -1 AND (idxDst GREATER -1 OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) - set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO "Release") + if(NOT "RELWITHDEBINFO" IN_LIST configs) + if("RelWithDebInfo" IN_LIST CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO "Release") + endif() endif() endif() # add an alias from wx:: to wx::wx - if(CMAKE_VERSION VERSION_LESS "3.18") - # CMake <3.18 does not support alias to non-global imported target, create a copy of the library - get_target_property(target_type wx::${libname} TYPE) - if(target_type STREQUAL STATIC_LIBRARY) - add_library(wx::${name} STATIC IMPORTED) + if(NOT TARGET wx::${name}) + if(CMAKE_VERSION VERSION_LESS "3.18") + # CMake <3.18 does not support alias to non-global imported target, create a copy of the library + wx_copy_target(wx ${name} ${libname}) + wx_copy_target(wxWidgets ${name} ${libname}) else() - add_library(wx::${name} SHARED IMPORTED) + add_library(wx::${name} ALIAS wx::${libname}) + add_library(wxWidgets::${name} ALIAS wx::${libname}) endif() - wx_inherit_property(wx::${libname} wx::${name} IMPORTED_CONFIGURATIONS) - wx_inherit_property(wx::${libname} wx::${name} INTERFACE_COMPILE_DEFINITIONS) - wx_inherit_property(wx::${libname} wx::${name} INTERFACE_INCLUDE_DIRECTORIES) - wx_inherit_property(wx::${libname} wx::${name} INTERFACE_LINK_LIBRARIES) - wx_inherit_property(wx::${libname} wx::${name} IMPORTED_LINK_INTERFACE_LANGUAGES) - wx_inherit_property(wx::${libname} wx::${name} IMPORTED_LOCATION) - wx_inherit_property(wx::${libname} wx::${name} IMPORTED_IMPLIB) - wx_inherit_property(wx::${libname} wx::${name} IMPORTED_LINK_DEPENDENT_LIBRARIES) - else() - add_library(wx::${name} ALIAS wx::${libname}) endif() # add to FindwxWidgets variable - list(FIND @PROJECT_NAME@_FIND_COMPONENTS ${name} idx) - if(NOT @PROJECT_NAME@_FIND_COMPONENTS OR idx GREATER -1) + if(NOT @PROJECT_NAME@_FIND_COMPONENTS OR ${name} IN_LIST @PROJECT_NAME@_FIND_COMPONENTS) list(APPEND wxWidgets_LIBRARIES wx::${name}) if(CREATE_WX_TARGET) target_link_libraries(wxWidgets::wxWidgets INTERFACE wx::${name}) @@ -137,14 +154,22 @@ foreach(libname @wxLIB_TARGETS@) endif() endforeach() -if(TARGET wx::wxgl) +include(CMakeFindDependencyMacro) + +if(TARGET wx::wxnet AND @wxUSE_WEBREQUEST_CURL@) + # make sure CURL targets are available: + # The link interface of target "wx::wxnet" contains: CURL::libcurl_shared + find_dependency(CURL) +endif() + +if(TARGET wx::wxgl AND NOT (APPLE AND IOS)) # make sure OpenGL targets are available: # The link interface of target "wx::wxgl" contains: OpenGL::GLU - find_package(OpenGL QUIET) + find_dependency(OpenGL) endif() # make sure Threads targets are available -find_package(Threads QUIET) +find_dependency(Threads) # if no components are specified in find_package, check all of them if(NOT @PROJECT_NAME@_FIND_COMPONENTS) diff --git a/samples/minimal/CMakeLists.txt b/samples/minimal/CMakeLists.txt index dfecbaf92ec4..1e311d98e581 100644 --- a/samples/minimal/CMakeLists.txt +++ b/samples/minimal/CMakeLists.txt @@ -14,7 +14,7 @@ # # Declare the minimum required CMake version -cmake_minimum_required(VERSION 3.0...3.31) +cmake_minimum_required(VERSION 3.5...4.1) if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET) # If no deployment target has been set default to the minimum supported @@ -32,15 +32,10 @@ project(minimal) # Request the required wxWidgets libs find_package(wxWidgets 3.2 COMPONENTS core base REQUIRED CONFIG) -# Include the wxWidgets use file to initialize various settings -if(wxWidgets_USE_FILE) - include(${wxWidgets_USE_FILE}) -endif() - # Define a variable containing a list of source files for the project set(SRC_FILES minimal.cpp - ) +) if(WIN32) # Include a RC file for windows @@ -52,14 +47,20 @@ endif() # Define the build target for the executable add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE ${SRC_FILES}) -# Link required libraries to the executable -target_link_libraries(${PROJECT_NAME} ${wxWidgets_LIBRARIES}) +# Link executable to the wxWidgets target +target_link_libraries(${PROJECT_NAME} wxWidgets::wxWidgets) -if(APPLE) +if(MSVC) + # Use manifest from wx.rc + set_target_properties(${PROJECT_NAME} PROPERTIES + COMPILE_FLAGS "/DwxUSE_RC_MANIFEST" + LINK_FLAGS "/MANIFEST:NO" + ) +elseif(APPLE) set_target_properties(${PROJECT_NAME} PROPERTIES RESOURCE "../../src/osx/carbon/wxmac.icns" MACOSX_BUNDLE_ICON_FILE wxmac.icns MACOSX_BUNDLE_COPYRIGHT "Copyright wxWidgets" MACOSX_BUNDLE_GUI_IDENTIFIER "org.wxwidgets.minimal" - ) + ) endif() From 30e340f6dfdbe73a654b9b5e595e9654af7f094e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 3 Dec 2025 15:20:12 +0100 Subject: [PATCH 246/416] Use FreeBSD 14.3 for Cirrus CI job 14.2 image isn't available any more. (cherry picked from commit 5881cc3d2999e1abb3e63805088683d1830671b6) --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index c882c7ea9aee..ef67dab71c43 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -11,7 +11,7 @@ task: skip: "changesIncludeOnly('appveyor.yml','CMakeLists.txt','.circleci/**','.github/**','docs/**','interface/**','include/wx/{msw,osx,qt}/**','src/{msw,osx,qt}/**','build/{cmake,msw,osx}/**')" name: Cirrus CI / FreeBSD wxGTK 3 freebsd_instance: - image_family: freebsd-14-2 + image_family: freebsd-14-3 before_script: | echo LD_LIBRARY_PATH=`pwd`/lib >> $CIRRUS_ENV From eec6c4ddf8ec837a214c3fa0c3d0945c0dc55374 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 30 Nov 2025 16:51:06 +0100 Subject: [PATCH 247/416] Use better name for wxSpinCtrl::SetIncrement() arg in the docs Call it "inc" instead of "value" because this is what it actually is and for consistency with the actual header and SetIncrement() in wxSpinCtrlDouble. See #26002. (cherry picked from commit 666966acbf09eb382469f93d1e4eb0a6cb0a3d6e) --- interface/wx/spinctrl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/wx/spinctrl.h b/interface/wx/spinctrl.h index 3f22c41124c9..ad720ceab779 100644 --- a/interface/wx/spinctrl.h +++ b/interface/wx/spinctrl.h @@ -238,7 +238,7 @@ class wxSpinCtrl : public wxControl @since 3.1.6 */ - void SetIncrement(int value); + void SetIncrement(int inc); }; /** From 21e076fa7940e676a84081f4d1f2e162443ffeef Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 30 Nov 2025 16:51:06 +0100 Subject: [PATCH 248/416] Correct wxSpinEvent GetPosition() if start value is non-zero Set wxSpinButton start value to start value of wxSpinCtrl, otherwise the generic control used in OSX would report a wrong value in EVT_SPIN. See #26002. (cherry picked from commit 5178043b3e48031bab291d31f2f781fdcb3917eb) --- docs/changes.txt | 1 + src/generic/spinctlg.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 8924651b9ca2..5b94f93da9f2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -305,6 +305,7 @@ wxOSX: - Fix nested markup attributes handling (Václav Slavík, #25864). - Fix possible use of already destroyed wxTimers (Federico Perini, #25871). - Fix handling of multiple filters in wxFileDialog (#25918). +- Fix value in wxEVT_SPIN with non-0 initial value (Robert Roebling, #26002). 3.2.8.1: (released 2025-05-25) diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 26bf3af12021..64e285523857 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -245,6 +245,9 @@ bool wxSpinCtrlGenericBase::Create(wxWindow *parent, m_textCtrl = new wxSpinCtrlTextGeneric(this, DoValueToText(m_value), style); m_spinButton = new wxSpinCtrlButtonGeneric(this, style); + // ensure correct start value also if non-zero + m_spinButton->SetValue( m_value ); + #if wxUSE_TOOLTIPS m_textCtrl->SetToolTip(GetToolTipText()); m_spinButton->SetToolTip(GetToolTipText()); From c1129d0f9a85378163abd7004ed654f1e628facf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Dec 2025 18:17:23 +0100 Subject: [PATCH 249/416] Don't use border for button part of generic wxSpinCtrl Limit explicit border to be around text control, not the spin button, which looks very wrong. See #26002. Co-authored-by: Vadim Zeitlin (cherry picked from commit 0b97a4f25eb54ce83e009614e36f85c83feb64da) --- docs/changes.txt | 1 + src/generic/spinctlg.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 5b94f93da9f2..10d2c2007f66 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -306,6 +306,7 @@ wxOSX: - Fix possible use of already destroyed wxTimers (Federico Perini, #25871). - Fix handling of multiple filters in wxFileDialog (#25918). - Fix value in wxEVT_SPIN with non-0 initial value (Robert Roebling, #26002). +- Improve appearance of wxSpinCtrl (Robert Roebling, #26002). 3.2.8.1: (released 2025-05-25) diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 64e285523857..0396a4913c0c 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -216,8 +216,10 @@ bool wxSpinCtrlGenericBase::Create(wxWindow *parent, // don't use borders for this control itself, it wouldn't look good with // the text control borders (but we might want to use style border bits to // select the text control style) + const long styleWithoutBorder = (style & ~wxBORDER_MASK) | wxBORDER_NONE; + if ( !wxControl::Create(parent, id, wxDefaultPosition, wxDefaultSize, - (style & ~wxBORDER_MASK) | wxBORDER_NONE, + styleWithoutBorder, wxDefaultValidator, name) ) { return false; @@ -243,7 +245,7 @@ bool wxSpinCtrlGenericBase::Create(wxWindow *parent, } m_textCtrl = new wxSpinCtrlTextGeneric(this, DoValueToText(m_value), style); - m_spinButton = new wxSpinCtrlButtonGeneric(this, style); + m_spinButton = new wxSpinCtrlButtonGeneric(this, styleWithoutBorder); // ensure correct start value also if non-zero m_spinButton->SetValue( m_value ); From e9dcd4cc2492e152745fdea0f5ed2324039c188e Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sat, 6 Dec 2025 18:33:18 +0100 Subject: [PATCH 250/416] Fix deleting wxTextCtrl in wxEVT_TEXT_ENTER handler in wxGTK Disconnect the signal handler to ensure it doesn't get called during the control deletion. See #26006. (cherry picked from commit e6318ca7d57807307c30fdbd3b51de378d3554ad) --- docs/changes.txt | 1 + src/gtk/textentry.cpp | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 10d2c2007f66..663aa9dbd29e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -296,6 +296,7 @@ wxMSW wxOSX: - Fix crash on startup when using Farsi as system language (#25561). +- Fix crash deleting wxTextCtrl from wxEVT_TEXT_ENTER handler (#26006). - Fix showing extra controls in wxFileDialog (jey5nd6, #25717). - Do not activate "Close" button on Cmd-C (nobugshere, #25346). - Fix memory leak in wxColour::Set() (#25569). diff --git a/src/gtk/textentry.cpp b/src/gtk/textentry.cpp index 580d261a6126..097f4646cdff 100644 --- a/src/gtk/textentry.cpp +++ b/src/gtk/textentry.cpp @@ -43,6 +43,7 @@ class wxTextCoalesceData public: wxTextCoalesceData(GtkWidget* widget, gulong handlerAfterKeyPress) : m_handlerAfterKeyPress(handlerAfterKeyPress) + , m_widget(widget) { m_inKeyPress = false; m_pendingTextChanged = false; @@ -52,12 +53,17 @@ class wxTextCoalesceData g_signal_handler_block(widget, m_handlerAfterKeyPress); } - void StartHandlingKeyPress(GtkWidget* widget) + ~wxTextCoalesceData() + { + g_signal_handler_disconnect(m_widget, m_handlerAfterKeyPress); + } + + void StartHandlingKeyPress() { m_inKeyPress = true; m_pendingTextChanged = false; - g_signal_handler_unblock(widget, m_handlerAfterKeyPress); + g_signal_handler_unblock(m_widget, m_handlerAfterKeyPress); } bool SetPendingIfInKeyPress() @@ -70,9 +76,9 @@ class wxTextCoalesceData return true; } - bool EndHandlingKeyPressAndCheckIfPending(GtkWidget* widget) + bool EndHandlingKeyPressAndCheckIfPending() { - g_signal_handler_block(widget, m_handlerAfterKeyPress); + g_signal_handler_block(m_widget, m_handlerAfterKeyPress); wxASSERT( m_inKeyPress ); m_inKeyPress = false; @@ -89,6 +95,7 @@ class wxTextCoalesceData bool m_inKeyPress; bool m_pendingTextChanged; const gulong m_handlerAfterKeyPress; + GtkWidget* const m_widget; wxDECLARE_NO_COPY_CLASS(wxTextCoalesceData); }; @@ -120,14 +127,14 @@ extern "C" { // to send a single wxEVT_TEXT even if we received several (typically two, when // the selected text in the control is replaced by new text) "changed" signals. static gboolean -wx_gtk_text_after_key_press(GtkWidget* widget, +wx_gtk_text_after_key_press(GtkWidget*, GdkEventKey* WXUNUSED(gdk_event), wxTextEntry* entry) { wxTextCoalesceData* const data = entry->GTKGetCoalesceData(); wxCHECK_MSG( data, FALSE, "must be non-null if this handler is called" ); - if ( data->EndHandlingKeyPressAndCheckIfPending(widget) ) + if ( data->EndHandlingKeyPressAndCheckIfPending() ) { entry->GTKOnTextChanged(); } @@ -981,7 +988,7 @@ void wxTextEntry::GTKEntryOnKeypress(GtkWidget* widget) const m_coalesceData = new wxTextCoalesceData(widget, handler); } - m_coalesceData->StartHandlingKeyPress(widget); + m_coalesceData->StartHandlingKeyPress(); } int wxTextEntry::GTKEntryIMFilterKeypress(GdkEventKey* event) const From 870f101097a1456fe79404acce27a586b4cfe707 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Dec 2025 19:34:51 +0100 Subject: [PATCH 251/416] Put change log entry for parent commit in the correct section This was a wxGTK fix, not wxOSX one. See #26006. --- docs/changes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 663aa9dbd29e..3cc35da6d24f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ All (GUI): wxGTK: - Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). +- Fix crash deleting wxTextCtrl from wxEVT_TEXT_ENTER handler (#26006). - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). - Fix initial appearance of wxGLCanvas when using high DPI (#23733). @@ -296,7 +297,6 @@ wxMSW wxOSX: - Fix crash on startup when using Farsi as system language (#25561). -- Fix crash deleting wxTextCtrl from wxEVT_TEXT_ENTER handler (#26006). - Fix showing extra controls in wxFileDialog (jey5nd6, #25717). - Do not activate "Close" button on Cmd-C (nobugshere, #25346). - Fix memory leak in wxColour::Set() (#25569). From 4cc7ba11fd65f3cc125e7193f769c82671a58513 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Dec 2025 19:40:55 +0100 Subject: [PATCH 252/416] Update release files for 3.2.9 Mostly just follow the instructions in docs/contributing/how-to-release.md --- docs/changes.txt | 7 +- docs/doxygen/mainpages/manual.h | 2 +- docs/msw/binaries.md | 8 +- docs/publicity/announce.txt | 44 +++++----- docs/readme.txt | 39 +++++---- docs/release.md | 140 ++++++++++++++++---------------- 6 files changed, 119 insertions(+), 121 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3cc35da6d24f..1175f0dee6f0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -249,12 +249,12 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. -3.2.9: (released 2025-??-??) +3.2.9: (released 2025-12-12) ---------------------------- All: -- Backport several CMake enhancements from 3.3 (Maarten Bent, #25448). +- Backport several CMake enhancements from 3.3 (Maarten Bent, #25448, #25998). - Fix using wxSOCKET_NOWAIT_READ and wxSOCKET_WAITALL_WRITE together (#17114). - Make wxPlatformInfo::Get() thread-safe (#25459). - Fix CMake build under Alpine Linux and other systems using musl (#25749). @@ -276,11 +276,10 @@ wxGTK: - Fix crash deleting wxTextCtrl from wxEVT_TEXT_ENTER handler (#26006). - Fix handling total window size with GNOME with X11 (#25348). - Fix height of read-only wxBitmapComboBox (#25468). -- Fix initial appearance of wxGLCanvas when using high DPI (#23733). - Fix memory leak when using wxOverlay (#24500). -- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). - Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). - Fix regression when unmaximizing windows under XFCE/MATE (#25708). +- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). - Show system default window buttons under Wayland (#25562). wxMSW diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h index f6e8213336c4..f979c6cf89df 100644 --- a/docs/doxygen/mainpages/manual.h +++ b/docs/doxygen/mainpages/manual.h @@ -14,7 +14,7 @@ @author Julian Smart, Vadim Zeitlin, Robin Dunn, Stefan Csomor, Bryan Petty, Francesco Montorsi, Robert Roebling et al -@date April 24, 2025 +@date December 12, 2015 Welcome to wxWidgets, a stable and powerful open source framework for developing native cross-platform GUI applications in C++! diff --git a/docs/msw/binaries.md b/docs/msw/binaries.md index 1658432e8805..16de33741a4c 100644 --- a/docs/msw/binaries.md +++ b/docs/msw/binaries.md @@ -17,7 +17,7 @@ Getting the files ----------------- First, you need to get the correct files. You will always need the -`wxWidgets-3.2.8-headers.7z` one but the rest depends on your compiler version +`wxWidgets-3.2.9-headers.7z` one but the rest depends on your compiler version and architecture: as different versions of MSVC compiler are not binary compatible, you should select the files with the correct `vc80`, `vc90`, `vc100`, `vc110`, `vc120`, or `vc14x` @@ -28,14 +28,14 @@ or the ones without this suffix for the still more common 32-bit builds. After determining the combination of suffixes you need, you should download the "Dev" and the "ReleaseDLL" files in addition to the "Headers" one above, e.g. for 32-bit MSVS 2017 development you need -`wxMSW-3.2.8_vc14x_Dev.7z` and `wxMSW-3.2.8_vc14x_ReleaseDLL.7z`. +`wxMSW-3.2.9_vc14x_Dev.7z` and `wxMSW-3.2.9_vc14x_ReleaseDLL.7z`. All binaries are available at: -https://www.wxwidgets.org/downloads#v3.2.8_msw +https://www.wxwidgets.org/downloads#v3.2.9_msw Once you have the files you need, unzip all of them into the same directory, for -example `c:\wx\3.2.8`. You should have `include` and `lib` subdirectories under +example `c:\wx\3.2.9`. You should have `include` and `lib` subdirectories under this directory, as well as files such as `wxwidgets.props`. Note: To avoid hard-coding this path into your projects, define `wxwin` diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt index 463bee14d0c0..1a4702bb88dd 100644 --- a/docs/publicity/announce.txt +++ b/docs/publicity/announce.txt @@ -1,45 +1,45 @@ -April 24, 2025 -- The wxWidgets team is pleased to announce a new +December 12, 2015 -- The wxWidgets team is pleased to announce a new stable release of our open source framework for the development of native cross-platform applications in C++. -wxWidgets 3.2.8 is part of the API and ABI-stable 3.2.x release series and is +wxWidgets 3.2.9 is part of the API and ABI-stable 3.2.x release series and is now available from https://www.wxwidgets.org/downloads/ and - https://github.com/wxWidgets/wxWidgets/releases/v3.2.8 + https://github.com/wxWidgets/wxWidgets/releases/v3.2.9 -This is mostly a bug fix release correcting several problems found in the -previous 3.2.7 release: +This release doesn't add any major new features, but contains some important +fixes for bugs found in the previous 3.2.8 release: -- Fix crash in wxPropertyGrid with wxGTK3 after recent change (#25286). -- Fix padding of wxMenu in high DPI under Windows 11 (#25117). -- Fix key codes in WXK_NUMPADx events in wxGTK (#25263). -- Fix ABI breakage for versioned symbols in 3.2.7 (#25327). -- Fix third party libraries build with Xcode 16.3. -- Fix using OpenGL and WebView when using CMake install (#25266). +- Fix crash when using Farsi as system language under macOS (#25561). +- Fix handling total window size with GNOME with X11 (#25348). +- Fix memory leak when using wxOverlay (#24500). +- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). +- Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). +- Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). -But it still contains a couple of enhancements, including: +The new release still contains a couple of enhancements, including: -- Add wxVector(std::initializer_list list) ctor (#25290). -- Add mouse scrolling support to generic wxSpinCtrl (#24935). -- Add @USER@ macro to HTML and RichText printers (#25318). +- Many improvements to CMake build system (#25448, #25749, #25998). +- Support for building under macOS 26 Tahoe (#25798). +- Fix wxStyledTextCtrl support in screen readers (Maarten Bent, #25963). +- Respect HTML5 charset attribute in wxHTML (Kees van der Oord, #25546). +- Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). Other changes include: -- Call OnExceptionInMainLoop() in wxGTK if idle event handler throws (#25312). -- Compute wxStaticText best size ourselves if GTK does it wrongly (#24781). -- Fix page count display in wxHtmlPrintout when there is only one page (#25320). -- Miscellaneous CMake build improvements (#25324). -- Fix new warnings with gcc 15 (#25338). -- Update Brazilian Portuguese translations. +- Fix memory leak in wxColour::Set() under macOS (#25569). +- Fix memory leak when using wxOverlay in wxGTK (#24500). +- Reduce wxStaticBitmap GDI resource usage in wxMSW (Alex Shvartzkop, #25698). +- Significantly improve performance of drawing bitmaps in wxAUI (#23841). Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x, meaning that the existing applications don't even need to be rebuilt to profit from all the diff --git a/docs/readme.txt b/docs/readme.txt index d6554467d6c2..c2def5e80d6b 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -32,33 +32,32 @@ installation instructions. -Changes since 3.2.7 +Changes since 3.2.8 ------------------- -This is mostly a bug fix release correcting several problems found in the -previous 3.2.7 release: +This release doesn't add any major new features, but contains some important +fixes for bugs found in the previous 3.2.8 release: -- Fix crash in wxPropertyGrid with wxGTK3 after recent change (#25286). -- Fix padding of wxMenu in high DPI under Windows 11 (#25117). -- Fix key codes in WXK_NUMPADx events in wxGTK (#25263). -- Fix ABI breakage for versioned symbols in 3.2.7 (#25327). -- Fix third party libraries build with Xcode 16.3. -- Fix using OpenGL and WebView when using CMake install (#25266). +- Fix crash when using Farsi as system language under macOS (#25561). +- Fix handling total window size with GNOME with X11 (#25348). +- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). +- Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). +- Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). -But it still contains a couple of enhancements, including: +The new release still contains a couple of enhancements, including: -- Add wxVector(std::initializer_list list) ctor (#25290). -- Add mouse scrolling support to generic wxSpinCtrl (#24935). -- Add @USER@ macro to HTML and RichText printers (#25318). +- Many improvements to CMake build system (#25448, #25749, #25998). +- Support for building under macOS 26 Tahoe (#25798). +- Fix wxStyledTextCtrl support in screen readers (Maarten Bent, #25963). +- Respect HTML5 charset attribute in wxHTML (Kees van der Oord, #25546). +- Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). Other changes include: -- Call OnExceptionInMainLoop() in wxGTK if idle event handler throws (#25312). -- Compute wxStaticText best size ourselves if GTK does it wrongly (#24781). -- Fix page count display in wxHtmlPrintout when there is only one page (#25320). -- Miscellaneous CMake build improvements (#25324). -- Fix new warnings with gcc 15 (#25338). -- Update Brazilian Portuguese translations. +- Fix memory leak in wxColour::Set() under macOS (#25569). +- Fix memory leak when using wxOverlay in wxGTK (#24500). +- Reduce wxStaticBitmap GDI resource usage in wxMSW (Alex Shvartzkop, #25698). +- Significantly improve performance of drawing bitmaps in wxAUI (#23841). Please see the full change log for more details: @@ -162,4 +161,4 @@ developed by its users and your contributions to it are always welcome! Have fun! -The wxWidgets Team, April 2025 +The wxWidgets Team, December 2015 diff --git a/docs/release.md b/docs/release.md index ed6a640cbe87..a8059a2abf12 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,32 +1,32 @@ Welcome to wxWidgets, a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. -wxWidgets 3.2.8 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.7 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. +wxWidgets 3.2.9 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.8 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. We recommend using this version for any new wxWidgets applications. Existing applications using wxWidgets 3.0 or 3.1 shouldn't require any special effort to upgrade to this version too, so please try upgrading them to it. -Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.8/docs/changes.txt) for more details of the changes in it. +Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/changes.txt) for more details of the changes in it. ## Source Files and Documentation If you intend to build wxWidgets from sources (which is recommended), please do **NOT** download the files using the "Source code" links just above, which are automatically generated by GitHub and don't contain the submodules sources which are necessary for building wxWidgets. -Instead, download one of [wxWidgets-3.2.8.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxWidgets-3.2.8.zip) or [wxWidgets-3.2.8.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxWidgets-3.2.8.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.8.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxWidgets-3.2.8.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. +Instead, download one of [wxWidgets-3.2.9.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxWidgets-3.2.9.zip) or [wxWidgets-3.2.9.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxWidgets-3.2.9.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.9.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxWidgets-3.2.9.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. -In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.8). +In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.9). -Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.8/wxMSW-3.2.8-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. +Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxMSW-3.2.9-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. To verify your download please use the following SHA-1 checksums: - 97de954ab0faba52b07333de42ca1fb46ab04d17 wxMSW-3.2.8-Setup.exe - ed7d7728ca9487671531bfa43e032bed7006bd63 wxWidgets-3.2.8-docs-chm.zip - 8400cb523f1e896e94e26f94149900989ecca82a wxWidgets-3.2.8-docs-html.tar.bz2 - 42f268a99a09d72a942fd3c5922b4336cb842bf7 wxWidgets-3.2.8-docs-html.zip - 86a2c99b4e9608b7cfc0b59e0f5a6d200a9d2541 wxWidgets-3.2.8-headers.7z - e7347ebbb7ea5a12ad68603eee95872df83a8ad7 wxWidgets-3.2.8.7z - a74d573d03068cd0e86396e13263f67ef3a4fc51 wxWidgets-3.2.8.tar.bz2 - b218ba7e0d472e0763cf67742b1ded946fd21954 wxWidgets-3.2.8.zip + 0000000000000000000000000000000000000000 wxMSW-3.2.9-Setup.exe + 0000000000000000000000000000000000000000 wxWidgets-3.2.9-docs-chm.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.9-docs-html.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.9-docs-html.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.9-headers.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.9.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.9.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.9.zip ## Binaries @@ -39,7 +39,7 @@ We provide pre-built binary files for the following compilers: ### For Developers -For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.8_Headers.7z` file and one of `wxMSW-3.2.8-vcXXX_Dev.7z` or `wxMSW-3.2.8_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). +For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.9_Headers.7z` file and one of `wxMSW-3.2.9-vcXXX_Dev.7z` or `wxMSW-3.2.9_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols. @@ -47,71 +47,71 @@ Note that if you're setting up a new project using these binaries, the simplest ### For End Users -End users may download one of `wxMSW-3.2.8_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.8_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. +End users may download one of `wxMSW-3.2.9_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.9_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. ### For Debugging -* Microsoft Visual C++ users: Files `wxMSW-3.2.8_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. +* Microsoft Visual C++ users: Files `wxMSW-3.2.9_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. * MinGW-TDM users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contains the debug symbols). ### Binary File Download Verification To verify your download please use the following SHA-1 checksums: - 01c9c4179b2bf84026feb028e5246f91db245bbc wxMSW-3.2.8_gcc730_Dev.7z - 27d78b77e48ebbb4f7fb8714dc8a559df3078bbb wxMSW-3.2.8_gcc730_ReleaseDLL.7z - 1869bf5a6f21fb58445bbce70c5b404f1ca64141 wxMSW-3.2.8_gcc730_x64_Dev.7z - 399bf0965d1fb5bc2a241378180384adb68bbd67 wxMSW-3.2.8_gcc730_x64_ReleaseDLL.7z - 1b0e8039c8dacb33ad6187040faa58ebd2b5d6d7 wxMSW-3.2.8_gcc810_Dev.7z - 7a69b9248241a9685610378558bd302cb0e85070 wxMSW-3.2.8_gcc810_ReleaseDLL.7z - 64b1513b9127fb1bbde9c2b83b698a9f7ca4c90f wxMSW-3.2.8_gcc810_x64_Dev.7z - 0d095c7a9af7e9078afeaf67ea5454a43e7b9a3c wxMSW-3.2.8_gcc810_x64_ReleaseDLL.7z - 6860499a2c235835fa2d5c403dbdf5e17861ee83 wxMSW-3.2.8_gcc1030TDM_Dev.7z - 9e5de73ffc759d958402eb24462dd2db5f21950c wxMSW-3.2.8_gcc1030TDM_ReleaseDLL.7z - 0ade35ddaedd434a089032276dbee88ed76335f5 wxMSW-3.2.8_gcc1030TDM_x64_Dev.7z - 7f173e04b5dd705411532214f85c819ed6ec1b10 wxMSW-3.2.8_gcc1030TDM_x64_ReleaseDLL.7z - 0aee1f044dacad0b0b3873ee9364e0a23e245bd4 wxMSW-3.2.8_gcc1220_Dev.7z - 8bef9f0b6d379f076bde2001202742a205db9e67 wxMSW-3.2.8_gcc1220_ReleaseDLL.7z - 76813467f7f11bbeaaf8cf557b7c806a4786d6ef wxMSW-3.2.8_gcc1220_x64_Dev.7z - 265b59a478ab0a8b99649c5b82b5c3bfc2ae38d1 wxMSW-3.2.8_gcc1220_x64_ReleaseDLL.7z - eb5a77474cd22f6d45cb46ffe7c2790991855dcf wxMSW-3.2.8_gcc1320_Dev.7z - fbec0402227f17aceecf9ce4acab14c58094abe0 wxMSW-3.2.8_gcc1320_ReleaseDLL.7z - a1af808c695a87136890b1c1e1d61bfed44e2520 wxMSW-3.2.8_gcc1320_x64_Dev.7z - a9c1f291ea2149254c71b61bb9445b6d7b981cb0 wxMSW-3.2.8_gcc1320_x64_ReleaseDLL.7z - d3f01f4c842bee3b274f7130b8cbf6fda21ba9c4 wxMSW-3.2.8_gcc1420_Dev.7z - da55ec64fb7f659d1ea3757bda4cdb3388b0001c wxMSW-3.2.8_gcc1420_ReleaseDLL.7z - 929e70885f42e24a3ba3e4af55db1dcee16b364e wxMSW-3.2.8_gcc1420_x64_Dev.7z - e8ca1418e2bd2b1f891225123ae4028db62691dd wxMSW-3.2.8_gcc1420_x64_ReleaseDLL.7z - 860ce1b6b4c3a7c28de5cd29d4585ec7383a7047 wxMSW-3.2.8_vc90_Dev.7z - 4c09d2350a055d95e0d335ef207311cc2d9a84c4 wxMSW-3.2.8_vc90_ReleaseDLL.7z - b90782d3139520bf91d390b1c79b4868c92765f4 wxMSW-3.2.8_vc90_ReleasePDB.7z - 6547a3fc04bd1f5e3a616a8ecae78b86845dd870 wxMSW-3.2.8_vc90_x64_Dev.7z - 310970089145d809054fe7d5551b40100f7916f5 wxMSW-3.2.8_vc90_x64_ReleaseDLL.7z - 68404af2479c4d59353ffddb63eb0b47f2210dbd wxMSW-3.2.8_vc90_x64_ReleasePDB.7z - 5267f411f1b32b59a44cba054dd5c4eeea8e75d5 wxMSW-3.2.8_vc100_Dev.7z - c6ac7e4c884edda7571b08655e972e0629e1c961 wxMSW-3.2.8_vc100_ReleaseDLL.7z - 1585a26353ede45dc4635c13a2df14a9a696c19b wxMSW-3.2.8_vc100_ReleasePDB.7z - 0a6b70e8881027e55bb9ca5c6354a514f165a7e0 wxMSW-3.2.8_vc100_x64_Dev.7z - 7784ec0667a812bf2edb609434e6b0fbfaf6c21d wxMSW-3.2.8_vc100_x64_ReleaseDLL.7z - 210a50cc93422da7f420390a786ba0e823cffb48 wxMSW-3.2.8_vc100_x64_ReleasePDB.7z - bb1ff565d7a2f37e79fb06ebaea90a49e7893812 wxMSW-3.2.8_vc110_Dev.7z - aa90f9ebe6c46e46f75e2158bec7c51c9e1ac9be wxMSW-3.2.8_vc110_ReleaseDLL.7z - 3c1cbb8a5994aba976df26082fbb68853ac3e94f wxMSW-3.2.8_vc110_ReleasePDB.7z - 8a3e81ac703c98429c9fc424730f628c58c9cc96 wxMSW-3.2.8_vc110_x64_Dev.7z - a39ece69d86afa512eb043fc025709d16323db20 wxMSW-3.2.8_vc110_x64_ReleaseDLL.7z - f8135ede0368cb8b26db055e6c8e3ef97464da1c wxMSW-3.2.8_vc110_x64_ReleasePDB.7z - b3ea1448f6b1998c643445f0dedc93a51b025a2c wxMSW-3.2.8_vc120_Dev.7z - f53299864e205a533594c16bb81505af2e3fbb57 wxMSW-3.2.8_vc120_ReleaseDLL.7z - 8709d65a476a600afdd4f4b8bd17c61797925330 wxMSW-3.2.8_vc120_ReleasePDB.7z - 6357eaed467284f901d4eeeec8b9b9d044d3410a wxMSW-3.2.8_vc120_x64_Dev.7z - 8054e0df13abd8a28cc7bdbeb1818dc6682ba555 wxMSW-3.2.8_vc120_x64_ReleaseDLL.7z - d1c078f7f4c4a02b85c652568d87566709e65a08 wxMSW-3.2.8_vc120_x64_ReleasePDB.7z - 65112a99d3e253796081d1ec80df294290403398 wxMSW-3.2.8_vc14x_Dev.7z - 44ceee6ddcbb6aa60de6b6fc26c57491c189477f wxMSW-3.2.8_vc14x_ReleaseDLL.7z - f9253e55e2d1d20487d14d01e2bdab9a95e7d169 wxMSW-3.2.8_vc14x_ReleasePDB.7z - abf0be396b7648405883058090e4ad5f4d13918e wxMSW-3.2.8_vc14x_x64_Dev.7z - 2ad8fcc7bf28db8126eae55284eccbdfa7d02e27 wxMSW-3.2.8_vc14x_x64_ReleaseDLL.7z - aef0fe5e8456cefa6cc22db4b8dd43976e210143 wxMSW-3.2.8_vc14x_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_x64_ReleasePDB.7z ## Reporting Problems From 4ec643da68e84652f4cb65505fafe487cabbdd14 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 7 Dec 2025 20:54:06 +0100 Subject: [PATCH 253/416] Fix recently broken wxHTML build with libmspack Revert part of 2db5b45971 (Backport CMake changes, 2025-11-29) which broke the build in this case. Closes #26019. --- build/cmake/lib/html/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/lib/html/CMakeLists.txt b/build/cmake/lib/html/CMakeLists.txt index 7a19d45c89b7..c4d6e2172e84 100644 --- a/build/cmake/lib/html/CMakeLists.txt +++ b/build/cmake/lib/html/CMakeLists.txt @@ -9,7 +9,7 @@ wx_append_sources(HTML_FILES HTML_CMN) -if(WXMSW) +if(WXMSW OR wxUSE_LIBMSPACK) wx_append_sources(HTML_FILES HTML_MSW) endif() From 22174939d55e00660776d9e8350dd545a6b70320 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 7 Dec 2025 23:26:07 +0100 Subject: [PATCH 254/416] Fix recent breakage to EGL-based wxGLCanvas EGL support got completely broken in a06400f9ae (Support EGL 1.4 instead of previously required 1.5, 2025-11-23) which didn't backport the changes from master correctly as the type of m_config has been changed from "EGLConfig*" to just "EGLConfig" there, but the corresponding dereference wasn't added when backporting (and the resulting code still compiled because EGL is so wonderfully type unsafe). Fix this by passing correct config argument to the surface creation functions. Closes #26020. --- src/unix/glegl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index f3258ad4cc70..baee0da5b8ed 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -584,7 +584,7 @@ EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const // it isn't. if ( s_eglCreatePlatformWindowSurface ) { - return s_eglCreatePlatformWindowSurface(m_display, m_config, + return s_eglCreatePlatformWindowSurface(m_display, *m_config, window, NULL); } @@ -606,13 +606,13 @@ EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const if ( s_eglCreatePlatformWindowSurfaceEXT ) { - return s_eglCreatePlatformWindowSurfaceEXT(m_display, m_config, + return s_eglCreatePlatformWindowSurfaceEXT(m_display, *m_config, window, NULL); } else { - return eglCreateWindowSurface(m_display, m_config, + return eglCreateWindowSurface(m_display, *m_config, reinterpret_cast(window), NULL); } From d81b22eb8f8e7571164010e3754794f685e00dde Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 7 Dec 2025 23:29:24 +0100 Subject: [PATCH 255/416] Update full version to 3.2.9.1 The final 3.2.9 release will have to use different version number from the first attempt due to the critical bug fix in the parent commit (and some other fixes that will be part of it too). --- include/wx/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/version.h b/include/wx/version.h index 773a61df29fe..ed2d30a4e54c 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -28,7 +28,7 @@ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 #define wxRELEASE_NUMBER 9 -#define wxSUBRELEASE_NUMBER 0 +#define wxSUBRELEASE_NUMBER 1 #define wxVERSION_STRING wxT("wxWidgets 3.2.9") /* nothing to update below this line when updating the version */ From d99383b60dbb798199497d3f91f7086418aa16b2 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 7 Dec 2025 01:05:54 +0100 Subject: [PATCH 256/416] Relax configure check for EGL version to accept 1.4 This should have been part of a06400f9ae (Support EGL 1.4 instead of previously required 1.5, 2025-11-23). See #22325, #25986. (cherry picked from commit 3357d3f3255b8da17d18bbe31235b5ea1dfa9a48) --- configure | 24 ++++++++++++------------ configure.in | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 63a6a4882065..4460fa86e512 100755 --- a/configure +++ b/configure @@ -33182,12 +33182,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_EGL_CFLAGS="$EGL_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "egl >= 1.5") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "egl >= 1.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_EGL_CFLAGS=`$PKG_CONFIG --cflags "egl >= 1.5" 2>/dev/null` + pkg_cv_EGL_CFLAGS=`$PKG_CONFIG --cflags "egl >= 1.4" 2>/dev/null` else pkg_failed=yes fi @@ -33200,12 +33200,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_EGL_LIBS="$EGL_LIBS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "egl >= 1.5") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "egl >= 1.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_EGL_LIBS=`$PKG_CONFIG --libs "egl >= 1.5" 2>/dev/null` + pkg_cv_EGL_LIBS=`$PKG_CONFIG --libs "egl >= 1.4" 2>/dev/null` else pkg_failed=yes fi @@ -33224,22 +33224,22 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - EGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "egl >= 1.5"` + EGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "egl >= 1.4"` else - EGL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "egl >= 1.5"` + EGL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "egl >= 1.4"` fi # Put the nasty error message in config.log where it belongs echo "$EGL_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.5+ not available. Will use GLX." >&5 -$as_echo "$as_me: EGL 1.5+ not available. Will use GLX." >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.4+ not available. Will use GLX." >&5 +$as_echo "$as_me: EGL 1.4+ not available. Will use GLX." >&6;} elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.5+ not available. Will use GLX." >&5 -$as_echo "$as_me: EGL 1.5+ not available. Will use GLX." >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.4+ not available. Will use GLX." >&5 +$as_echo "$as_me: EGL 1.4+ not available. Will use GLX." >&6;} else diff --git a/configure.in b/configure.in index a5656ce430c4..57902fb324e5 100644 --- a/configure.in +++ b/configure.in @@ -3919,7 +3919,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then if test "$WXGTK3" = 1; then if test "$wxUSE_GLCANVAS_EGL" != "no"; then - PKG_CHECK_MODULES(EGL, [egl >= 1.5], + PKG_CHECK_MODULES(EGL, [egl >= 1.4], [ OPENGL_LIBS="$OPENGL_LIBS $EGL_LIBS" AC_DEFINE(wxUSE_GLCANVAS_EGL) @@ -3934,7 +3934,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then ) ], [ - AC_MSG_NOTICE([EGL 1.5+ not available. Will use GLX.]) + AC_MSG_NOTICE([EGL 1.4+ not available. Will use GLX.]) ] ) if test "$have_wayland" != 1; then From b7478d978200b2c06fadcddef3dc7fb555d13a4c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Dec 2025 16:43:26 +0100 Subject: [PATCH 257/416] Don't refresh empty rectangle in generic wxHeaderCtrl This is useless and just provides pixman warnings with wxGTK. (cherry picked from commit 9c1117eb81a66870eb73918724b2fab9eff7b678) --- src/generic/headerctrlg.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/generic/headerctrlg.cpp b/src/generic/headerctrlg.cpp index 79a31a0eb285..f58e6a854449 100644 --- a/src/generic/headerctrlg.cpp +++ b/src/generic/headerctrlg.cpp @@ -247,6 +247,8 @@ void wxHeaderCtrl::RefreshColsAfter(unsigned int idx) { wxRect rect = GetClientRect(); const int ofs = GetColStart(idx); + if ( ofs >= rect.width ) + return; rect.x += ofs; rect.width -= ofs; From 640bc610ec527418d539c73dea580c13870df31e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Dec 2025 20:33:21 +0100 Subject: [PATCH 258/416] Get rid of unused variable in wxHeaderCtrl::OnPaint() There is no need to have "count" when it's exactly the same as "m_numColumns". (cherry picked from commit 7e7604eb198e7f0716ff8d1c83b119743e8354aa) --- src/generic/headerctrlg.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/generic/headerctrlg.cpp b/src/generic/headerctrlg.cpp index f58e6a854449..5a11514d32ca 100644 --- a/src/generic/headerctrlg.cpp +++ b/src/generic/headerctrlg.cpp @@ -517,9 +517,8 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) // account for the horizontal scrollbar offset in the parent window dc.SetDeviceOrigin(m_scrollOffset, 0); - const unsigned int count = m_numColumns; int xpos = 0; - for ( unsigned int i = 0; i < count; i++ ) + for ( unsigned int i = 0; i < m_numColumns; i++ ) { const unsigned idx = m_colIndices[i]; const wxHeaderColumn& col = GetColumn(idx); @@ -559,7 +558,7 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) params.m_labelAlignment = col.GetAlignment(); #ifdef __WXGTK__ - if (i == count-1 && xpos + colWidth >= w) + if (i == m_numColumns - 1 && xpos + colWidth >= w) { state |= wxCONTROL_DIRTY; } From ff59392b37ed16b19aae320d5c00d13edd54dc16 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 Dec 2025 20:38:17 +0100 Subject: [PATCH 259/416] Optimize generic wxHeaderCtrl drawing and work around wxOSX bug Don't draw all the columns, there is no need to do it for those scrolled out of view. As a side effect, don't rely on wxDC::SetDeviceOrigin() for the coordinates translation but do it ourselves in the drawing code: this is pretty trivial in this case and avoids a bug in wxOSX which doesn't seem to honour device origin in its wxRendererNative implementation, somehow. See #26014, #26016. (cherry picked from commit 411430b835274bd234947adae467f2126210d6dd) --- docs/changes.txt | 1 + src/generic/headerctrlg.cpp | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1175f0dee6f0..2e4469a7342d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -302,6 +302,7 @@ wxOSX: - Fix regression with configure build under macOS < 12 (#25675). - Fix build under macOS 26 Tahoe (#25798). - Fix build problem with memset_s() with PCH enabled (#24687). +- Fix invisible labels in wxGrid with native header control (#26014). - Fix nested markup attributes handling (Václav Slavík, #25864). - Fix possible use of already destroyed wxTimers (Federico Perini, #25871). - Fix handling of multiple filters in wxFileDialog (#25918). diff --git a/src/generic/headerctrlg.cpp b/src/generic/headerctrlg.cpp index 5a11514d32ca..f6cf18e11026 100644 --- a/src/generic/headerctrlg.cpp +++ b/src/generic/headerctrlg.cpp @@ -514,10 +514,7 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) wxAutoBufferedPaintDC dc(this); dc.Clear(); - // account for the horizontal scrollbar offset in the parent window - dc.SetDeviceOrigin(m_scrollOffset, 0); - - int xpos = 0; + int xpos = m_scrollOffset; for ( unsigned int i = 0; i < m_numColumns; i++ ) { const unsigned idx = m_colIndices[i]; @@ -525,7 +522,14 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) if ( col.IsHidden() ) continue; - int colWidth = col.GetWidth(); + const int colWidth = col.GetWidth(); + if ( xpos + colWidth < 0 ) + { + // This column is not shown on screen because it is to the left of + // the shown area, don't bother drawing it. + xpos += colWidth; + continue; + } wxHeaderSortIconType sortArrow; if ( col.IsSortKey() ) @@ -575,6 +579,12 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) ); xpos += colWidth; + if ( xpos > w ) + { + // Next column and all the others are beyond the right border of + // the window, no need to continue. + break; + } } if (xpos < w) { From 18bf6488604eafc5cc0ec79890ddfdab3798a104 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 7 Dec 2025 23:59:42 +0100 Subject: [PATCH 260/416] Revert "Update full version to 3.2.9.1" This reverts commit d81b22eb8f8e7571164010e3754794f685e00dde because after thinking more about it, there is no real problem to use the same version for the final release as v3.2.9 release hasn't been really done yet. --- include/wx/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/wx/version.h b/include/wx/version.h index ed2d30a4e54c..773a61df29fe 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -28,7 +28,7 @@ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 #define wxRELEASE_NUMBER 9 -#define wxSUBRELEASE_NUMBER 1 +#define wxSUBRELEASE_NUMBER 0 #define wxVERSION_STRING wxT("wxWidgets 3.2.9") /* nothing to update below this line when updating the version */ From 8385ce21ae65732fc030e2ee86e5e2a94b53551f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 11 Dec 2025 19:05:13 +0100 Subject: [PATCH 261/416] Update version to 3.2.10 --- Makefile.in | 8 ++++---- build/bakefiles/version.bkl | 2 +- build/msw/makefile.gcc | 2 +- build/msw/makefile.vc | 2 +- build/msw/wx_setup.props | 2 +- build/osx/wxvers.xcconfig | 2 +- build/tools/msvs/getversion.bat | 2 +- configure | 20 ++++++++++---------- configure.in | 4 ++-- demos/bombs/Makefile.in | 2 +- demos/forty/Makefile.in | 2 +- demos/fractal/Makefile.in | 2 +- demos/life/Makefile.in | 2 +- demos/poem/Makefile.in | 2 +- docs/changes.txt | 4 ++++ docs/doxygen/Doxyfile | 2 +- docs/readme.txt | 10 +++++----- include/wx/osx/config_xcode.h | 4 ++-- include/wx/version.h | 4 ++-- samples/access/Makefile.in | 2 +- samples/animate/Makefile.in | 2 +- samples/artprov/Makefile.in | 2 +- samples/aui/Makefile.in | 2 +- samples/calendar/Makefile.in | 2 +- samples/caret/Makefile.in | 2 +- samples/clipboard/Makefile.in | 2 +- samples/collpane/Makefile.in | 2 +- samples/combo/Makefile.in | 2 +- samples/config/Makefile.in | 2 +- samples/dataview/Makefile.in | 2 +- samples/debugrpt/Makefile.in | 2 +- samples/dialogs/Makefile.in | 2 +- samples/dialup/Makefile.in | 2 +- samples/display/Makefile.in | 2 +- samples/dll/Makefile.in | 2 +- samples/dnd/Makefile.in | 2 +- samples/docview/Makefile.in | 2 +- samples/dragimag/Makefile.in | 2 +- samples/drawing/Makefile.in | 2 +- samples/erase/Makefile.in | 2 +- samples/event/Makefile.in | 2 +- samples/except/Makefile.in | 2 +- samples/exec/Makefile.in | 2 +- samples/font/Makefile.in | 2 +- samples/fswatcher/Makefile.in | 2 +- samples/grid/Makefile.in | 2 +- samples/help/Makefile.in | 2 +- samples/htlbox/Makefile.in | 2 +- samples/html/about/Makefile.in | 2 +- samples/html/help/Makefile.in | 2 +- samples/html/helpview/Makefile.in | 2 +- samples/html/printing/Makefile.in | 2 +- samples/html/test/Makefile.in | 2 +- samples/html/virtual/Makefile.in | 2 +- samples/html/widget/Makefile.in | 2 +- samples/html/zip/Makefile.in | 2 +- samples/image/Makefile.in | 2 +- samples/internat/Makefile.in | 2 +- samples/ipc/Makefile.in | 2 +- samples/joytest/Makefile.in | 2 +- samples/keyboard/Makefile.in | 2 +- samples/layout/Makefile.in | 2 +- samples/listctrl/Makefile.in | 2 +- samples/mdi/Makefile.in | 2 +- samples/mediaplayer/Makefile.in | 2 +- samples/memcheck/Makefile.in | 2 +- samples/menu/Makefile.in | 2 +- samples/minimal/Info_cocoa.plist | 8 ++++---- samples/minimal/Makefile.in | 2 +- samples/nativdlg/Makefile.in | 2 +- samples/notebook/Makefile.in | 2 +- samples/oleauto/Makefile.in | 2 +- samples/opengl/cube/Makefile.in | 2 +- samples/opengl/isosurf/Makefile.in | 2 +- samples/opengl/penguin/Makefile.in | 2 +- samples/opengl/pyramid/Makefile.in | 2 +- samples/ownerdrw/Makefile.in | 2 +- samples/popup/Makefile.in | 2 +- samples/power/Makefile.in | 2 +- samples/preferences/Makefile.in | 2 +- samples/printing/Makefile.in | 2 +- samples/propgrid/Makefile.in | 2 +- samples/regtest/Makefile.in | 2 +- samples/render/Makefile.in | 2 +- samples/ribbon/Makefile.in | 2 +- samples/richtext/Makefile.in | 2 +- samples/sashtest/Makefile.in | 2 +- samples/scroll/Makefile.in | 2 +- samples/shaped/Makefile.in | 2 +- samples/sockets/Makefile.in | 2 +- samples/sound/Makefile.in | 2 +- samples/splash/Makefile.in | 2 +- samples/splitter/Makefile.in | 2 +- samples/statbar/Makefile.in | 2 +- samples/stc/Makefile.in | 2 +- samples/svg/Makefile.in | 2 +- samples/taborder/Makefile.in | 2 +- samples/taskbar/Makefile.in | 2 +- samples/taskbarbutton/Makefile.in | 2 +- samples/text/Makefile.in | 2 +- samples/thread/Makefile.in | 2 +- samples/toolbar/Makefile.in | 2 +- samples/treectrl/Makefile.in | 2 +- samples/treelist/Makefile.in | 2 +- samples/typetest/Makefile.in | 2 +- samples/uiaction/Makefile.in | 2 +- samples/validate/Makefile.in | 2 +- samples/vscroll/Makefile.in | 2 +- samples/webrequest/Makefile.in | 2 +- samples/webview/Makefile.in | 2 +- samples/widgets/Makefile.in | 2 +- samples/wizard/Makefile.in | 2 +- samples/wrapsizer/Makefile.in | 2 +- samples/xrc/Makefile.in | 2 +- samples/xti/Makefile.in | 2 +- tests/Makefile.in | 2 +- tests/benchmarks/Makefile.in | 2 +- utils/helpview/src/Makefile.in | 2 +- utils/screenshotgen/src/Makefile.in | 2 +- 119 files changed, 144 insertions(+), 140 deletions(-) diff --git a/Makefile.in b/Makefile.in index b79d345eb907..b2f2d312009c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -82,7 +82,7 @@ wxCFLAGS_C99 = @wxCFLAGS_C99@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WXREGEX_CFLAGS = $(WX_CPPFLAGS) -DNDEBUG \ -I$(wx_top_builddir)/3rdparty/pcre/src -D__WX__ -DHAVE_CONFIG_H \ @@ -2216,7 +2216,7 @@ LOCALE_LINGUAS = af an ar ca ca@valencia co cs da de el es eu fa_IR fi fr gl_ES @COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX) @COND_USE_PLUGINS_0@PLUGIN_ADV_EXTRALIBS = $(EXTRALIBS_SDL) @COND_PLATFORM_MACOSX_1@WXMACVERSION_CMD = \ -@COND_PLATFORM_MACOSX_1@ -compatibility_version 5.0 -current_version 5.2 +@COND_PLATFORM_MACOSX_1@ -compatibility_version 5.0 -current_version 5.3 @COND_USE_GUI_0@PORTNAME = base @COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION) @COND_TOOLKIT_MAC@WXBASEPORT = _carbon @@ -13980,9 +13980,9 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0 \ @COND_USE_SOVERSION_0@dll___targetsuf2 = .$(SO_SUFFIX) @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@dll___targetsuf3 \ @COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \ -@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.4.2 +@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.4.3 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@dll___targetsuf3 \ -@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.4.2.$(SO_SUFFIX) +@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.4.3.$(SO_SUFFIX) @COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@dll___targetsuf3 = -0.$(SO_SUFFIX) @COND_USE_SOVERSION_0@dll___targetsuf3 = .$(SO_SUFFIX) @COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@dll___targetsuf3 = .$(SO_SUFFIX).0 diff --git a/build/bakefiles/version.bkl b/build/bakefiles/version.bkl index ef9f6696b69c..c2eba67482a1 100644 --- a/build/bakefiles/version.bkl +++ b/build/bakefiles/version.bkl @@ -23,7 +23,7 @@ changes, change C:R:A to C:R+1:A --> 4 - 2 + 3 4 diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 9b1721e06f3f..f37954a320b6 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -5989,7 +5989,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=9 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=10 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 4d00c12bdf62..5f29abc9c286 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -6456,7 +6456,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=9 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=10 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/wx_setup.props b/build/msw/wx_setup.props index 54c4b32d38c4..39d8f23808d3 100644 --- a/build/msw/wx_setup.props +++ b/build/msw/wx_setup.props @@ -5,7 +5,7 @@ - 329 + 3210 32 msw vc diff --git a/build/osx/wxvers.xcconfig b/build/osx/wxvers.xcconfig index 8e7b553232f7..e9f3ffe4fe28 100644 --- a/build/osx/wxvers.xcconfig +++ b/build/osx/wxvers.xcconfig @@ -1,4 +1,4 @@ // update this file with new version numbers DYLIB_COMPATIBILITY_VERSION = 3.2 -DYLIB_CURRENT_VERSION = 3.2.9 +DYLIB_CURRENT_VERSION = 3.2.10 diff --git a/build/tools/msvs/getversion.bat b/build/tools/msvs/getversion.bat index dbd9f35e3664..a95612769bca 100644 --- a/build/tools/msvs/getversion.bat +++ b/build/tools/msvs/getversion.bat @@ -1,3 +1,3 @@ set wxMAJOR_VERSION=3 set wxMINOR_VERSION=2 -set wxRELEASE_NUMBER=9 +set wxRELEASE_NUMBER=10 diff --git a/configure b/configure index 4460fa86e512..d2960ef361b6 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.9. +# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.10. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='wxWidgets' PACKAGE_TARNAME='wxwidgets' -PACKAGE_VERSION='3.2.9' -PACKAGE_STRING='wxWidgets 3.2.9' +PACKAGE_VERSION='3.2.10' +PACKAGE_STRING='wxWidgets 3.2.10' PACKAGE_BUGREPORT='wx-dev@googlegroups.com' PACKAGE_URL='' @@ -2012,7 +2012,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wxWidgets 3.2.9 to adapt to many kinds of systems. +\`configure' configures wxWidgets 3.2.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2082,7 +2082,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wxWidgets 3.2.9:";; + short | recursive ) echo "Configuration of wxWidgets 3.2.10:";; esac cat <<\_ACEOF @@ -2589,7 +2589,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wxWidgets configure 3.2.9 +wxWidgets configure 3.2.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3406,7 +3406,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wxWidgets $as_me 3.2.9, which was +It was created by wxWidgets $as_me 3.2.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3869,7 +3869,7 @@ fi wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=9 +wx_release_number=10 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number @@ -47006,7 +47006,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wxWidgets $as_me 3.2.9, which was +This file was extended by wxWidgets $as_me 3.2.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -47072,7 +47072,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wxWidgets config.status 3.2.9 +wxWidgets config.status 3.2.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 57902fb324e5..f43c9536752c 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- -AC_INIT([wxWidgets], [3.2.9], [wx-dev@googlegroups.com]) +AC_INIT([wxWidgets], [3.2.10], [wx-dev@googlegroups.com]) dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package AC_CONFIG_SRCDIR([wx-config.in]) @@ -40,7 +40,7 @@ dnl wx_release_number += 1 wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=9 +wx_release_number=10 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index d22d431f7c89..06662ef58778 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib BOMBS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index 5817bfcf3328..f6fe9d9a54c6 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib FORTY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index 30cbb1f0a7e9..4ce7dc5dd481 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib FRACTAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index e9fc065ccc6a..8a87e59da24f 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib LIFE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index 9d6485ded043..b7897aea1633 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WXPOEM_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/docs/changes.txt b/docs/changes.txt index 2e4469a7342d..5a4805229cc1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -249,6 +249,10 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. +3.2.10: (released 2026-??-??) +----------------------------- + + 3.2.9: (released 2025-12-12) ---------------------------- diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index bd6608468477..2ef2416ff013 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = wxWidgets -PROJECT_NUMBER = 3.2.9 +PROJECT_NUMBER = 3.2.10 PROJECT_BRIEF = PROJECT_LOGO = logo.png OUTPUT_DIRECTORY = out diff --git a/docs/readme.txt b/docs/readme.txt index c2def5e80d6b..53a6b5990125 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -wxWidgets 3.2.9 Release Notes +wxWidgets 3.2.10 Release Notes ============================= Welcome to the new stable release of wxWidgets, a free and open source @@ -16,7 +16,7 @@ more about wxWidgets at: Documentation is available online at: -* https://docs.wxwidgets.org/3.2.9/ +* https://docs.wxwidgets.org/3.2.10/ wxWidgets sources and binaries for the selected platforms are available for download from: @@ -25,9 +25,9 @@ download from: or, for a more more permanent but less convenient to use link, from -* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.9/ +* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.10/ -Please see https://docs.wxwidgets.org/3.2.9/overview_install.html for full +Please see https://docs.wxwidgets.org/3.2.10/overview_install.html for full installation instructions. @@ -61,7 +61,7 @@ Other changes include: Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.10/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x releases, so the existing applications don't even need to be rebuilt to profit from all the diff --git a/include/wx/osx/config_xcode.h b/include/wx/osx/config_xcode.h index 479767f3ec3a..16c351880128 100644 --- a/include/wx/osx/config_xcode.h +++ b/include/wx/osx/config_xcode.h @@ -121,9 +121,9 @@ #define PACKAGE_BUGREPORT "wx-dev@googlegroups.com" #define PACKAGE_NAME "wxWidgets" -#define PACKAGE_STRING "wxWidgets 3.2.9" +#define PACKAGE_STRING "wxWidgets 3.2.10" #define PACKAGE_TARNAME "wxwidgets" -#define PACKAGE_VERSION "3.2.9" +#define PACKAGE_VERSION "3.2.10" // for jpeg diff --git a/include/wx/version.h b/include/wx/version.h index 773a61df29fe..345bed17a4d0 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -27,9 +27,9 @@ /* NB: this file is parsed by automatic tools so don't change its format! */ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 -#define wxRELEASE_NUMBER 9 +#define wxRELEASE_NUMBER 10 #define wxSUBRELEASE_NUMBER 0 -#define wxVERSION_STRING wxT("wxWidgets 3.2.9") +#define wxVERSION_STRING wxT("wxWidgets 3.2.10") /* nothing to update below this line when updating the version */ /* ---------------------------------------------------------------------------- */ diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index 3f8746ef2ef4..e49a3bd30be1 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ACCESSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index 6bc726533f36..b5a0af9d5afa 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ANITEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index 14b6821cae6f..ae88bd4fe6eb 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ARTTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index fa4f99094608..b7cb28629654 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib AUIDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index e886feb88406..b690f59a7fc8 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib CALENDAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index 94dc3a8a9856..4178c4147b45 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib CARET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index 966856cd1e38..d4dfc2798202 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib CLIPBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index 8ece5a6c1aa3..0e109e87c799 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib COLLPANE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index 8976f1e116b8..06e0b8132bbe 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib COMBO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index fd1bb23541a7..dde34ba54c80 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib CONFTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index 610b06e890aa..fc307723ba78 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DATAVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index 8f2b008a0e7c..aaa99ed2d913 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DEBUGRPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index a6765635cd8e..d5b8f27e9a98 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DIALOGS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index 3f35a182beea..0f8f5813e804 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib NETTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index 63ceb9a38700..2d02786fe04a 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DISPLAY_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index 060992718ae8..d90a084a8bad 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -50,7 +50,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib MY_DLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index 101895f4610d..204eb17b2359 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index 4ac1ffc6447b..44d86b298745 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DOCVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index ba551fdd0521..853459ac6af4 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DRAGIMAG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index 622b8ab1ba9a..da872475ffbb 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib DRAWING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index 4c9aae6b218b..18f4e148a0c1 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ERASE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index 7cd8f5f6cce0..c61fc2d4c5d3 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib EVENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index e1ae13591694..fb7500e8c328 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib EXCEPT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index 5d118ecfa144..28d23d4a4bb1 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib EXEC_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index 91362a7d5e3f..4d334ff80ff3 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib FONT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index c8d994208da4..e8b00cf8c6ab 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib FSWATCHER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index 706541fba570..3d42aebbc240 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib GRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index 190482a66d91..0928c1da7db8 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib HELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index e3d8fb24bd49..d02bd9ae4651 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib HTLBOX_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index a8fda8cd744d..efdf6e8d4c88 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ABOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index e7409a2af481..075db78dc0fc 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib HTMLHELP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index 6bde0de46055..35252b2ded04 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 625d34dc6dc0..697dc1baceea 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib HTMLPRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index 5bf99799406c..2394ab50737f 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index 16d1295c1055..e2e29fab3833 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib VIRTUAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index 6fa1d70791af..e3f11f2ee78c 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WIDGET_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index d4c20beaac67..bb75fe5063f3 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ZIP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index 92c479b1e118..f6f2149183e9 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib IMAGE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index ae9a7f859b73..6d273776bf30 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib INTERNAT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index bea63e669566..4af4aa1a0f3b 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib IPCCLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index 646bc44fbd0d..2c095b48dc4f 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib JOYTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index bfb0776f9b00..283f53092b92 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib KEYBOARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index 37deca69d8d0..71af081cedee 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib LAYOUT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index 0525aae9da87..c19265424c28 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib LISTCTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index d1b9f3a83e74..a90a7101e1ce 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib MDI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index 9b1d609b4ceb..6126b013eb02 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib MEDIAPLAYER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index 7c9274cddb7b..e59c5ae6ab55 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib MEMCHECK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index 29ed46ea3e65..c542a7565a53 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib MENU_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 87ea951e888f..109b35f082bc 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.9, (c) 2005-2025 wxWidgets + $(PRODUCT_NAME) version 3.2.10, (c) 2005-2025 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,15 +15,15 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.9, (c) 2005-2025 wxWidgets + 3.2.10, (c) 2005-2025 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 3.2.9 + 3.2.10 CFBundleVersion - 3.2.9 + 3.2.10 NSHumanReadableCopyright Copyright 2005-2025 wxWidgets NSPrincipalClass diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index 14ddfff80395..6f82f33b1534 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib MINIMAL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index ffc6f4a2e462..946d32ae10d3 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib NATIVDLG_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index 95cef522c8e7..c2ef5a9c112f 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib NOTEBOOK_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index c88a029b69e2..79b81ce6ed00 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib OLEAUTO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index 4b29990e651b..5517058f80ca 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib CUBE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index c81b9726d7e0..cbe37be6dc4f 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib ISOSURF_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index bd25511c1535..ef07450d7bca 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib PENGUIN_CFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index b7830ef49f1e..80fac8ffa080 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib PYRAMID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index fe253f4f3dca..765525d50b5e 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib OWNERDRW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index 22b3cd5c6da0..69b1b84017fc 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib POPUP_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index 46380f48116d..4b3b3d486fe5 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib POWER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index 3d4e3a940d2d..5c39215384c3 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib PREFERENCES_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index 1e8b3313ae97..eb22ca7965df 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib PRINTING_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index 6cf662818dff..3f8499faf45e 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib PROPGRID_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index 7c0fd8608ce7..c2b8d389b631 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib REGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index 06288691e315..b01ed47f3c9a 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -53,7 +53,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 WX_RELEASE_NODOT = 32 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0) RENDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ diff --git a/samples/ribbon/Makefile.in b/samples/ribbon/Makefile.in index 03d2d20086e8..81b7e8aa0198 100644 --- a/samples/ribbon/Makefile.in +++ b/samples/ribbon/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib RIBBON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/richtext/Makefile.in b/samples/richtext/Makefile.in index 39071fd0585a..a564889273e6 100644 --- a/samples/richtext/Makefile.in +++ b/samples/richtext/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib RICHTEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in index d9c4eb712b9e..150ab8e59763 100644 --- a/samples/sashtest/Makefile.in +++ b/samples/sashtest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SASHTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/scroll/Makefile.in b/samples/scroll/Makefile.in index a0cbdfad8b00..febfebc0a51e 100644 --- a/samples/scroll/Makefile.in +++ b/samples/scroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SCROLL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/shaped/Makefile.in b/samples/shaped/Makefile.in index e31dc9a18535..96585ce9d7c4 100644 --- a/samples/shaped/Makefile.in +++ b/samples/shaped/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SHAPED_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sockets/Makefile.in b/samples/sockets/Makefile.in index 8bfa5db78eee..d6a76fc8cae0 100644 --- a/samples/sockets/Makefile.in +++ b/samples/sockets/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib CLIENT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/sound/Makefile.in b/samples/sound/Makefile.in index 5bb9d4b74e26..c17bb335d995 100644 --- a/samples/sound/Makefile.in +++ b/samples/sound/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SOUND_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splash/Makefile.in b/samples/splash/Makefile.in index 45ba21c4b4cc..8eba90592b5a 100644 --- a/samples/splash/Makefile.in +++ b/samples/splash/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SPLASH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index 195a93dfaa32..534a54421ea0 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SPLITTER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/statbar/Makefile.in b/samples/statbar/Makefile.in index 8f73fd63270f..6836165c2c1e 100644 --- a/samples/statbar/Makefile.in +++ b/samples/statbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib STATBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index 277fa04db451..25fc44989e60 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib STCTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index 5639715d00bb..a64e75333608 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SVGTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taborder/Makefile.in b/samples/taborder/Makefile.in index 832ed1f10cc4..0ac5f1c37c7b 100644 --- a/samples/taborder/Makefile.in +++ b/samples/taborder/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TABORDER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbar/Makefile.in b/samples/taskbar/Makefile.in index 47fa6ad745bf..264b41d48038 100644 --- a/samples/taskbar/Makefile.in +++ b/samples/taskbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TASKBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/taskbarbutton/Makefile.in b/samples/taskbarbutton/Makefile.in index a28471d47dcb..6763edb4a6d8 100644 --- a/samples/taskbarbutton/Makefile.in +++ b/samples/taskbarbutton/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TASKBARBUTTON_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in index 6c6187b82e4b..f02527cad280 100644 --- a/samples/text/Makefile.in +++ b/samples/text/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TEXT_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in index fbc9eaf1e642..1de2762630e2 100644 --- a/samples/thread/Makefile.in +++ b/samples/thread/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib THREAD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in index 64e62e3557ea..141d192defaf 100644 --- a/samples/toolbar/Makefile.in +++ b/samples/toolbar/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TOOLBAR_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in index 6ba19ebe5eaa..c17b28559273 100644 --- a/samples/treectrl/Makefile.in +++ b/samples/treectrl/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TREECTRL_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/treelist/Makefile.in b/samples/treelist/Makefile.in index 6f03adbaf8f1..779089c80bcf 100644 --- a/samples/treelist/Makefile.in +++ b/samples/treelist/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TREELIST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in index a8f756573b32..28ed01352e9f 100644 --- a/samples/typetest/Makefile.in +++ b/samples/typetest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TYPETEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/uiaction/Makefile.in b/samples/uiaction/Makefile.in index 067a2d4355ba..e79f14069dce 100644 --- a/samples/uiaction/Makefile.in +++ b/samples/uiaction/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib UIACTION_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in index 62cb885c5861..b1b6d222d06c 100644 --- a/samples/validate/Makefile.in +++ b/samples/validate/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib VALIDATE_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/vscroll/Makefile.in b/samples/vscroll/Makefile.in index ddf4bb0e3e09..8f8ad80f47ad 100644 --- a/samples/vscroll/Makefile.in +++ b/samples/vscroll/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib VSTEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webrequest/Makefile.in b/samples/webrequest/Makefile.in index b1b6ff9a2de1..a05a32701b01 100644 --- a/samples/webrequest/Makefile.in +++ b/samples/webrequest/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WEBREQUEST_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/webview/Makefile.in b/samples/webview/Makefile.in index eadc981e55ae..6c69e041de08 100644 --- a/samples/webview/Makefile.in +++ b/samples/webview/Makefile.in @@ -46,7 +46,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WEBVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index 3fbb975541bb..064a06c8938b 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WIDGETS_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wizard/Makefile.in b/samples/wizard/Makefile.in index b5d5cb8dbaaf..6708027138a2 100644 --- a/samples/wizard/Makefile.in +++ b/samples/wizard/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WIZARD_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/wrapsizer/Makefile.in b/samples/wrapsizer/Makefile.in index de4b1cdd60b2..591c713aed47 100644 --- a/samples/wrapsizer/Makefile.in +++ b/samples/wrapsizer/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib WRAPSIZER_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index eb8a299ff356..e02f25a50b35 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib XRCDEMO_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/xti/Makefile.in b/samples/xti/Makefile.in index 8630d0f915b6..04284f3eba74 100644 --- a/samples/xti/Makefile.in +++ b/samples/xti/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib XTI_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 794cdfbf8f5b..fcc04f93def4 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -52,7 +52,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = $(__test_PCH_INC) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in index 5d130b734985..208ab75044c4 100644 --- a/tests/benchmarks/Makefile.in +++ b/tests/benchmarks/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib BENCH_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/helpview/src/Makefile.in b/utils/helpview/src/Makefile.in index b9691b06ca1f..ed8ac8b1aa5a 100644 --- a/utils/helpview/src/Makefile.in +++ b/utils/helpview/src/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/utils/screenshotgen/src/Makefile.in b/utils/screenshotgen/src/Makefile.in index 26e8bbc9af99..5bb6c38e2f7b 100644 --- a/utils/screenshotgen/src/Makefile.in +++ b/utils/screenshotgen/src/Makefile.in @@ -49,7 +49,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.2 -WX_VERSION = $(WX_RELEASE).9 +WX_VERSION = $(WX_RELEASE).10 LIBDIRNAME = $(wx_top_builddir)/lib SCREENSHOTGEN_CXXFLAGS = $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ From 33178123ad0f79ff2751d38f0e066ce2ae9247f5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 14 Dec 2025 01:20:06 +0100 Subject: [PATCH 262/416] Record check sums for 3.2.9 release --- docs/release.md | 133 ++++++++++++++++++++++++++---------------------- 1 file changed, 71 insertions(+), 62 deletions(-) diff --git a/docs/release.md b/docs/release.md index a8059a2abf12..3f2d7b7cac94 100644 --- a/docs/release.md +++ b/docs/release.md @@ -19,14 +19,15 @@ Finally, Microsoft Windows users may download [Setup.exe file](https://github.co To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.9-Setup.exe - 0000000000000000000000000000000000000000 wxWidgets-3.2.9-docs-chm.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.9-docs-html.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.9-docs-html.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.9-headers.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.9.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.9.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.9.zip + fd1496375d93d5ad5c7861e6a3731f58cccafc9b wxMSW-3.2.9-Setup.exe + 5af41900f947deca7d81ebadda463262562c5c64 wxWidgets-3.2.9-docs-chm.zip + 28c6d56a43451379776116d5b2ac0ccd63ed9ad7 wxWidgets-3.2.9-docs-html.tar.bz2 + c6dc3b903fe5182176381156fcaff7b478ada05b wxWidgets-3.2.9-docs-html.zip + f6affb6e4dfd11f8dd3881c408e26759f8fdf472 wxWidgets-3.2.9-headers.7z + 927568479fef386a24196b4ba2d9229fdcdbbceb wxWidgets-3.2.9.7z + 1eb548171cef2e822a2577f09e5383643fb604ce wxWidgets-3.2.9.chm + 7708bfb796dbf8cad90e9cb6c8ad06d8e0a22c81 wxWidgets-3.2.9.tar.bz2 + b914bd955c9b72ac62f602add8fca4dc61727323 wxWidgets-3.2.9.zip ## Binaries @@ -58,60 +59,68 @@ End users may download one of `wxMSW-3.2.9_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.9_ To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc730_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc810_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1030TDM_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1220_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1320_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_gcc1420_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc90_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc100_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc110_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc120_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.9_vc14x_x64_ReleasePDB.7z + 687ed4d6a7b1dfdb310680cade550da204bff899 wxMSW-3.2.9_gcc1030TDM_Dev.7z + 22edf443395644da56d26ca6e9c533ff89553199 wxMSW-3.2.9_gcc1030TDM_ReleaseDLL.7z + f51cb8ffa18691d24f446a2e2be61d6776bdca6a wxMSW-3.2.9_gcc1030TDM_x64_Dev.7z + 3337905f470ad169d29c93380b699cc3cff6b747 wxMSW-3.2.9_gcc1030TDM_x64_ReleaseDLL.7z + c8566260f5699e55fe0cccbd425580e07d7d1560 wxMSW-3.2.9_gcc1220_Dev.7z + 350b4a03a3e1f79e943e6b80a064575625c2b6b4 wxMSW-3.2.9_gcc1220_ReleaseDLL.7z + 571ff6cf3493ab9ccf2809b63a3ebcbe92b1b34e wxMSW-3.2.9_gcc1220_x64_Dev.7z + ac347b5554dbdd36dab48f22617f6806f6bb64df wxMSW-3.2.9_gcc1220_x64_ReleaseDLL.7z + a665120e7ebbd7c07372cd24ed030e7aaa951fd4 wxMSW-3.2.9_gcc1320_Dev.7z + 990b20266dd627a241913fef81d343cbeb1c5dc7 wxMSW-3.2.9_gcc1320_ReleaseDLL.7z + 32057eac9dc39ab7cc5ba75b4cba1b9b83a28a3b wxMSW-3.2.9_gcc1320_x64_Dev.7z + 0575f3dc22e5e6101ac0f6bab94dccadab6620aa wxMSW-3.2.9_gcc1320_x64_ReleaseDLL.7z + b3cfa34c20c172e9cf323d37de40987e451a77c2 wxMSW-3.2.9_gcc1420_Dev.7z + f41e4374f229c5a11c41a45973d465479b685524 wxMSW-3.2.9_gcc1420_ReleaseDLL.7z + 4fa006f8405a8d082ec57a9c1bbc3908283a477c wxMSW-3.2.9_gcc1420_x64_Dev.7z + 95dcc6818dfe8e647b80c2fbbdb98f223a722a46 wxMSW-3.2.9_gcc1420_x64_ReleaseDLL.7z + 635b9b8d5a3c9ad9a41f9b6979f66e16301e96b1 wxMSW-3.2.9_gcc1520_Dev.7z + f491abb8d44595b273ac5bd9e1fac323560b57ab wxMSW-3.2.9_gcc1520_ReleaseDLL.7z + a48009378a775b70bbdfbd35f4ba65777fea652c wxMSW-3.2.9_gcc1520_x64_Dev.7z + 7cef71083b49f407cf43514e9eca0a761d6bc93f wxMSW-3.2.9_gcc1520_x64_ReleaseDLL.7z + ce4c47a3ae6ecc66fce4a674579524fc170e725c wxMSW-3.2.9_gcc730_Dev.7z + de891accf029ae486de94bfc9f9ab2a6190b314e wxMSW-3.2.9_gcc730_ReleaseDLL.7z + 3e7993c1ccd25b87825240379b7204a5a9713672 wxMSW-3.2.9_gcc730_x64_Dev.7z + 3726c9125f6d22794aa585c6599a232f6a74776f wxMSW-3.2.9_gcc730_x64_ReleaseDLL.7z + d8792a77465dc61e28520b41a77cde71782b21b9 wxMSW-3.2.9_gcc810_Dev.7z + 0584d566a425d1786b801c81cce06aabc517eafb wxMSW-3.2.9_gcc810_ReleaseDLL.7z + 4cf11517a03f31a82d1b524b334df530c89328cb wxMSW-3.2.9_gcc810_x64_Dev.7z + eabf7c92a18e99fbf8635d0d27b33fb1f68ec1ae wxMSW-3.2.9_gcc810_x64_ReleaseDLL.7z + 3cb7d6bbe2edf17333f058a9b332d7cb52935ed1 wxMSW-3.2.9_gcc1420UCRT_Dev.7z + 867309d9a2dcd76cbd3da979e0cd23d86c9815e4 wxMSW-3.2.9_gcc1420UCRT_ReleaseDLL.7z + 08a65f5328c4094caac4f21121a9e122e053319c wxMSW-3.2.9_gcc1420UCRT_x64_Dev.7z + 96ff9e21735271b593664e2a66935d17139f8d8f wxMSW-3.2.9_gcc1420UCRT_x64_ReleaseDLL.7z + 291a752b129ab0402b05bf55903cd5d146c9dcc8 wxMSW-3.2.9_vc90_Dev.7z + 358a6a130a666f34418e355cb3285171308788db wxMSW-3.2.9_vc90_ReleaseDLL.7z + 9dfdb9c29b44db342602f126fcfcf89fb42a3449 wxMSW-3.2.9_vc90_ReleasePDB.7z + 395a77ee037562d6b3ee4d3058c7f7a19be07317 wxMSW-3.2.9_vc90_x64_Dev.7z + f01a28ab360b45a6ec4e6a8f6c12bc3885188623 wxMSW-3.2.9_vc90_x64_ReleaseDLL.7z + 0615f4b87a5025427e485489647aefbdc6e4dbcf wxMSW-3.2.9_vc90_x64_ReleasePDB.7z + cdab5d7f2823520c4eb2752b397ff3b2655bed25 wxMSW-3.2.9_vc100_Dev.7z + 0c1f55d78ba08f9183fc22f1fbc20e9e63b7917f wxMSW-3.2.9_vc100_ReleaseDLL.7z + 1033a180ef969a78db845777512a123949619cdd wxMSW-3.2.9_vc100_ReleasePDB.7z + 11fe54100e160387da39b301c2c3586ffa4307fd wxMSW-3.2.9_vc100_x64_Dev.7z + af23db3147790a3d403d35626c872360d9c96a5b wxMSW-3.2.9_vc100_x64_ReleaseDLL.7z + 500725824dbe344e5878b4e7f93360da37c1f7ce wxMSW-3.2.9_vc100_x64_ReleasePDB.7z + 51fc9b4110fc4a62e3660897a0b7502b75af6157 wxMSW-3.2.9_vc110_Dev.7z + 1e9dc2379f1f867058d3eceb90937fbadacb6fc9 wxMSW-3.2.9_vc110_ReleaseDLL.7z + ddcfd404fd885dd69a599eb1ffdafc7df66bf675 wxMSW-3.2.9_vc110_ReleasePDB.7z + c9e264d6e3c1366e1a152d29def13f165090b857 wxMSW-3.2.9_vc110_x64_Dev.7z + fbfd3376d72b7435a2ea3afaec40e28ee9813f8c wxMSW-3.2.9_vc110_x64_ReleaseDLL.7z + 0aaf15fc56f622701f90a73f6ca34b46c8346573 wxMSW-3.2.9_vc110_x64_ReleasePDB.7z + 01608e5d06713899e1ba0937c608abebaf8117cc wxMSW-3.2.9_vc120_Dev.7z + 875ec678a0266e8de3be31750918432f15b2c237 wxMSW-3.2.9_vc120_ReleaseDLL.7z + 92268f98db7f733921acfb06e3a0e20fb4693f10 wxMSW-3.2.9_vc120_ReleasePDB.7z + 2538eec92411319861f056a05738e1f6c927af03 wxMSW-3.2.9_vc120_x64_Dev.7z + 98fa8b9322db4ea21bf51109bbd210b3bec5c2ff wxMSW-3.2.9_vc120_x64_ReleaseDLL.7z + b97324cd1462d808d5807292a1ff81760bd2b2ab wxMSW-3.2.9_vc120_x64_ReleasePDB.7z + 012d823743b35365cb7f81bdd9e2daeb7359ff69 wxMSW-3.2.9_vc14x_Dev.7z + c8a4c510d98801d8cce181baf7ed6235f443cd22 wxMSW-3.2.9_vc14x_ReleaseDLL.7z + b1b2f4af4c19f9058e89bc86988f90e86e640a5c wxMSW-3.2.9_vc14x_ReleasePDB.7z + d37898a5391c7b91d11e48d71b15d23b91859054 wxMSW-3.2.9_vc14x_x64_Dev.7z + 9056310a59ce80b9ed2f8a6b83febc753d246b69 wxMSW-3.2.9_vc14x_x64_ReleaseDLL.7z + 9f25af5cad3561b9becdad42eecee07ade22fd42 wxMSW-3.2.9_vc14x_x64_ReleasePDB.7z ## Reporting Problems From 2cfc293bac560d418a2192e4a0b784c87ec703ca Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 13 Dec 2025 23:37:43 +0100 Subject: [PATCH 263/416] Run wxMSW 64-bit CI builds on Debian stable Running them under "testing" is broken right now, this might be related to the MESA packages update from 25.2.6-1 (used by the latest good run) to 25.2.8-2+b2 (which fails now). (cherry picked from commit 35487b06a76de0f8887864cc361c89af8278bab2) --- .github/workflows/ci_msw_cross.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_msw_cross.yml b/.github/workflows/ci_msw_cross.yml index 7b3925a9a1ef..bcbf88b4ae88 100644 --- a/.github/workflows/ci_msw_cross.yml +++ b/.github/workflows/ci_msw_cross.yml @@ -71,7 +71,7 @@ jobs: matrix: include: - name: wxMSW 64 bits - debian_release: testing + debian_release: stable configure_flags: --enable-stl --disable-compat30 - name: wxMSW 32 bits # Testing doesn't have 32 bit support any more. From 8b6d46ef099aaa087fdf88e3aae729ed9d441593 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sun, 14 Dec 2025 11:07:25 -0500 Subject: [PATCH 264/416] Document wxObjectRefData as a typedef (vs class) While this is actually more true to reality, this also helps work around an issue with Doxygen 1.15.0 (and wxPython builds). See: https://github.com/doxygen/doxygen/issues/11889 See #26033. (cherry picked from commit cf49b6a220473e1acc3beea07daa2457462ff01c) --- interface/wx/object.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/wx/object.h b/interface/wx/object.h index 9fec9edb24dc..7cd13d96fdb9 100644 --- a/interface/wx/object.h +++ b/interface/wx/object.h @@ -5,7 +5,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -/** @class wxObjectRefData +/** @typedef wxObjectRefData This class is just a typedef to wxRefCounter and is used by wxObject. From ea45ac71c830616764a2195206a918bc8e719847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Mon, 29 Dec 2025 17:50:34 +0100 Subject: [PATCH 265/416] Fix wxChoice::GetBestSize() on macOS 26 See #26058. (cherry picked from commit 2707aa59b446e6738a563ad9b14fa9128aaa6d03) --- docs/changes.txt | 4 ++++ src/osx/choice_osx.cpp | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 5a4805229cc1..1d8e0911fdc7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.10: (released 2026-??-??) ----------------------------- +wxOSX: + +- Fix wxChoice default size under macOS 26 Tahoe (#26058). + 3.2.9: (released 2025-12-12) ---------------------------- diff --git a/src/osx/choice_osx.cpp b/src/osx/choice_osx.cpp index 6df17b34e51e..3db8110b860b 100644 --- a/src/osx/choice_osx.cpp +++ b/src/osx/choice_osx.cpp @@ -20,6 +20,8 @@ #endif #include "wx/osx/private.h" +#include "wx/osx/private/available.h" + wxChoice::~wxChoice() { @@ -244,8 +246,13 @@ wxSize wxChoice::DoGetBestSize() const // computed by the base class method to account for the arrow. const int lbHeight = wxWindow::DoGetBestSize().y; - return wxSize(wxChoiceBase::DoGetBestSize().x + 4*GetCharWidth(), - lbHeight); + int padding = 4 * GetCharWidth(); +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0 + if (WX_IS_MACOS_AVAILABLE(26, 0)) + padding += 2 * GetCharWidth() - 1; +#endif + + return wxSize(wxChoiceBase::DoGetBestSize().x + padding, lbHeight); } #endif // wxUSE_CHOICE From 73f6213c7c3e8a0615bf706cee31489d9b07922b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 1 Jan 2026 17:40:18 +0100 Subject: [PATCH 266/416] Update copyright years to 2026 Just run misc/scripts/inc_year and commit the results. See #18690. --- CMakeLists.txt | 2 +- build/bakefiles/mac_bundles.bkl | 6 +++--- demos/bombs/Makefile.in | 6 +++--- demos/forty/Makefile.in | 6 +++--- demos/fractal/Makefile.in | 6 +++--- demos/life/Makefile.in | 6 +++--- demos/poem/Makefile.in | 6 +++--- docs/doxygen/mainpages/copyright.h | 2 +- docs/doxygen/regen.sh | 2 +- interface/wx/aboutdlg.h | 2 +- interface/wx/generic/aboutdlgg.h | 2 +- samples/access/Makefile.in | 6 +++--- samples/animate/Makefile.in | 6 +++--- samples/artprov/Makefile.in | 6 +++--- samples/aui/Makefile.in | 6 +++--- samples/calendar/Makefile.in | 6 +++--- samples/caret/Makefile.in | 6 +++--- samples/clipboard/Makefile.in | 6 +++--- samples/collpane/Makefile.in | 6 +++--- samples/combo/Makefile.in | 6 +++--- samples/config/Makefile.in | 6 +++--- samples/dataview/Makefile.in | 6 +++--- samples/debugrpt/Makefile.in | 6 +++--- samples/dialogs/Makefile.in | 6 +++--- samples/dialogs/dialogs.cpp | 2 +- samples/dialup/Makefile.in | 6 +++--- samples/display/Makefile.in | 6 +++--- samples/dll/Makefile.in | 6 +++--- samples/dnd/Makefile.in | 6 +++--- samples/docview/Makefile.in | 6 +++--- samples/dragimag/Makefile.in | 6 +++--- samples/drawing/Makefile.in | 6 +++--- samples/erase/Makefile.in | 6 +++--- samples/event/Makefile.in | 6 +++--- samples/except/Makefile.in | 6 +++--- samples/exec/Makefile.in | 6 +++--- samples/font/Makefile.in | 6 +++--- samples/fswatcher/Makefile.in | 6 +++--- samples/grid/Makefile.in | 6 +++--- samples/help/Makefile.in | 6 +++--- samples/htlbox/Makefile.in | 6 +++--- samples/html/about/Makefile.in | 6 +++--- samples/html/help/Makefile.in | 6 +++--- samples/html/helpview/Makefile.in | 6 +++--- samples/html/printing/Makefile.in | 6 +++--- samples/html/test/Makefile.in | 6 +++--- samples/html/virtual/Makefile.in | 6 +++--- samples/html/widget/Makefile.in | 6 +++--- samples/html/zip/Makefile.in | 6 +++--- samples/image/Makefile.in | 6 +++--- samples/internat/Makefile.in | 6 +++--- samples/ipc/Makefile.in | 12 ++++++------ samples/joytest/Makefile.in | 6 +++--- samples/keyboard/Makefile.in | 6 +++--- samples/layout/Makefile.in | 6 +++--- samples/listctrl/Makefile.in | 6 +++--- samples/mdi/Makefile.in | 6 +++--- samples/mediaplayer/Makefile.in | 6 +++--- samples/memcheck/Makefile.in | 6 +++--- samples/menu/Makefile.in | 6 +++--- samples/minimal/Info_cocoa.plist | 6 +++--- samples/minimal/Makefile.in | 6 +++--- samples/nativdlg/Makefile.in | 6 +++--- samples/notebook/Makefile.in | 6 +++--- samples/oleauto/Makefile.in | 6 +++--- samples/opengl/cube/Makefile.in | 6 +++--- samples/opengl/isosurf/Makefile.in | 6 +++--- samples/opengl/penguin/Makefile.in | 6 +++--- samples/opengl/pyramid/Makefile.in | 6 +++--- samples/ownerdrw/Makefile.in | 6 +++--- samples/popup/Makefile.in | 6 +++--- samples/power/Makefile.in | 6 +++--- samples/preferences/Makefile.in | 6 +++--- samples/printing/Makefile.in | 6 +++--- samples/propgrid/Makefile.in | 6 +++--- samples/regtest/Makefile.in | 6 +++--- samples/render/Makefile.in | 6 +++--- samples/ribbon/Makefile.in | 6 +++--- samples/richtext/Makefile.in | 6 +++--- samples/sashtest/Makefile.in | 6 +++--- samples/scroll/Makefile.in | 6 +++--- samples/shaped/Makefile.in | 6 +++--- samples/sockets/Makefile.in | 12 ++++++------ samples/sound/Makefile.in | 6 +++--- samples/splash/Makefile.in | 6 +++--- samples/splitter/Makefile.in | 6 +++--- samples/statbar/Makefile.in | 6 +++--- samples/stc/Makefile.in | 6 +++--- samples/svg/Makefile.in | 6 +++--- samples/taborder/Makefile.in | 6 +++--- samples/taskbar/Makefile.in | 6 +++--- samples/taskbarbutton/Makefile.in | 6 +++--- samples/text/Makefile.in | 6 +++--- samples/thread/Makefile.in | 6 +++--- samples/toolbar/Makefile.in | 6 +++--- samples/treectrl/Makefile.in | 6 +++--- samples/treelist/Makefile.in | 6 +++--- samples/typetest/Makefile.in | 6 +++--- samples/uiaction/Makefile.in | 6 +++--- samples/validate/Makefile.in | 6 +++--- samples/vscroll/Makefile.in | 6 +++--- samples/webrequest/Makefile.in | 6 +++--- samples/webview/Makefile.in | 6 +++--- samples/widgets/Makefile.in | 6 +++--- samples/wizard/Makefile.in | 6 +++--- samples/wrapsizer/Makefile.in | 6 +++--- samples/xrc/Makefile.in | 6 +++--- samples/xti/Makefile.in | 6 +++--- src/common/utilscmn.cpp | 2 +- src/msw/version.rc | 2 +- tests/Makefile.in | 12 ++++++------ tests/benchmarks/Makefile.in | 12 ++++++------ utils/helpview/src/Makefile.in | 6 +++--- utils/screenshotgen/src/Makefile.in | 6 +++--- 114 files changed, 338 insertions(+), 338 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8bec92df372f..8b07f06964a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,7 +91,7 @@ math(EXPR wxSOVERSION_MAJOR "${WX_CURRENT} - ${WX_AGE}") set(wxSOVERSION ${wxSOVERSION_MAJOR}.${WX_AGE}.${WX_REVISION}) set(wxVERSION ${wxMAJOR_VERSION}.${wxMINOR_VERSION}.${wxRELEASE_NUMBER} CACHE INTERNAL "wxWidgets version") -set(wxCOPYRIGHT "2002-2025 wxWidgets" CACHE INTERNAL "wxWidgets copyright") +set(wxCOPYRIGHT "2002-2026 wxWidgets" CACHE INTERNAL "wxWidgets copyright") set(wxLANGUAGES C CXX) if(APPLE AND NOT CMAKE_VERSION VERSION_LESS "3.16") diff --git a/build/bakefiles/mac_bundles.bkl b/build/bakefiles/mac_bundles.bkl index 7db114670f20..17332aa31693 100644 --- a/build/bakefiles/mac_bundles.bkl +++ b/build/bakefiles/mac_bundles.bkl @@ -49,10 +49,10 @@ sed -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.$(id)/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_EXECUTABLE_NAME}/$(id)/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_BUNDLE_NAME}/$(id)/" \ - -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ + -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ - -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_INFO_STRING}/$(id) version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ - -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ + -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_INFO_STRING}/$(id) version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ + -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ $(BUNDLE_PLIST) >$(BUNDLE)/Info.plist diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index 06662ef58778..4647fea6e585 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -166,10 +166,10 @@ bombs$(EXEEXT): $(BOMBS_OBJECTS) $(__bombs___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.bombs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/bombs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/bombs/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bombs version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bombs version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >bombs.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index f6fe9d9a54c6..c4c49e758731 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -178,10 +178,10 @@ forty$(EXEEXT): $(FORTY_OBJECTS) $(__forty___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.forty/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/forty/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/forty/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/forty version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/forty version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >forty.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index 4ce7dc5dd481..062b765a0689 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -164,10 +164,10 @@ fractal$(EXEEXT): $(FRACTAL_OBJECTS) $(__fractal___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.fractal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/fractal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/fractal/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fractal version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fractal version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >fractal.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index 8a87e59da24f..c3794edb2cf9 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -167,10 +167,10 @@ life$(EXEEXT): $(LIFE_OBJECTS) $(__life___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.life/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/life/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/life/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/life version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/life version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >life.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index b7897aea1633..bf931fae89c0 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -168,10 +168,10 @@ wxpoem$(EXEEXT): $(WXPOEM_OBJECTS) $(__wxpoem___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wxpoem/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wxpoem/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wxpoem/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wxpoem version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wxpoem version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wxpoem.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/docs/doxygen/mainpages/copyright.h b/docs/doxygen/mainpages/copyright.h index 66dc8b9031aa..b95d66700d6e 100644 --- a/docs/doxygen/mainpages/copyright.h +++ b/docs/doxygen/mainpages/copyright.h @@ -11,7 +11,7 @@ @section section_copyright wxWidgets Copyrights and Licenses -Copyright (c) 1992-2025 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert +Copyright (c) 1992-2026 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert Roebling, and other members of the wxWidgets team, please see the acknowledgements section below. diff --git a/docs/doxygen/regen.sh b/docs/doxygen/regen.sh index a98d6f848942..0f1563eaeafe 100755 --- a/docs/doxygen/regen.sh +++ b/docs/doxygen/regen.sh @@ -215,7 +215,7 @@ if [[ "$1" = "docset" ]]; then $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetFeedURL $ATOMDIR/$ATOM $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetFallbackURL https://docs.wxwidgets.org $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetDescription "API reference and conceptual documentation for wxWidgets 3.0" - $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info NSHumanReadableCopyright "Copyright 1992-2025 wxWidgets team, Portions 1996 Artificial Intelligence Applications Institute" + $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info NSHumanReadableCopyright "Copyright 1992-2026 wxWidgets team, Portions 1996 Artificial Intelligence Applications Institute" $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info isJavaScriptEnabled true $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info dashIndexFilePath index.html $PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetPlatformFamily wx diff --git a/interface/wx/aboutdlg.h b/interface/wx/aboutdlg.h index b28b73a85fe6..0bc4ac1a4159 100644 --- a/interface/wx/aboutdlg.h +++ b/interface/wx/aboutdlg.h @@ -37,7 +37,7 @@ aboutInfo.SetName("MyApp"); aboutInfo.SetVersion(MY_APP_VERSION_STRING); aboutInfo.SetDescription(_("My wxWidgets-based application!")); - aboutInfo.SetCopyright("(C) 1992-2025"); + aboutInfo.SetCopyright("(C) 1992-2026"); aboutInfo.SetWebSite("http://myapp.org"); aboutInfo.AddDeveloper("My Self"); diff --git a/interface/wx/generic/aboutdlgg.h b/interface/wx/generic/aboutdlgg.h index 51331d7ad638..78276af6ee6d 100644 --- a/interface/wx/generic/aboutdlgg.h +++ b/interface/wx/generic/aboutdlgg.h @@ -34,7 +34,7 @@ aboutInfo.SetName("MyApp"); aboutInfo.SetVersion(MY_APP_VERSION_STRING); aboutInfo.SetDescription(_("My wxWidgets-based application!")); - aboutInfo.SetCopyright("(C) 1992-2025"); + aboutInfo.SetCopyright("(C) 1992-2026"); aboutInfo.SetWebSite("http://myapp.org"); aboutInfo.AddDeveloper("My Self"); diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index e49a3bd30be1..8afcdc78a3ba 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -164,10 +164,10 @@ accesstest$(EXEEXT): $(ACCESSTEST_OBJECTS) $(__accesstest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.accesstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/accesstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/accesstest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/accesstest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/accesstest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >accesstest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index b5a0af9d5afa..f08178b6aa11 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -164,10 +164,10 @@ anitest$(EXEEXT): $(ANITEST_OBJECTS) $(__anitest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.anitest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/anitest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/anitest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/anitest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/anitest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >anitest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index ae88bd4fe6eb..37882ddf8616 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -165,10 +165,10 @@ arttest$(EXEEXT): $(ARTTEST_OBJECTS) $(__arttest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.arttest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/arttest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/arttest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/arttest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/arttest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >arttest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index b7cb28629654..d94ea66fdb46 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -174,10 +174,10 @@ auidemo$(EXEEXT): $(AUIDEMO_OBJECTS) $(__auidemo___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.auidemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/auidemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/auidemo/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/auidemo version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/auidemo version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >auidemo.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index b690f59a7fc8..338dbae96db7 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -164,10 +164,10 @@ calendar$(EXEEXT): $(CALENDAR_OBJECTS) $(__calendar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.calendar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/calendar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/calendar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/calendar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/calendar version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >calendar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index 4178c4147b45..5df934931244 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -164,10 +164,10 @@ caret$(EXEEXT): $(CARET_OBJECTS) $(__caret___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.caret/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/caret/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/caret/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/caret version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/caret version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >caret.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index d4dfc2798202..602051582438 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -164,10 +164,10 @@ clipboard$(EXEEXT): $(CLIPBOARD_OBJECTS) $(__clipboard___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.clipboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/clipboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/clipboard/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/clipboard version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/clipboard version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >clipboard.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index 0e109e87c799..e6bff0efcd51 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -164,10 +164,10 @@ collpane$(EXEEXT): $(COLLPANE_OBJECTS) $(__collpane___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.collpane/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/collpane/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/collpane/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/collpane version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/collpane version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >collpane.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index 06e0b8132bbe..5c67988aef20 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -164,10 +164,10 @@ combo$(EXEEXT): $(COMBO_OBJECTS) $(__combo___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.combo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/combo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/combo/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/combo version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/combo version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >combo.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index dde34ba54c80..06b19b74e0f1 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -164,10 +164,10 @@ conftest$(EXEEXT): $(CONFTEST_OBJECTS) $(__conftest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.conftest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/conftest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/conftest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/conftest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/conftest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >conftest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index fc307723ba78..cf6f62b9832a 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -165,10 +165,10 @@ dataview$(EXEEXT): $(DATAVIEW_OBJECTS) $(__dataview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dataview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dataview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dataview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dataview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dataview version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dataview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index aaa99ed2d913..15e837ab608a 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -170,10 +170,10 @@ debugrpt$(EXEEXT): $(DEBUGRPT_OBJECTS) $(__debugrpt___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.debugrpt/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/debugrpt/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/debugrpt/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/debugrpt version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/debugrpt version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >debugrpt.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index d5b8f27e9a98..6a6f9d076a3d 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -173,10 +173,10 @@ dialogs$(EXEEXT): $(DIALOGS_OBJECTS) $(__dialogs___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dialogs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dialogs/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dialogs/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dialogs version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dialogs version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dialogs.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 99eddcaa24c0..53b2d53e4391 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -3437,7 +3437,7 @@ static void InitAboutInfoMinimal(wxAboutDialogInfo& info) wxVERSION_NUM_DOT_STRING )); info.SetDescription("This sample shows different wxWidgets dialogs"); - info.SetCopyright("(C) 1992-2025 wxWidgets dev team"); + info.SetCopyright("(C) 1992-2026 wxWidgets dev team"); info.AddDeveloper("Vadim Zeitlin"); } diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index 0f8f5813e804..52dc42a512b7 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -164,10 +164,10 @@ nettest$(EXEEXT): $(NETTEST_OBJECTS) $(__nettest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.nettest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/nettest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/nettest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nettest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nettest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >nettest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index 2d02786fe04a..c05c221cf38e 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -164,10 +164,10 @@ display$(EXEEXT): $(DISPLAY_OBJECTS) $(__display___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.display/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/display/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/display/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/display version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/display version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >display.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index d90a084a8bad..a9157aaf4eea 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -197,10 +197,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wx_exe/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wx_exe/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wx_exe/" \ -@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wx_exe version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wx_exe version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wx_exe.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_PLATFORM_WIN32_1_SHARED_0@ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index 204eb17b2359..135bd297f289 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -164,10 +164,10 @@ dnd$(EXEEXT): $(DND_OBJECTS) $(__dnd___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dnd/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dnd/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dnd/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dnd version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dnd version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dnd.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index 44d86b298745..02b4332f7dfa 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -169,10 +169,10 @@ docview$(EXEEXT): $(DOCVIEW_OBJECTS) $(__docview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.docview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/docview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/docview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/docview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/docview version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(srcdir)/Info.plist.in >docview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index 853459ac6af4..00594faa4a5b 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -164,10 +164,10 @@ dragimag$(EXEEXT): $(DRAGIMAG_OBJECTS) $(__dragimag___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.dragimag/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/dragimag/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/dragimag/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dragimag version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/dragimag version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >dragimag.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index da872475ffbb..c7b2db80b3c3 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -164,10 +164,10 @@ drawing$(EXEEXT): $(DRAWING_OBJECTS) $(__drawing___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.drawing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/drawing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/drawing/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/drawing version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/drawing version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >drawing.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index 18f4e148a0c1..287a529f6c41 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -164,10 +164,10 @@ erase$(EXEEXT): $(ERASE_OBJECTS) $(__erase___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.erase/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/erase/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/erase/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/erase version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/erase version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >erase.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index c61fc2d4c5d3..afbaa690920e 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -166,10 +166,10 @@ event$(EXEEXT): $(EVENT_OBJECTS) $(__event___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.event/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/event/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/event/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/event version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/event version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >event.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index fb7500e8c328..291a08fa7cdd 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -164,10 +164,10 @@ except$(EXEEXT): $(EXCEPT_OBJECTS) $(__except___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.except/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/except/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/except/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/except version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/except version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >except.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index 28d23d4a4bb1..4a33caffe6f8 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -164,10 +164,10 @@ exec$(EXEEXT): $(EXEC_OBJECTS) $(__exec___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.exec/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/exec/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/exec/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/exec version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/exec version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >exec.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index 4d334ff80ff3..bd135f953016 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -164,10 +164,10 @@ font$(EXEEXT): $(FONT_OBJECTS) $(__font___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.font/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/font/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/font/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/font version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/font version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >font.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index e8b00cf8c6ab..caf92da77872 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -164,10 +164,10 @@ fswatcher$(EXEEXT): $(FSWATCHER_OBJECTS) $(__fswatcher___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.fswatcher/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/fswatcher/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/fswatcher/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fswatcher version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/fswatcher version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >fswatcher.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index 3d42aebbc240..5985dfd2cf36 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -164,10 +164,10 @@ grid$(EXEEXT): $(GRID_OBJECTS) $(__grid___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.grid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/grid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/grid/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/grid version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/grid version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >grid.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index 0928c1da7db8..32d6397f1895 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -168,10 +168,10 @@ help$(EXEEXT): $(HELP_OBJECTS) $(__help___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.help/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/help/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/help/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/help version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/help version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >help.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index d02bd9ae4651..44bccde87639 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -168,10 +168,10 @@ htlbox$(EXEEXT): $(HTLBOX_OBJECTS) $(__htlbox___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.htlbox/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/htlbox/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/htlbox/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htlbox version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htlbox version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >htlbox.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index efdf6e8d4c88..465306bfa305 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -169,10 +169,10 @@ about$(EXEEXT): $(ABOUT_OBJECTS) $(__about___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.about/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/about/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/about/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/about version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/about version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >about.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index 075db78dc0fc..44a9ddf34f54 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -169,10 +169,10 @@ htmlhelp$(EXEEXT): $(HTMLHELP_OBJECTS) $(__htmlhelp___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.htmlhelp/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/htmlhelp/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/htmlhelp/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlhelp version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlhelp version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >htmlhelp.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index 35252b2ded04..6bb034b74024 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -169,10 +169,10 @@ helpview$(EXEEXT): $(HELPVIEW_OBJECTS) $(__helpview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/helpview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >helpview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 697dc1baceea..bab92e516cf2 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -174,10 +174,10 @@ htmlprinting$(EXEEXT): $(HTMLPRINTING_OBJECTS) $(__htmlprinting___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.htmlprinting/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/htmlprinting/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/htmlprinting/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlprinting version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/htmlprinting version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >htmlprinting.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index 2394ab50737f..42002fb88d77 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -172,10 +172,10 @@ test$(EXEEXT): $(TEST_OBJECTS) $(__test___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.test/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/test/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/test/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >test.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index e2e29fab3833..755e52afd6ed 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -169,10 +169,10 @@ virtual$(EXEEXT): $(VIRTUAL_OBJECTS) $(__virtual___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.virtual/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/virtual/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/virtual/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/virtual version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/virtual version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >virtual.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index e3f11f2ee78c..ccab4e06ac61 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -169,10 +169,10 @@ widget$(EXEEXT): $(WIDGET_OBJECTS) $(__widget___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.widget/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/widget/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/widget/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widget version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widget version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >widget.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index bb75fe5063f3..d96d45966d4f 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -169,10 +169,10 @@ zip$(EXEEXT): $(ZIP_OBJECTS) $(__zip___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.zip/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/zip/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/zip/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/zip version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/zip version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >zip.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index f6f2149183e9..1dac101496d3 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -165,10 +165,10 @@ image$(EXEEXT): $(IMAGE_OBJECTS) $(__image___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.image/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/image/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/image/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/image version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/image version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >image.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index 6d273776bf30..b7131363bf44 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -164,10 +164,10 @@ internat$(EXEEXT): $(INTERNAT_OBJECTS) $(__internat___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.internat/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/internat/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/internat/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/internat version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/internat version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(srcdir)/Info.plist.in >internat.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index 4af4aa1a0f3b..5d9e7ad8de82 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -213,10 +213,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ipcclient/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ipcclient/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ipcclient/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcclient version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcclient version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ipcclient.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -244,10 +244,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ipcserver/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ipcserver/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ipcserver/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcserver version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ipcserver version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ipcserver.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index 2c095b48dc4f..144063e601dc 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -164,10 +164,10 @@ joytest$(EXEEXT): $(JOYTEST_OBJECTS) $(__joytest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.joytest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/joytest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/joytest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/joytest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/joytest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >joytest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index 283f53092b92..b544e66b0643 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -164,10 +164,10 @@ keyboard$(EXEEXT): $(KEYBOARD_OBJECTS) $(__keyboard___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.keyboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/keyboard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/keyboard/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/keyboard version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/keyboard version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >keyboard.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index 71af081cedee..180bbd2faa85 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -164,10 +164,10 @@ layout$(EXEEXT): $(LAYOUT_OBJECTS) $(__layout___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.layout/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/layout/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/layout/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/layout version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/layout version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >layout.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index c19265424c28..cb98a994e1da 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -164,10 +164,10 @@ listctrl$(EXEEXT): $(LISTCTRL_OBJECTS) $(__listctrl___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.listctrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/listctrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/listctrl/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/listctrl version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/listctrl version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >listctrl.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index a90a7101e1ce..840c787e00d4 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -164,10 +164,10 @@ mdi$(EXEEXT): $(MDI_OBJECTS) $(__mdi___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.mdi/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/mdi/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/mdi/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mdi version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mdi version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >mdi.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index 6126b013eb02..3e1e52751d7d 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -171,10 +171,10 @@ mediaplayer$(EXEEXT): $(MEDIAPLAYER_OBJECTS) $(__mediaplayer___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.mediaplayer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/mediaplayer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/mediaplayer/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mediaplayer version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/mediaplayer version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >mediaplayer.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index e59c5ae6ab55..a82482b1a6b3 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -164,10 +164,10 @@ memcheck$(EXEEXT): $(MEMCHECK_OBJECTS) $(__memcheck___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.memcheck/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/memcheck/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/memcheck/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/memcheck version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/memcheck version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >memcheck.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index c542a7565a53..9c3078ef89be 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -164,10 +164,10 @@ menu$(EXEEXT): $(MENU_OBJECTS) $(__menu___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.menu/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/menu/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/menu/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/menu version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/menu version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >menu.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 109b35f082bc..31ace757b753 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.10, (c) 2005-2025 wxWidgets + $(PRODUCT_NAME) version 3.2.10, (c) 2005-2026 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.10, (c) 2005-2025 wxWidgets + 3.2.10, (c) 2005-2026 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType @@ -25,7 +25,7 @@ CFBundleVersion 3.2.10 NSHumanReadableCopyright - Copyright 2005-2025 wxWidgets + Copyright 2005-2026 wxWidgets NSPrincipalClass wxNSApplication LSMinimumSystemVersion diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index 6f82f33b1534..ec82e9410ba3 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -164,10 +164,10 @@ minimal$(EXEEXT): $(MINIMAL_OBJECTS) $(__minimal___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.minimal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/minimal/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/minimal/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/minimal version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/minimal version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >minimal.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index 946d32ae10d3..918e5defd6ff 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -164,10 +164,10 @@ nativdlg$(EXEEXT): $(NATIVDLG_OBJECTS) $(__nativdlg___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.nativdlg/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/nativdlg/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/nativdlg/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nativdlg version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/nativdlg version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >nativdlg.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index c2ef5a9c112f..bed0788c74c3 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -167,10 +167,10 @@ notebook$(EXEEXT): $(NOTEBOOK_OBJECTS) $(__notebook___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.notebook/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/notebook/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/notebook/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/notebook version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/notebook version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >notebook.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index 79b81ce6ed00..e0aacbbf7680 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -164,10 +164,10 @@ oleauto$(EXEEXT): $(OLEAUTO_OBJECTS) $(__oleauto___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.oleauto/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/oleauto/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/oleauto/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/oleauto version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/oleauto version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >oleauto.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index 5517058f80ca..10a201734e3b 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -167,10 +167,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.cube/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/cube/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/cube/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/cube version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/cube version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >cube.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index cbe37be6dc4f..afbeff4878f6 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -168,10 +168,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.isosurf/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/isosurf/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/isosurf/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/isosurf version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/isosurf version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >isosurf.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index ef07450d7bca..89e94018f8b1 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -179,10 +179,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.penguin/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/penguin/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/penguin/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/penguin version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/penguin version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >penguin.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index 80fac8ffa080..c9841c34c6a6 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -171,10 +171,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.pyramid/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/pyramid/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/pyramid/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/pyramid version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/pyramid version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >pyramid.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index 765525d50b5e..378efa27862e 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -164,10 +164,10 @@ ownerdrw$(EXEEXT): $(OWNERDRW_OBJECTS) $(__ownerdrw___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ownerdrw/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ownerdrw/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ownerdrw/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ownerdrw version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ownerdrw version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ownerdrw.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index 69b1b84017fc..1de92a058668 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -164,10 +164,10 @@ popup$(EXEEXT): $(POPUP_OBJECTS) $(__popup___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.popup/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/popup/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/popup/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/popup version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/popup version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >popup.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index 4b3b3d486fe5..e5637cd2fec9 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -164,10 +164,10 @@ power$(EXEEXT): $(POWER_OBJECTS) $(__power___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.power/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/power/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/power/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/power version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/power version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >power.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index 5c39215384c3..19d032464f9e 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -167,10 +167,10 @@ preferences$(EXEEXT): $(PREFERENCES_OBJECTS) $(__preferences___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.preferences/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/preferences/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/preferences/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/preferences version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/preferences version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >preferences.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index eb22ca7965df..8229c8aac00a 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -164,10 +164,10 @@ printing$(EXEEXT): $(PRINTING_OBJECTS) $(__printing___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.printing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/printing/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/printing/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/printing version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/printing version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >printing.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index 3f8499faf45e..4348cd8215d7 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -170,10 +170,10 @@ propgrid$(EXEEXT): $(PROPGRID_OBJECTS) $(__propgrid___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.propgrid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/propgrid/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/propgrid/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/propgrid version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/propgrid version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >propgrid.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index c2b8d389b631..df33c27c2e27 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -164,10 +164,10 @@ regtest$(EXEEXT): $(REGTEST_OBJECTS) $(__regtest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.regtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/regtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/regtest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/regtest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/regtest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >regtest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index b01ed47f3c9a..4048dcc59837 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -197,10 +197,10 @@ render$(EXEEXT): $(RENDER_OBJECTS) $(__render___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.render/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/render/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/render/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/render version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/render version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >render.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/ribbon/Makefile.in b/samples/ribbon/Makefile.in index 81b7e8aa0198..4bbdfebde502 100644 --- a/samples/ribbon/Makefile.in +++ b/samples/ribbon/Makefile.in @@ -167,10 +167,10 @@ ribbon$(EXEEXT): $(RIBBON_OBJECTS) $(__ribbon___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.ribbon/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/ribbon/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/ribbon/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ribbon version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/ribbon version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >ribbon.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/richtext/Makefile.in b/samples/richtext/Makefile.in index a564889273e6..73b2f96a985f 100644 --- a/samples/richtext/Makefile.in +++ b/samples/richtext/Makefile.in @@ -174,10 +174,10 @@ richtext$(EXEEXT): $(RICHTEXT_OBJECTS) $(__richtext___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.richtext/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/richtext/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/richtext/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/richtext version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/richtext version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >richtext.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in index 150ab8e59763..1a1703e1788c 100644 --- a/samples/sashtest/Makefile.in +++ b/samples/sashtest/Makefile.in @@ -164,10 +164,10 @@ sashtest$(EXEEXT): $(SASHTEST_OBJECTS) $(__sashtest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.sashtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/sashtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/sashtest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sashtest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sashtest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >sashtest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/scroll/Makefile.in b/samples/scroll/Makefile.in index febfebc0a51e..d851de847ee5 100644 --- a/samples/scroll/Makefile.in +++ b/samples/scroll/Makefile.in @@ -164,10 +164,10 @@ scroll$(EXEEXT): $(SCROLL_OBJECTS) $(__scroll___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.scroll/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/scroll/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/scroll/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/scroll version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/scroll version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >scroll.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/shaped/Makefile.in b/samples/shaped/Makefile.in index 96585ce9d7c4..4ba1816a24ed 100644 --- a/samples/shaped/Makefile.in +++ b/samples/shaped/Makefile.in @@ -164,10 +164,10 @@ shaped$(EXEEXT): $(SHAPED_OBJECTS) $(__shaped___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.shaped/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/shaped/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/shaped/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/shaped version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/shaped version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >shaped.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/sockets/Makefile.in b/samples/sockets/Makefile.in index d6a76fc8cae0..c08adc94dca0 100644 --- a/samples/sockets/Makefile.in +++ b/samples/sockets/Makefile.in @@ -211,10 +211,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.client/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/client/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/client/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/client version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/client version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >client.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -242,10 +242,10 @@ distclean: clean @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.server/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/server/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/server/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/server version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/server version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >server.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/samples/sound/Makefile.in b/samples/sound/Makefile.in index c17bb335d995..84941c3b9a82 100644 --- a/samples/sound/Makefile.in +++ b/samples/sound/Makefile.in @@ -164,10 +164,10 @@ sound$(EXEEXT): $(SOUND_OBJECTS) $(__sound___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.sound/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/sound/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/sound/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sound version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/sound version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >sound.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/splash/Makefile.in b/samples/splash/Makefile.in index 8eba90592b5a..74db1d430cce 100644 --- a/samples/splash/Makefile.in +++ b/samples/splash/Makefile.in @@ -168,10 +168,10 @@ splash$(EXEEXT): $(SPLASH_OBJECTS) $(__splash___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.splash/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/splash/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/splash/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splash version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splash version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >splash.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index 534a54421ea0..64a88c515a92 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -164,10 +164,10 @@ splitter$(EXEEXT): $(SPLITTER_OBJECTS) $(__splitter___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.splitter/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/splitter/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/splitter/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splitter version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/splitter version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >splitter.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/statbar/Makefile.in b/samples/statbar/Makefile.in index 6836165c2c1e..d81675faa167 100644 --- a/samples/statbar/Makefile.in +++ b/samples/statbar/Makefile.in @@ -164,10 +164,10 @@ statbar$(EXEEXT): $(STATBAR_OBJECTS) $(__statbar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.statbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/statbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/statbar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/statbar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/statbar version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >statbar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index 25fc44989e60..0c8d6f96e53a 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -170,10 +170,10 @@ stctest$(EXEEXT): $(STCTEST_OBJECTS) $(__stctest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.stctest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/stctest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/stctest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/stctest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/stctest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >stctest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index a64e75333608..7516f3770529 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -164,10 +164,10 @@ svgtest$(EXEEXT): $(SVGTEST_OBJECTS) $(__svgtest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.svgtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/svgtest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/svgtest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/svgtest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/svgtest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >svgtest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/taborder/Makefile.in b/samples/taborder/Makefile.in index 0ac5f1c37c7b..32355d81514a 100644 --- a/samples/taborder/Makefile.in +++ b/samples/taborder/Makefile.in @@ -164,10 +164,10 @@ taborder$(EXEEXT): $(TABORDER_OBJECTS) $(__taborder___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.taborder/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/taborder/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/taborder/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taborder version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taborder version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >taborder.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/taskbar/Makefile.in b/samples/taskbar/Makefile.in index 264b41d48038..48842aca1b45 100644 --- a/samples/taskbar/Makefile.in +++ b/samples/taskbar/Makefile.in @@ -164,10 +164,10 @@ taskbar$(EXEEXT): $(TASKBAR_OBJECTS) $(__taskbar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.taskbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/taskbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/taskbar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbar version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >taskbar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/taskbarbutton/Makefile.in b/samples/taskbarbutton/Makefile.in index 6763edb4a6d8..2079d321f55a 100644 --- a/samples/taskbarbutton/Makefile.in +++ b/samples/taskbarbutton/Makefile.in @@ -171,10 +171,10 @@ taskbarbutton$(EXEEXT): $(TASKBARBUTTON_OBJECTS) $(__taskbarbutton___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.taskbarbutton/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/taskbarbutton/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/taskbarbutton/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbarbutton version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/taskbarbutton version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >taskbarbutton.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in index f02527cad280..32100c6ec3aa 100644 --- a/samples/text/Makefile.in +++ b/samples/text/Makefile.in @@ -164,10 +164,10 @@ text$(EXEEXT): $(TEXT_OBJECTS) $(__text___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.text/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/text/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/text/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/text version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/text version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >text.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in index 1de2762630e2..585062e4a414 100644 --- a/samples/thread/Makefile.in +++ b/samples/thread/Makefile.in @@ -164,10 +164,10 @@ thread$(EXEEXT): $(THREAD_OBJECTS) $(__thread___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.thread/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/thread/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/thread/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/thread version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/thread version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >thread.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in index 141d192defaf..74058ff6e160 100644 --- a/samples/toolbar/Makefile.in +++ b/samples/toolbar/Makefile.in @@ -164,10 +164,10 @@ toolbar$(EXEEXT): $(TOOLBAR_OBJECTS) $(__toolbar___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.toolbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/toolbar/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/toolbar/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/toolbar version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/toolbar version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >toolbar.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in index c17b28559273..9e3563e9c769 100644 --- a/samples/treectrl/Makefile.in +++ b/samples/treectrl/Makefile.in @@ -164,10 +164,10 @@ treectrl$(EXEEXT): $(TREECTRL_OBJECTS) $(__treectrl___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.treectrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/treectrl/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/treectrl/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treectrl version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treectrl version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >treectrl.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/treelist/Makefile.in b/samples/treelist/Makefile.in index 779089c80bcf..ff2199299ff1 100644 --- a/samples/treelist/Makefile.in +++ b/samples/treelist/Makefile.in @@ -164,10 +164,10 @@ treelist$(EXEEXT): $(TREELIST_OBJECTS) $(__treelist___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.treelist/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/treelist/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/treelist/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treelist version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/treelist version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >treelist.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in index 28ed01352e9f..c7020f6a6032 100644 --- a/samples/typetest/Makefile.in +++ b/samples/typetest/Makefile.in @@ -164,10 +164,10 @@ typetest$(EXEEXT): $(TYPETEST_OBJECTS) $(__typetest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.typetest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/typetest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/typetest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/typetest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/typetest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >typetest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/uiaction/Makefile.in b/samples/uiaction/Makefile.in index e79f14069dce..034f5babaf49 100644 --- a/samples/uiaction/Makefile.in +++ b/samples/uiaction/Makefile.in @@ -164,10 +164,10 @@ uiaction$(EXEEXT): $(UIACTION_OBJECTS) $(__uiaction___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.uiaction/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/uiaction/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/uiaction/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/uiaction version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/uiaction version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >uiaction.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in index b1b6d222d06c..99abdad74f76 100644 --- a/samples/validate/Makefile.in +++ b/samples/validate/Makefile.in @@ -164,10 +164,10 @@ validate$(EXEEXT): $(VALIDATE_OBJECTS) $(__validate___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.validate/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/validate/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/validate/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/validate version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/validate version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >validate.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/vscroll/Makefile.in b/samples/vscroll/Makefile.in index 8f8ad80f47ad..73e799bd487a 100644 --- a/samples/vscroll/Makefile.in +++ b/samples/vscroll/Makefile.in @@ -164,10 +164,10 @@ vstest$(EXEEXT): $(VSTEST_OBJECTS) $(__vstest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.vstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/vstest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/vstest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/vstest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/vstest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >vstest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/webrequest/Makefile.in b/samples/webrequest/Makefile.in index a05a32701b01..34dfdb5cf18e 100644 --- a/samples/webrequest/Makefile.in +++ b/samples/webrequest/Makefile.in @@ -167,10 +167,10 @@ webrequest$(EXEEXT): $(WEBREQUEST_OBJECTS) $(__webrequest___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.webrequest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/webrequest/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/webrequest/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webrequest version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webrequest version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >webrequest.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/webview/Makefile.in b/samples/webview/Makefile.in index 6c69e041de08..e2cafc31a31b 100644 --- a/samples/webview/Makefile.in +++ b/samples/webview/Makefile.in @@ -172,10 +172,10 @@ webview$(EXEEXT): $(WEBVIEW_OBJECTS) $(__webview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.webview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/webview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/webview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/webview version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >webview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index 064a06c8938b..f77b9a8ef524 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -203,10 +203,10 @@ widgets$(EXEEXT): $(WIDGETS_OBJECTS) $(__widgets___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.widgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/widgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/widgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widgets version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/widgets version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >widgets.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/wizard/Makefile.in b/samples/wizard/Makefile.in index 6708027138a2..af1ba3cda923 100644 --- a/samples/wizard/Makefile.in +++ b/samples/wizard/Makefile.in @@ -164,10 +164,10 @@ wizard$(EXEEXT): $(WIZARD_OBJECTS) $(__wizard___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wizard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wizard/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wizard/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wizard version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wizard version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wizard.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/wrapsizer/Makefile.in b/samples/wrapsizer/Makefile.in index 591c713aed47..d66068d01b6f 100644 --- a/samples/wrapsizer/Makefile.in +++ b/samples/wrapsizer/Makefile.in @@ -164,10 +164,10 @@ wrapsizer$(EXEEXT): $(WRAPSIZER_OBJECTS) $(__wrapsizer___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.wrapsizer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/wrapsizer/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/wrapsizer/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wrapsizer version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/wrapsizer version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >wrapsizer.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index e02f25a50b35..d33fbd129b50 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -184,10 +184,10 @@ xrcdemo$(EXEEXT): $(XRCDEMO_OBJECTS) $(__xrcdemo___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.xrcdemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/xrcdemo/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/xrcdemo/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xrcdemo version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xrcdemo version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >xrcdemo.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/samples/xti/Makefile.in b/samples/xti/Makefile.in index 04284f3eba74..d649b74244ff 100644 --- a/samples/xti/Makefile.in +++ b/samples/xti/Makefile.in @@ -169,10 +169,10 @@ xti$(EXEEXT): $(XTI_OBJECTS) $(__xti___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.xti/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/xti/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/xti/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xti version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/xti version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >xti.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 09f2821ef8c7..f296fef048c4 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -1446,7 +1446,7 @@ wxVersionInfo wxGetLibraryVersionInfo() wxMINOR_VERSION, wxRELEASE_NUMBER, msg, - wxS("Copyright (c) 1992-2025 wxWidgets team")); + wxS("Copyright (c) 1992-2026 wxWidgets team")); } void wxInfoMessageBox(wxWindow* parent) diff --git a/src/msw/version.rc b/src/msw/version.rc index ca11aa6197e7..594e0c4de631 100644 --- a/src/msw/version.rc +++ b/src/msw/version.rc @@ -92,7 +92,7 @@ BEGIN VALUE "FileDescription", "wxWidgets " WXLIBDESC " library\0" VALUE "FileVersion", wxVERSION_NUM_DOT_STRING "\0" VALUE "InternalName", wxSTRINGIZE(WXDLLNAME) "\0" - VALUE "LegalCopyright", L"Copyright \xa9 1992-2025 wxWidgets development team\0" + VALUE "LegalCopyright", L"Copyright \xa9 1992-2026 wxWidgets development team\0" VALUE "OriginalFilename", wxSTRINGIZE(WXDLLNAME) ".dll\0" VALUE "ProductName", "wxWidgets\0" VALUE "ProductVersion", wxVERSION_NUM_DOT_STRING "\0" diff --git a/tests/Makefile.in b/tests/Makefile.in index fcc04f93def4..6071c5b449b7 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -498,10 +498,10 @@ test$(EXEEXT): $(TEST_OBJECTS) @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.test_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/test_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/test_gui/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_gui version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_gui version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >test_gui.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -531,10 +531,10 @@ test$(EXEEXT): $(TEST_OBJECTS) @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.test_allheaders/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/test_allheaders/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/test_allheaders/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_allheaders version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/test_allheaders version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >test_allheaders.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in index 208ab75044c4..13015df37a6e 100644 --- a/tests/benchmarks/Makefile.in +++ b/tests/benchmarks/Makefile.in @@ -229,10 +229,10 @@ data: @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.bench_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/bench_gui/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/bench_gui/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_gui version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_gui version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >bench_gui.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ @@ -259,10 +259,10 @@ data: @COND_PLATFORM_MACOSX_1_USE_GUI_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.bench_graphics/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/bench_graphics/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/bench_graphics/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_graphics version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/bench_graphics version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >bench_graphics.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1_USE_GUI_1@ diff --git a/utils/helpview/src/Makefile.in b/utils/helpview/src/Makefile.in index ed8ac8b1aa5a..b5fb34d25b08 100644 --- a/utils/helpview/src/Makefile.in +++ b/utils/helpview/src/Makefile.in @@ -175,10 +175,10 @@ helpview$(EXEEXT): $(HELPVIEW_OBJECTS) $(__helpview___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/helpview/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/helpview/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/helpview version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >helpview.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ diff --git a/utils/screenshotgen/src/Makefile.in b/utils/screenshotgen/src/Makefile.in index 5bb6c38e2f7b..99c191da8258 100644 --- a/utils/screenshotgen/src/Makefile.in +++ b/utils/screenshotgen/src/Makefile.in @@ -192,10 +192,10 @@ screenshotgen$(EXEEXT): $(SCREENSHOTGEN_OBJECTS) $(__screenshotgen___win32rc) @COND_PLATFORM_MACOSX_1@ sed -e "s/\$${MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.screenshotgen/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_EXECUTABLE_NAME}/screenshotgen/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_NAME}/screenshotgen/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/screenshotgen version $(WX_VERSION), (c) 2002-2025 wxWidgets/" \ -@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2025 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_INFO_STRING}/screenshotgen version $(WX_VERSION), (c) 2002-2026 wxWidgets/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2026 wxWidgets/" \ @COND_PLATFORM_MACOSX_1@ -e "s/\$${MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \ @COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >screenshotgen.app/Contents/Info.plist @COND_PLATFORM_MACOSX_1@ From 0d2c29beb3c88571f39148377d16f8e3025572b4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 2 Jan 2026 17:41:30 +0100 Subject: [PATCH 267/416] Don't use first image for wxListCtrl items without any image Native wxListCtrl in wxMSW behaved inconsistently with the generic one and used the first image for the new items inserted into it even if no image was explicitly specified. Work around this unhelpful native behaviour by using I_IMAGENONE for the items without images. See #26062. (cherry picked from commit 2ab82b5a2082d9c83ba5ff80e669c3f1cc3cb607) --- docs/changes.txt | 4 ++++ src/msw/listctrl.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 1d8e0911fdc7..6502269970bd 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,10 @@ Changes in behaviour which may result in build errors 3.2.10: (released 2026-??-??) ----------------------------- +wxMSW: + +- Don't use first image for wxListCtrl items without images (#26062). + wxOSX: - Fix wxChoice default size under macOS 26 Tahoe (#26058). diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 538a7af5986e..8c184cba9ef4 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -2002,6 +2002,16 @@ long wxListCtrl::InsertItem(const wxListItem& info) LV_ITEM item; wxConvertToMSWListItem(this, info, item); + + // When inserting items into a control with an image list, the first image + // is used by default, so we need to explicitly specify that we don't want + // any image if it wasn't set. + if ( !(item.mask & LVIF_IMAGE) ) + { + item.iImage = I_IMAGENONE; + item.mask |= LVIF_IMAGE; + } + item.mask &= ~LVIF_PARAM; // check whether we need to allocate our internal data From 833ac77842779d015d3c8f594fd69e7891d6c4f9 Mon Sep 17 00:00:00 2001 From: Lee Ockert Date: Fri, 2 Jan 2026 13:37:43 -0500 Subject: [PATCH 268/416] wxRichTextCtrl: Enhance macOS key bindings Update key bindings for macOS to more closely match native behavior. Currently, Cmd+Left goes to the left word boundary, and Cmd+Right goes to the right word boundary, like on Windows (wxWidgets treats Cmd on Mac as if it were Ctrl for keyboard modifier key purposes). Alt/Opt+Left and Alt/Opt+Right do nothing. This change maps Cmd+Left to the start of the line, and Cmd+Right to the end of the line. It also maps Alt/Opt+Left to WordLeft() and Alt/Opt+Right to WordRight(), which is conventional on native Cocoa controls (including other wxWidgets controls that map directly to Cocoa controls). See #26064, #26066. (cherry picked from commit 2048a6871ce838c387fe222231b531b3903bdb40) --- docs/changes.txt | 1 + src/richtext/richtextctrl.cpp | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 6502269970bd..bdd22e4c73bb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,7 @@ wxMSW: wxOSX: - Fix wxChoice default size under macOS 26 Tahoe (#26058). +- Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). 3.2.9: (released 2025-12-12) diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index d0ef3f1beddb..c8be107178ce 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -1675,8 +1675,10 @@ Left: left one character Right: right one character Up: up one line Down: down one line -Ctrl-Left: left one word -Ctrl-Right: right one word +Ctrl-Left: left one word (start of line on macOS) +Ctrl-Right: right one word (end of line on macOS) +Alt-Left: left one word (macOS only) +Alt-Right: right one word (macOS only) Ctrl-Up: previous paragraph start Ctrl-Down: next start of paragraph Home: start of line @@ -1704,17 +1706,35 @@ bool wxRichTextCtrl::KeyboardNavigate(int keyCode, int flags) if (keyCode == WXK_RIGHT || keyCode == WXK_NUMPAD_RIGHT) { +#ifdef __WXMAC__ + if (flags & wxRICHTEXT_CTRL_DOWN) + success = MoveToLineEnd(flags); + else if (flags & wxRICHTEXT_ALT_DOWN) + success = WordRight(1, flags); + else + success = MoveRight(1, flags); +#else if (flags & wxRICHTEXT_CTRL_DOWN) success = WordRight(1, flags); else success = MoveRight(1, flags); +#endif } else if (keyCode == WXK_LEFT || keyCode == WXK_NUMPAD_LEFT) { +#ifdef __WXMAC__ + if (flags & wxRICHTEXT_CTRL_DOWN) + success = MoveToLineStart(flags); + else if (flags & wxRICHTEXT_ALT_DOWN) + success = WordLeft(1, flags); + else + success = MoveLeft(1, flags); +#else if (flags & wxRICHTEXT_CTRL_DOWN) success = WordLeft(1, flags); else success = MoveLeft(1, flags); +#endif } else if (keyCode == WXK_UP || keyCode == WXK_NUMPAD_UP) { From cc1c23bf6c390feecbae274b3a250ebdc89b7146 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Wed, 7 Jan 2026 19:56:26 -0500 Subject: [PATCH 269/416] Handle font names longer than 31 characters in wxMSW Get the full font name using ::GetOutlineTextMetrics() if the name is exactly 31 characters long, as it may indicate that it was truncated to fit into LOGFONT::lfFaceName buffer which has fixed size of 32. This commit is best viewed with Git --color-moved option. See #25333, #26078. (cherry picked from commit c73b1b12e1ff4214e82b8e79829d05edd064514b) --- docs/changes.txt | 1 + include/wx/msw/private.h | 10 ++++++ src/msw/font.cpp | 77 ++++++++++++++++++++-------------------- src/msw/fontenum.cpp | 28 ++++++++++++--- 4 files changed, 73 insertions(+), 43 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index bdd22e4c73bb..597434662997 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -255,6 +255,7 @@ Changes in behaviour which may result in build errors wxMSW: - Don't use first image for wxListCtrl items without images (#26062). +- Handle font names longer than 31 characters (moi15moi, #25333). wxOSX: diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 38d940aa4bb1..653b59b519eb 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -1021,6 +1021,16 @@ WXDLLIMPEXP_CORE wxFont wxCreateFontFromLogFont(const LOGFONT *logFont); WXDLLIMPEXP_CORE void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont& the_font); WXDLLIMPEXP_CORE wxFontEncoding wxGetFontEncFromCharSet(int charset); +// Helper function to check if the facename might be truncated: if it is, +// wxGetMSWFaceNameFromHFONT() should be used to get the full name. +inline bool wxIsFaceNamePossiblyTruncated(const wxString& facename) +{ + return facename.size() == LF_FACESIZE - 1; +} + +// Get full face name (i.e. possibly longer than LF_FACESIZE) from an HFONT. +wxString wxGetMSWFaceNameFromHFONT(HFONT hFont); + inline void wxSetWindowFont(HWND hwnd, const wxFont& font) { ::SendMessage(hwnd, WM_SETFONT, diff --git a/src/msw/font.cpp b/src/msw/font.cpp index 434876939c5f..a37aec43a4aa 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -47,6 +47,43 @@ // the mask used to extract the pitch from LOGFONT::lfPitchAndFamily field static const int PITCH_MASK = FIXED_PITCH | VARIABLE_PITCH; +// ---------------------------------------------------------------------------- +// global functions implementation +// ---------------------------------------------------------------------------- + +wxString wxGetMSWFaceNameFromHFONT(HFONT hFont) +{ + ScreenHDC hdc; + SelectInHDC selectFont(hdc, hFont); + + UINT otmSize = GetOutlineTextMetrics(hdc, 0, NULL); + if ( !otmSize ) + { + wxLogLastError("GetOutlineTextMetrics(NULL)"); + return wxString(); + } + + OUTLINETEXTMETRIC * const + otm = static_cast(malloc(otmSize)); + wxON_BLOCK_EXIT1( free, otm ); + + otm->otmSize = otmSize; + if ( !GetOutlineTextMetrics(hdc, otmSize, otm) ) + { + wxLogLastError("GetOutlineTextMetrics()"); + return wxString(); + } + + // in spite of its type, the otmpFamilyName field of OUTLINETEXTMETRIC + // gives an offset in _bytes_ of the face (not family!) name from the + // struct start while the name itself is an array of TCHARs + // + // FWIW otmpFaceName contains the same thing as otmpFamilyName followed + // by a possible " Italic" or " Bold" or something else suffix + return reinterpret_cast(otm) + + wxPtrToUInt(otm->otmpFamilyName)/sizeof(wxChar); +} + // ---------------------------------------------------------------------------- // wxFontRefData - the internal description of the font // ---------------------------------------------------------------------------- @@ -117,9 +154,9 @@ class WXDLLEXPORT wxFontRefData: public wxGDIRefData wxString GetFaceName() const { wxString facename = m_nativeFontInfo.GetFaceName(); - if ( facename.empty() ) + if ( facename.empty() || wxIsFaceNamePossiblyTruncated(facename) ) { - facename = GetMSWFaceName(); + facename = wxGetMSWFaceNameFromHFONT((HFONT)GetHFONT()); if ( !facename.empty() ) { // cache the face name, it shouldn't change unless the family @@ -268,42 +305,6 @@ class WXDLLEXPORT wxFontRefData: public wxGDIRefData const_cast(this)->Alloc(); } - // retrieve the face name really being used by the font: this is used to - // get the face name selected by the system when we don't specify it (but - // use just the family for example) - wxString GetMSWFaceName() const - { - ScreenHDC hdc; - SelectInHDC selectFont(hdc, (HFONT)GetHFONT()); - - UINT otmSize = GetOutlineTextMetrics(hdc, 0, NULL); - if ( !otmSize ) - { - wxLogLastError("GetOutlineTextMetrics(NULL)"); - return wxString(); - } - - OUTLINETEXTMETRIC * const - otm = static_cast(malloc(otmSize)); - wxON_BLOCK_EXIT1( free, otm ); - - otm->otmSize = otmSize; - if ( !GetOutlineTextMetrics(hdc, otmSize, otm) ) - { - wxLogLastError("GetOutlineTextMetrics()"); - return wxString(); - } - - // in spite of its type, the otmpFamilyName field of OUTLINETEXTMETRIC - // gives an offset in _bytes_ of the face (not family!) name from the - // struct start while the name itself is an array of TCHARs - // - // FWIW otmpFaceName contains the same thing as otmpFamilyName followed - // by a possible " Italic" or " Bold" or something else suffix - return reinterpret_cast(otm) + - wxPtrToUInt(otm->otmpFamilyName)/sizeof(wxChar); - } - // are we using m_nativeFontInfo.lf.lfHeight for point size or pixel size? bool m_sizeUsingPixels; diff --git a/src/msw/fontenum.cpp b/src/msw/fontenum.cpp index 8ff003ff0794..0749690c7f77 100644 --- a/src/msw/fontenum.cpp +++ b/src/msw/fontenum.cpp @@ -155,6 +155,24 @@ void wxFontEnumeratorHelper::DoEnumerate() bool wxFontEnumeratorHelper::OnFont(const LPLOGFONT lf, const LPTEXTMETRIC tm) const { + wxString facename = lf->lfFaceName; + if ( facename.empty() || wxIsFaceNamePossiblyTruncated(facename) ) + { + AutoHFONT hFont(*lf); + if ( !hFont ) + { + wxLogLastError("CreateFontIndirect"); + } + else + { + const wxString fullname = wxGetMSWFaceNameFromHFONT(hFont); + if ( !fullname.empty() ) + { + facename = fullname; + } + } + } + if ( m_enumEncodings ) { // is this a new charset? @@ -165,13 +183,13 @@ bool wxFontEnumeratorHelper::OnFont(const LPLOGFONT lf, #if wxUSE_FONTMAP wxFontEncoding enc = wxGetFontEncFromCharSet(cs); - return m_fontEnum->OnFontEncoding(lf->lfFaceName, + return m_fontEnum->OnFontEncoding(facename, wxFontMapper::GetEncodingName(enc)); #else // !wxUSE_FONTMAP // Just use some unique and, hopefully, understandable, name. return m_fontEnum->OnFontEncoding ( - lf->lfFaceName, + facename, wxString::Format(wxS("Code page %d"), cs) ); #endif // wxUSE_FONTMAP/!wxUSE_FONTMAP @@ -207,17 +225,17 @@ bool wxFontEnumeratorHelper::OnFont(const LPLOGFONT lf, // we can get the same facename twice or more in this case because it // may exist in several charsets but we only want to return one copy of // it (note that this can't happen for m_charset != DEFAULT_CHARSET) - if ( m_facenames.Index(lf->lfFaceName) != wxNOT_FOUND ) + if ( m_facenames.Index(facename) != wxNOT_FOUND ) { // continue enumeration return true; } wxConstCast(this, wxFontEnumeratorHelper)-> - m_facenames.Add(lf->lfFaceName); + m_facenames.Add(facename); } - return m_fontEnum->OnFacename(lf->lfFaceName); + return m_fontEnum->OnFacename(facename); } // ---------------------------------------------------------------------------- From 5debc9542294e2c333bef9103aff870e53dd5a0c Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Wed, 14 Jan 2026 14:34:33 +0100 Subject: [PATCH 270/416] Ensure that application is always shown after launch under macOS Post dummy event from applicationDidFinishLaunching, otherwise on some macOS versions apps might not boot properly if no other events are happening. See #26095, #26098. (cherry picked from commit 2f89cd2d6c25dd9ae98a0f980c2e46d9465f8349) --- docs/changes.txt | 1 + src/osx/cocoa/utils.mm | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 597434662997..05a5a7bb0941 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -261,6 +261,7 @@ wxOSX: - Fix wxChoice default size under macOS 26 Tahoe (#26058). - Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). +- Show applications launched from keyboard under macOS 26 (#26095). 3.2.9: (released 2025-12-12) diff --git a/src/osx/cocoa/utils.mm b/src/osx/cocoa/utils.mm index 66d663325f83..aec782882512 100644 --- a/src/osx/cocoa/utils.mm +++ b/src/osx/cocoa/utils.mm @@ -78,6 +78,19 @@ - (void)applicationWillFinishLaunching:(NSNotification *)application - (void)applicationDidFinishLaunching:(NSNotification *)notification { wxUnusedVar(notification); + + // we must make sure, that there still is an event on the event queue + // otherwise stopping the event queue will not advance, because quitting only + // gets processed AFTER the handling of the current event + // see https://developer.apple.com/documentation/appkit/nsapplication/stop(_:)?language=objc + NSEvent *event = [NSEvent otherEventWithType:NSApplicationDefined + location:NSMakePoint(0.0, 0.0) + modifierFlags:0 + timestamp:0 + windowNumber:0 + context:nil + subtype:0 data1:0 data2:0]; + [NSApp postEvent:event atStart:FALSE]; [NSApp stop:nil]; wxTheApp->OSXOnDidFinishLaunching(); From bba76b7e071d86d95bbbd1f935aaf80c2faf4194 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 15 Jan 2026 18:33:23 +0100 Subject: [PATCH 271/416] Document actual behaviour of wxPoint ctor from wxRealPoint The changes of 1f7a8a8 (Round, rather than truncate, in wxSize and wxPoint operations, 2018-03-06) have invalidated the documentation that had been previously added in 4c20f3d (Document that wxPoint(wxRealPoint) ctor truncates, not rounds., 2013-04-16) to document the old behaviour. Changing the behaviour once again doesn't seem to be desirable, but at least synchronize the documentation with it again. See #26099. (cherry picked from commit eb64d55ea9d698a7044cb35d310306c26be9342f) --- docs/changes.txt | 3 +++ interface/wx/gdicmn.h | 10 ++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 05a5a7bb0941..eef616e90b7f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -162,6 +162,9 @@ Changes in behaviour not resulting in compilation errors - wxDateTime::ParseRfc822Date() now interprets a 2-digit year as 19xx, or 20xx for 00..29, whereas earlier e.g. 95 was interpreted literally as 95 AD. +- wxPoint ctor taking wxRealPoint now rounds its coordinates instead of + truncating them. + Changes in behaviour which may result in build errors ----------------------------------------------------- diff --git a/interface/wx/gdicmn.h b/interface/wx/gdicmn.h index 03b24b030e44..c185cb286955 100644 --- a/interface/wx/gdicmn.h +++ b/interface/wx/gdicmn.h @@ -673,14 +673,12 @@ class wxPoint Converts the given wxRealPoint (with floating point coordinates) to a wxPoint instance. - Notice that this truncates the floating point values of @a pt - components, if you want to round them instead you need to do it - manually, e.g. + Notice that since v3.1.2 the behaviour of this constructor has changed + to round the floating point values of @a pt components, if you want to + truncate them instead you need to do it manually, e.g. @code - #include // for wxRound() - wxRealPoint rp = ...; - wxPoint p(wxRound(rp.x), wxRound(rp.y)); + wxPoint p(static_cast(rp.x), static_cast(rp.y)); @endcode */ wxPoint(const wxRealPoint& pt); From 019bfa80d24311721a2606a42730b9b9f4e3f012 Mon Sep 17 00:00:00 2001 From: reid-p Date: Wed, 8 Jan 2025 02:33:23 +0100 Subject: [PATCH 272/416] Fix wx/stc/stc.h compilation with wxNO_IMPLICIT_WXSTRING_ENCODING Add missing wxASCII_STR() to the header template and regenerate the header itself. Closes #25047. (cherry picked from commit d44569d92f11c1a22528f793bcf33f1bc9b24541) --- include/wx/stc/stc.h | 4 ++-- src/stc/stc.h.in | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/wx/stc/stc.h b/include/wx/stc/stc.h index e165d730cd2f..e8ffd902a05a 100644 --- a/include/wx/stc/stc.h +++ b/include/wx/stc/stc.h @@ -2890,7 +2890,7 @@ class WXDLLIMPEXP_STC wxStyledTextCtrl : public wxControl, wxStyledTextCtrl(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxSTCNameStr); + const wxString& name = wxASCII_STR(wxSTCNameStr)); wxStyledTextCtrl() { m_swx = NULL; } ~wxStyledTextCtrl(); @@ -2899,7 +2899,7 @@ class WXDLLIMPEXP_STC wxStyledTextCtrl : public wxControl, bool Create(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxSTCNameStr); + const wxString& name = wxASCII_STR(wxSTCNameStr)); //---------------------------------------------------------------------- diff --git a/src/stc/stc.h.in b/src/stc/stc.h.in index 6011cf94c93a..509439c574a7 100644 --- a/src/stc/stc.h.in +++ b/src/stc/stc.h.in @@ -175,7 +175,7 @@ public: wxStyledTextCtrl(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxSTCNameStr); + const wxString& name = wxASCII_STR(wxSTCNameStr)); wxStyledTextCtrl() { m_swx = NULL; } ~wxStyledTextCtrl(); @@ -184,7 +184,7 @@ public: bool Create(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxSTCNameStr); + const wxString& name = wxASCII_STR(wxSTCNameStr)); //---------------------------------------------------------------------- From 86a18682e06bed58ac8368769ab0cdeb70a3c416 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 8 Jan 2025 03:11:24 +0100 Subject: [PATCH 273/416] Avoid clang -Wshorten-64-to-32 in wx/stc/stc.h Add another cast (not ideal, but there are already plenty of them here) and use "long", rather than "int", for a variable to avoid these (harmless, because there is no real risk of truncation here) warnings. (cherry picked from commit 3690511994ed9cfb011b7aa5282f56eb28db0adf) --- include/wx/stc/stc.h | 4 ++-- src/stc/stc.h.in | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/wx/stc/stc.h b/include/wx/stc/stc.h index e8ffd902a05a..d5bca7c3b956 100644 --- a/include/wx/stc/stc.h +++ b/include/wx/stc/stc.h @@ -5392,7 +5392,7 @@ class WXDLLIMPEXP_STC wxStyledTextCtrl : public wxControl, if ( pos == -1 ) return -1; - if ( x >= LineLength(y) ) + if ( x >= LineLength((int)y) ) return -1; pos += x; @@ -5405,7 +5405,7 @@ class WXDLLIMPEXP_STC wxStyledTextCtrl : public wxControl, if ( l == -1 ) return false; - int lx = pos - PositionFromLine(l); + long lx = pos - PositionFromLine(l); if ( lx >= LineLength(l) ) return false; diff --git a/src/stc/stc.h.in b/src/stc/stc.h.in index 509439c574a7..81c90191d975 100644 --- a/src/stc/stc.h.in +++ b/src/stc/stc.h.in @@ -510,7 +510,7 @@ public: if ( pos == -1 ) return -1; - if ( x >= LineLength(y) ) + if ( x >= LineLength((int)y) ) return -1; pos += x; @@ -523,7 +523,7 @@ public: if ( l == -1 ) return false; - int lx = pos - PositionFromLine(l); + long lx = pos - PositionFromLine(l); if ( lx >= LineLength(l) ) return false; From 638495bcec52132d461eb634a124e80148af46ad Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 8 Jan 2025 02:35:02 +0100 Subject: [PATCH 274/416] Test wx/stc/stc.h in the "all headers" test too Ensure that the problem like the one fixed by the previous commit doesn't happen again. See #25047. (cherry picked from commit e211f6f794e6adfc1d7fa1c9dd439934c9c71ad3) --- tests/allheaders.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/allheaders.h b/tests/allheaders.h index 663a1b00b247..83621b2f6d8b 100644 --- a/tests/allheaders.h +++ b/tests/allheaders.h @@ -321,6 +321,7 @@ #include #include #include +#include #include #include #include From 2f9d71586bfb7a187f50c7e5cb0f0253f91a9406 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:48:28 -0500 Subject: [PATCH 275/416] Fix multiline raw string syntax in gen_iface.py Add `r` prefix in front of each segment of raw string; otherwise, these segments aren't seen as raw strings. See #25012. (cherry picked from commit 113acd2673756a589fff6b4fff3850c9247da987) --- src/stc/gen_iface.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/stc/gen_iface.py b/src/stc/gen_iface.py index db88540bfd93..57f4d0126f89 100755 --- a/src/stc/gen_iface.py +++ b/src/stc/gen_iface.py @@ -1437,10 +1437,10 @@ def parseVal(line, values, docs, icat): #---------------------------------------------------------------------------- funregex = re.compile(r'\s*([a-zA-Z0-9_]+)' # return type - '\s+([a-zA-Z0-9_]+)=' # name= - '([0-9]+)' # number - '\(([ a-zA-Z0-9_]*),' # (param, - '([ a-zA-Z0-9_]*),*\)') # param) + r'\s+([a-zA-Z0-9_]+)=' # name= + r'([0-9]+)' # number + r'\(([ a-zA-Z0-9_]*),' # (param, + r'([ a-zA-Z0-9_]*),*\)') # param) def parseFun(line, methods, docs, values, is_const, msgcodes, icat): def parseParam(param): From c2f6005452c035b23a4872690178be8fbf9f52f5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 24 Jan 2026 20:05:35 +0100 Subject: [PATCH 276/416] Regenerate interface docs for wxSTC after gen_iface.py fix This fixes member groups comments. --- interface/wx/stc/stc.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/interface/wx/stc/stc.h b/interface/wx/stc/stc.h index 3ba0111d6f18..dac632b9b3d8 100644 --- a/interface/wx/stc/stc.h +++ b/interface/wx/stc/stc.h @@ -2845,7 +2845,7 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry // Ctor, etc // ---------------------------------------------- ///@member_group_name{ctor, Constructors and related methods} - //@{ + ///@{ /** Ctor. @@ -2872,7 +2872,7 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxSTCNameStr); - //@} + ///@} // Scintilla methods (generated by gen_iface.py) @@ -7195,7 +7195,7 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry In addition to the standard Scintilla functions, wxStyledTextCtrl includes the following functions to simplify some tasks. */ - //@{ + ///@{ /** Returns the line number of the line with the caret. @@ -7345,7 +7345,7 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry */ void RegisterImage(int type, const wxBitmap& bmp); - //@} + ///@} // Raw versions @@ -7356,7 +7356,7 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry These methods allow data to be sent to or received from the control using character buffers instead of using a wxString. */ - //@{ + ///@{ /** Add text to the document at current position. @@ -7457,13 +7457,13 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry */ int ReplaceTargetRERaw(const char* text, int length=-1); - //@} + ///@} // wxTextEntryBase pure virtual methods // ---------------------------------------------- ///@member_group_name{text_entry, Text entry methods} - //@{ + ///@{ /** Writes the text into the text control at the current insertion position. @@ -7626,13 +7626,13 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry */ virtual void SetEditable(bool editable); - //@} + ///@} // wxTextAreaBase pure virtual methods // --------------------------------------------- ///@member_group_name{text_area, Text area methods} - //@{ + ///@{ /** Gets the length of the specified line, not including any trailing @@ -7813,7 +7813,7 @@ class wxStyledTextCtrl : public wxControl, public wxTextEntry virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt, wxTextCoord *col, wxTextCoord *row) const; - //@} + ///@} // VersionInfo From 01752e95a4fd4f73eaf2d28feb0237d79ae9e7ad Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 25 Jan 2026 01:43:52 +0100 Subject: [PATCH 277/416] Improve documentation of null wxDialog parent Mention wxDIALOG_NO_PARENT in the documentation of the parent parameter as people who don't know about this style are not going to see this style documentation either. See #23560. (cherry picked from commit 8245e1073ae66fd246d2ec180160d2e20acf3644) --- interface/wx/dialog.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/wx/dialog.h b/interface/wx/dialog.h index 0b945a9dee8c..e3b12b29bb0d 100644 --- a/interface/wx/dialog.h +++ b/interface/wx/dialog.h @@ -161,7 +161,10 @@ class wxDialog : public wxTopLevelWindow Constructor. @param parent - Can be @NULL, a frame or another dialog box. + Can be @NULL, a frame or another dialog box. Please note that when + the parent is @NULL, the dialog will be owned by the application's + top window, if any. Use ::wxDIALOG_NO_PARENT style to really make + dialog not owned by any window. @param id An identifier for the dialog. A value of -1 is taken to mean a default. From d6cd26e15c6f6f70c6af621f5fd32befa4f74295 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 22 Jan 2026 01:23:24 +0100 Subject: [PATCH 278/416] Fix wrong destruction of wxBitmap in wxMSW wxStaticBitmap Due to a regression introduced in 3e32a9abe1 (Don't bother resetting wxStaticBitmap image when destroying it, 2025-06-12), which was part of #25518, the handle of wxBitmap passed to wxStaticBitmap::SetBitmap() was destroyed when another bitmap was passed to SetBitmap() later. Fix this by ensuring that we don't overwrite the value of the current handle (to be deleted) prematurely in DoUpdateImage(). See #26106, #26110. (cherry picked from commit d662d5f6a06b9ba802fc0a4f17019164d35275f5) --- docs/changes.txt | 1 + src/msw/statbmp.cpp | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index eef616e90b7f..f47e9e2376db 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -258,6 +258,7 @@ Changes in behaviour which may result in build errors wxMSW: - Don't use first image for wxListCtrl items without images (#26062). +- Fix regression in wxStaticBitmap::SetBitmap() in 3.2.9 (#26106). - Handle font names longer than 31 characters (moi15moi, #25333). wxOSX: diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp index c75e7a7fed8f..f2c0ff2eed65 100644 --- a/src/msw/statbmp.cpp +++ b/src/msw/statbmp.cpp @@ -231,6 +231,7 @@ void wxStaticBitmap::DoUpdateImage(const wxSize& sizeOld, bool wasIcon) // For the icons we just use its HICON directly, but for bitmaps we create // our own temporary bitmap and need to delete its handle manually later. + WXHANDLE currentHandle = 0; if ( !m_icon.IsOk() ) { wxBitmap bitmap = m_bitmapBundle.GetBitmapFor(this); @@ -244,8 +245,8 @@ void wxStaticBitmap::DoUpdateImage(const wxSize& sizeOld, bool wasIcon) { // For bitmap with alpha channel create temporary DIB with // not-premultiplied alpha values. - m_currentHandle = wxDIB(bitmap.ConvertToImage(), - wxDIB::PixelFormat_NotPreMultiplied) + currentHandle = wxDIB(bitmap.ConvertToImage(), + wxDIB::PixelFormat_NotPreMultiplied) .Detach(); m_ownsCurrentHandle = true; } @@ -266,14 +267,14 @@ void wxStaticBitmap::DoUpdateImage(const wxSize& sizeOld, bool wasIcon) // Just use the HBITMAP as is, but also make a copy of the bitmap // to ensure that HBITMAP remains valid for as long as we need it m_bitmap = bitmap; - m_currentHandle = bitmap.GetHandle(); + currentHandle = bitmap.GetHandle(); } } const bool isIcon = m_icon.IsOk(); if ( isIcon ) { - m_currentHandle = m_icon.GetHandle(); + currentHandle = m_icon.GetHandle(); } if ( isIcon != wasIcon ) @@ -287,18 +288,22 @@ void wxStaticBitmap::DoUpdateImage(const wxSize& sizeOld, bool wasIcon) // Update the handle used by the native control. const WPARAM imageType = m_icon.IsOk() ? IMAGE_ICON : IMAGE_BITMAP; - const HGDIOBJ currentHandle = (HGDIOBJ)m_currentHandle; const HGDIOBJ oldHandle = (HGDIOBJ) ::SendMessage(GetHwnd(), STM_SETIMAGE, imageType, (LPARAM)currentHandle); // detect if this is still the handle we passed before or // if the static-control made a copy of the bitmap! - if ( oldHandle != 0 && oldHandle != currentHandle ) + if ( oldHandle != 0 && oldHandle != m_currentHandle ) { // the static control made a copy and we are responsible for deleting it ::DeleteObject(oldHandle); } + // Note that m_currentHandle must be changed after comparing its previous + // value with oldHandle above and before possibly freeing it in the call to + // Free() below. + m_currentHandle = currentHandle; + // Also check if we need to keep our current handle, it may be unnecessary // if the native control doesn't actually use it. const HGDIOBJ newHandle = (HGDIOBJ) From 2ebaa0aee627012e127081e4f979a20e229d8dad Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 28 Jan 2026 01:19:06 +0100 Subject: [PATCH 279/416] Back port macOS 26 controls fixes from 3.3 Fixes for controls appearance under macOS 26 Tahoe and also some fixes to their sizes under the previous macOS versions. (cherry picked from commit b6f1b6d8891f8066cced8092bf7e3d11913f70c0) See #25767. Closes #26121. Co-Authored-By: Richard <61946508+nobugshere@users.noreply.github.com> --- docs/changes.txt | 2 +- include/wx/osx/cocoa/private.h | 2 + include/wx/osx/core/private.h | 2 + include/wx/osx/window.h | 3 ++ include/wx/platform.h | 3 ++ src/generic/spinctlg.cpp | 16 +++++-- src/osx/carbon/frame.cpp | 12 ++++- src/osx/carbon/renderer.cpp | 2 +- src/osx/carbon/statbrma.cpp | 81 ++++++++++++++++++++++++++++++++-- src/osx/cocoa/anybutton.mm | 2 +- src/osx/cocoa/notebook.mm | 16 ++++++- src/osx/cocoa/textctrl.mm | 8 ++++ src/osx/cocoa/window.mm | 9 +++- src/osx/spinbutt_osx.cpp | 12 ++++- src/osx/textctrl_osx.cpp | 17 ++++--- src/osx/window_osx.cpp | 17 ++++--- 16 files changed, 177 insertions(+), 27 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3c5e603335e4..357fcb20ce11 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -267,8 +267,8 @@ wxMSW: wxOSX: -- Fix wxChoice default size under macOS 26 Tahoe (#26058). - Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). +- Many appearance fixes for macOS 26 Tahoe (#26058, #25767, #26121). - Show applications launched from keyboard under macOS 26 (#26095). diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index daa79ed6fd3f..fa5bd4ccfc1a 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -232,6 +232,8 @@ public : // from the same pimpl class. virtual void controlTextDidChange(); + virtual void ClipsToBounds(bool clip) wxOVERRIDE; + virtual void AdjustClippingView(wxScrollBar* horizontal, wxScrollBar* vertical) wxOVERRIDE; virtual void UseClippingView(bool clip) wxOVERRIDE; virtual WXWidget GetContainer() const wxOVERRIDE { return m_osxClipView ? m_osxClipView : m_osxView; } diff --git a/include/wx/osx/core/private.h b/include/wx/osx/core/private.h index b907da8f526d..8f5e833b87c0 100644 --- a/include/wx/osx/core/private.h +++ b/include/wx/osx/core/private.h @@ -366,6 +366,8 @@ public : virtual bool EnableTouchEvents(int eventsMask) = 0; + virtual void ClipsToBounds(bool clip); + // scrolling views need a clip subview that acts as parent for native children // (except for the scollbars) which are children of the view itself virtual void AdjustClippingView(wxScrollBar* horizontal, wxScrollBar* vertical); diff --git a/include/wx/osx/window.h b/include/wx/osx/window.h index 3a161a5ce44d..bd8ceade0dbe 100644 --- a/include/wx/osx/window.h +++ b/include/wx/osx/window.h @@ -226,6 +226,9 @@ class WXDLLIMPEXP_CORE wxWindowMac: public wxWindowBase // returns the visible region of this control in window ie non-client coordinates const wxRegion& MacGetVisibleRegion( bool includeOuterStructures = false ) ; + // sets NSView.clipsToBounds property + void MacClipsToBounds( bool clip ); + // returns true if children have to clipped to the content area // (e.g., scrolled windows) bool MacClipChildren() const { return m_clipChildren ; } diff --git a/include/wx/platform.h b/include/wx/platform.h index 965507029d5d..23e848040c90 100644 --- a/include/wx/platform.h +++ b/include/wx/platform.h @@ -491,6 +491,9 @@ # ifndef MAC_OS_VERSION_14_0 # define MAC_OS_VERSION_14_0 140000 # endif +# ifndef MAC_OS_VERSION_26_0 +# define MAC_OS_VERSION_26_0 260000 +# endif # if __MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_13 # ifndef NSAppKitVersionNumber10_10 # define NSAppKitVersionNumber10_10 1343 diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 0396a4913c0c..1c6e5abb4fd9 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -50,11 +50,15 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxSpinDoubleEvent, wxNotifyEvent); // ---------------------------------------------------------------------------- // The margin between the text control and the spin: the value here is the same -// as the margin between the spin button and its "buddy" text control in wxMSW -// so the generic control looks similarly to the native one there, we might -// need to use different value for the other platforms (and maybe even -// determine it dynamically?). +// as the margin between the spin button and its "buddy" text control in wxMSW, +// and the commonly used spacing on macOS, so the generic control looks +// similarly to the native one there, we might need to use different value for +// other platforms (and maybe even determine it dynamically?). +#ifdef __WXOSX__ +static const wxCoord MARGIN = 4; +#else static const wxCoord MARGIN = 1; +#endif #define SPINCTRLBUT_MAX 32000 // large to avoid wrap around trouble @@ -244,6 +248,10 @@ bool wxSpinCtrlGenericBase::Create(wxWindow *parent, m_value = AdjustAndSnap(d); } +#ifdef __WXOSX__ + MacClipsToBounds(false); +#endif + m_textCtrl = new wxSpinCtrlTextGeneric(this, DoValueToText(m_value), style); m_spinButton = new wxSpinCtrlButtonGeneric(this, styleWithoutBorder); diff --git a/src/osx/carbon/frame.cpp b/src/osx/carbon/frame.cpp index fdce201ced05..2dcc8ae118f6 100644 --- a/src/osx/carbon/frame.cpp +++ b/src/osx/carbon/frame.cpp @@ -129,7 +129,17 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, void wxFrame::SetStatusBar(wxStatusBar *statbar) { wxFrameBase::SetStatusBar(statbar); - m_nowpeer->SetBottomBorderThickness(statbar ? GetMacStatusbarHeight() : 0); + +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 + if ( WX_IS_MACOS_AVAILABLE(11, 0) ) + { + // textured borders are unwanted, statusbar renders w/o them + } + else +#endif + { + m_nowpeer->SetBottomBorderThickness(statbar ? GetMacStatusbarHeight() : 0); + } } void wxFrame::PositionStatusBar() diff --git a/src/osx/carbon/renderer.cpp b/src/osx/carbon/renderer.cpp index 4bffa8402e3e..feaa13788a62 100644 --- a/src/osx/carbon/renderer.cpp +++ b/src/osx/carbon/renderer.cpp @@ -586,7 +586,7 @@ wxSize wxRendererMac::GetCollapseButtonSize(wxWindow *WXUNUSED(win), wxDC& WXUNU } // strict metrics size cutoff the button, increase the size - size.IncBy(1); + size.IncBy(3); return size; } diff --git a/src/osx/carbon/statbrma.cpp b/src/osx/carbon/statbrma.cpp index 91e78d80bc85..de47d8e4dfba 100644 --- a/src/osx/carbon/statbrma.cpp +++ b/src/osx/carbon/statbrma.cpp @@ -34,6 +34,7 @@ wxBEGIN_EVENT_TABLE(wxStatusBarMac, wxStatusBarGeneric) EVT_PAINT(wxStatusBarMac::OnPaint) wxEND_EVENT_TABLE() +static wxColor s_bgActive, s_bgInactive, s_separator; wxStatusBarMac::wxStatusBarMac(wxWindow *parent, wxWindowID id, @@ -76,6 +77,51 @@ bool wxStatusBarMac::Create(wxWindow *parent, wxWindowID id, void wxStatusBarMac::InitColours() { +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0 + if ( WX_IS_MACOS_AVAILABLE(26, 0) ) + { + if ( wxSystemSettings::GetAppearance().IsDark() ) + { + m_textActive = wxColour(0x9B, 0x9F, 0x9F); + m_textInactive = wxColour(0x59, 0x5F, 0x60); + // native separator uses hairline black plus some shading, + // this approximates it well visually: + s_separator = wxColour(0x18, 0x18, 0x18); + } + else + { + m_textActive = wxColour(0x80, 0x80, 0x80); + m_textInactive = wxColour(0xB8, 0xB8, 0xB8); + s_separator = wxColour(0xD9, 0xD9, 0xD9); + } + } + else +#endif // MAC_OS_VERSION_26_0 +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 + if ( WX_IS_MACOS_AVAILABLE(11, 0) ) + { + if ( wxSystemSettings::GetAppearance().IsDark() ) + { + m_textActive = wxColour(0xB1, 0xB2, 0xB2); + m_textInactive = wxColour(0x68, 0x69, 0x6A); + s_bgActive = wxColour(0x35, 0x36, 0x36); + s_bgInactive = wxColour(0x27, 0x28, 0x29); + // native separator uses hairline black plus some shading, + // this approximates it well visually: + s_separator = wxColour(0x18, 0x18, 0x18); + } + else + { + m_textActive = wxColour(0x73, 0x74, 0x74); + m_textInactive = wxColour(0xA5, 0xA6, 0xA6); + s_bgActive = wxColour(0xF3, 0xF3, 0xF3); + s_bgInactive = wxColour(0xE6, 0xE6, 0xE6); + s_separator = wxColour(0xCC, 0xCC, 0xCC); + } + } + else +#endif // MAC_OS_VERSION_11_0 +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_14 if ( WX_IS_MACOS_AVAILABLE(10, 14) ) { if ( wxSystemSettings::GetAppearance().IsDark() ) @@ -89,7 +135,9 @@ void wxStatusBarMac::InitColours() m_textInactive = wxColour(0xB1, 0xB1, 0xB1); } } - else // 10.10 Yosemite to 10.13: + else +#endif // MAC_OS_X_VERSION_10_14 + // 10.10 Yosemite to 10.13: { m_textActive = wxColour(0x40, 0x40, 0x40); @@ -119,7 +167,34 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event)) break; } - // Don't paint any background, that's handled by the OS. Only draw text: +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0 + if ( WX_IS_MACOS_AVAILABLE(26, 0) ) + { + // don't paint the background, handled by the OS + } + else +#endif +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 + if ( WX_IS_MACOS_AVAILABLE(11, 0) ) + { + // we _do_ need to paint the background on Big Sur up to Tahoe + // to match Finder's appearance: + dc.SetBackground(tlw == keyWindow ? s_bgActive : s_bgInactive); + dc.Clear(); + } + // else: background is rendered by OS, it is part of NSWindow border +#endif + +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 + // Draw horizontal separator above the status bar: + if ( WX_IS_MACOS_AVAILABLE(11, 0) ) + { + dc.SetPen(s_separator); + dc.DrawLine(0, 0, GetSize().x, 0); + } +#endif + + // Draw the text: dc.SetTextForeground(tlw == keyWindow ? m_textActive : m_textInactive); @@ -131,7 +206,7 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event)) int textHeight = dc.GetCharHeight(); for ( size_t i = 0; i < m_panes.GetCount(); i ++ ) - DrawField(dc, i, textHeight); + DrawField(dc, (int)i, textHeight); } void wxStatusBarMac::MacHiliteChanged() diff --git a/src/osx/cocoa/anybutton.mm b/src/osx/cocoa/anybutton.mm index 299dcba2bc11..57405820893b 100644 --- a/src/osx/cocoa/anybutton.mm +++ b/src/osx/cocoa/anybutton.mm @@ -44,5 +44,5 @@ wxSize wxAnyButton::GetDefaultSize() { - return wxSize(84, 20); + return wxSize(74, 20); } diff --git a/src/osx/cocoa/notebook.mm b/src/osx/cocoa/notebook.mm index 05010eb906e7..783ab412df5c 100644 --- a/src/osx/cocoa/notebook.mm +++ b/src/osx/cocoa/notebook.mm @@ -24,6 +24,7 @@ #include "wx/string.h" #include "wx/private/bmpbndl.h" #include "wx/osx/private.h" +#include "wx/osx/private/available.h" // // controller @@ -87,7 +88,20 @@ + (void)initialize if (!initialized) { initialized = YES; - wxOSXCocoaClassAddWXMethods( self ); + + // On macOS 26 Tahoe, the mere presence of drawRect: in derived class, + // even if it just calls super's implementation, triggers legacy + // rendering of NSTabView. +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0 + if (WX_IS_MACOS_AVAILABLE(26, 0)) + { + wxOSXCocoaClassAddWXMethods(self, wxOSXSKIP_DRAW); + } + else +#endif + { + wxOSXCocoaClassAddWXMethods(self); + } } } diff --git a/src/osx/cocoa/textctrl.mm b/src/osx/cocoa/textctrl.mm index 21fa5bbe6cb0..a5694828d8ea 100644 --- a/src/osx/cocoa/textctrl.mm +++ b/src/osx/cocoa/textctrl.mm @@ -1746,6 +1746,14 @@ - (void)controlTextDidEndEditing:(NSNotification *)aNotification sz.x = (int)ceil(best.size.width); sz.y = (int)ceil(best.size.height); + // never be smaller than single-line NSMiniControlSize field: + sz.y = wxMax(sz.y, 16); + + // !!! Any changes to these adjustments must be mirrored in wxTextCtrl::DoGetSizeFromTextSize() !!! + + sz.x -= 4; + sz.y -= 2; + if ( [m_textField isBezeled] || [m_textField isBordered] ) { // since this will be added again in DoGetSizeFromTextSize diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index 92610cf4675d..777dfa077e6c 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -2606,7 +2606,9 @@ void wxOSXCocoaClassAddWXMethods(Class c, wxOSXSkipOverrides skipFlags) if ( m_osxView ) CFRetain(m_osxView); [m_osxView release]; - m_osxView.clipsToBounds = YES; + + if ( IsUserPane() ) + ClipsToBounds(true); } @@ -4166,6 +4168,11 @@ new wxCocoaGesturesImpl(this, m_osxView, eventsMask) #endif } +void wxWidgetCocoaImpl::ClipsToBounds(bool clip) +{ + m_osxView.clipsToBounds = clip; +} + // // Factory methods diff --git a/src/osx/spinbutt_osx.cpp b/src/osx/spinbutt_osx.cpp index ec06f25e06c3..6e3181f44ec8 100644 --- a/src/osx/spinbutt_osx.cpp +++ b/src/osx/spinbutt_osx.cpp @@ -14,6 +14,7 @@ #include "wx/spinbutt.h" #include "wx/osx/private.h" +#include "wx/osx/private/available.h" wxSpinButton::wxSpinButton() @@ -81,7 +82,16 @@ bool wxSpinButton::OSXHandleClicked( double WXUNUSED(timestampsec) ) wxSize wxSpinButton::DoGetBestSize() const { - return wxSize( 16, 24 ); +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0 + if ( WX_IS_MACOS_AVAILABLE(26, 0) ) + { + return wxSize(21, 28); + } + else +#endif + { + return wxSize(13, 22); + } } void wxSpinButton::TriggerScrollEvent(wxEventType scrollEvent) diff --git a/src/osx/textctrl_osx.cpp b/src/osx/textctrl_osx.cpp index 354bec8d8556..e78331063149 100644 --- a/src/osx/textctrl_osx.cpp +++ b/src/osx/textctrl_osx.cpp @@ -42,6 +42,7 @@ #include "wx/thread.h" #include "wx/osx/private.h" +#include "wx/osx/private/available.h" wxBEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase) EVT_DROP_FILES(wxTextCtrl::OnDropFiles) @@ -209,23 +210,25 @@ wxSize wxTextCtrl::DoGetSizeFromTextSize(int xlen, int ylen) const // these are the numbers from the HIG: switch ( m_windowVariant ) { - case wxWINDOW_VARIANT_NORMAL : - hText = 22; - break ; - case wxWINDOW_VARIANT_SMALL : hText = 19; break ; case wxWINDOW_VARIANT_MINI : - hText = 15; + hText = 16; break ; + case wxWINDOW_VARIANT_NORMAL : default : - hText = 22; + hText = 21; break ; } +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0 + if ( WX_IS_MACOS_AVAILABLE(26, 0) ) + hText += 3; +#endif + // the numbers above include the border size, so subtract it before // possibly adding it back below hText -= TEXTCTRL_BORDER_SIZE; @@ -242,6 +245,8 @@ wxSize wxTextCtrl::DoGetSizeFromTextSize(int xlen, int ylen) const // has small positive xlen, therefore don't compare just with > 0 anymore wxSize size(xlen > TEXTCTRL_MAX_EMPTY_WIDTH ? xlen : 100, hText); + // !!! Any changes to these adjustments must be mirrored in wxNSTextFieldControl::GetBestSize() !!! + // Use extra margin size which works under macOS 10.15: note that we don't // need the vertical margin when using the automatically determined hText. if ( xlen > TEXTCTRL_MAX_EMPTY_WIDTH ) diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index da2055f49e76..1f80c41af159 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -263,6 +263,12 @@ wxWindowMac::~wxWindowMac() delete GetPeer() ; } +void wxWindowMac::MacClipsToBounds( bool clip ) +{ + if ( m_peer ) + m_peer->ClipsToBounds(clip); +} + void wxWindowMac::MacSetClipChildren( bool clip ) { m_clipChildren = clip ; @@ -1071,13 +1077,6 @@ wxSize wxWindowMac::DoGetBestSize() const r.height = 16 ; } else -#endif -#if wxUSE_SPINBTN - if ( IsKindOf( CLASSINFO( wxSpinButton ) ) ) - { - r.height = 24 ; - } - else #endif { // return wxWindowBase::DoGetBestSize() ; @@ -2762,6 +2761,10 @@ void wxWidgetImpl::SetDrawingEnabled(bool WXUNUSED(enabled)) { } +void wxWidgetImpl::ClipsToBounds(bool WXUNUSED(clip)) +{ +} + void wxWidgetImpl::AdjustClippingView(wxScrollBar* WXUNUSED(horizontal), wxScrollBar* WXUNUSED(vertical)) { } From c5dddf5ee2837221b8d13d51fb747ff00ef44c8d Mon Sep 17 00:00:00 2001 From: PB Date: Sat, 31 Jan 2026 21:48:06 +0100 Subject: [PATCH 280/416] Add support for MSVS 2026 Update wx_config.props, add MSVS 2026 solutions for the library and the minimal sample, and update the docs. See #26140. --- README.md | 2 +- build/msw/wx_config.props | 1 + build/msw/wx_vc18.slnx | 81 +++++++++++++++++++++++++++++++ docs/changes.txt | 1 + docs/msw/install.md | 7 +-- samples/minimal/minimal_vc18.slnx | 16 ++++++ 6 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 build/msw/wx_vc18.slnx create mode 100644 samples/minimal/minimal_vc18.slnx diff --git a/README.md b/README.md index e05586d65b33..ae996cfe4b99 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ This version of wxWidgets supports the following primary platforms: Most popular C++ compilers are supported including but not limited to: -- Microsoft Visual C++ 2005 or later (up to 2022). +- Microsoft Visual C++ 2005 or later (up to 2026). - g++ 4 or later (up to 14), including MinGW/MinGW-64/TDM under Windows. - Clang (up to 19). - Intel icc compiler. diff --git a/build/msw/wx_config.props b/build/msw/wx_config.props index 58cff743118b..797a81aa786c 100644 --- a/build/msw/wx_config.props +++ b/build/msw/wx_config.props @@ -11,6 +11,7 @@ v141 v142 v143 + v145 diff --git a/build/msw/wx_vc18.slnx b/build/msw/wx_vc18.slnx new file mode 100644 index 000000000000..a874eb3b37e5 --- /dev/null +++ b/build/msw/wx_vc18.slnx @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/changes.txt b/docs/changes.txt index 357fcb20ce11..db0eca9c079f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -261,6 +261,7 @@ All (GUI): wxMSW: +- Add MSVS 2026 solution files (PB, #26140). - Don't use first image for wxListCtrl items without images (#26062). - Fix regression in wxStaticBitmap::SetBitmap() in 3.2.9 (#26106). - Handle font names longer than 31 characters (moi15moi, #25333). diff --git a/docs/msw/install.md b/docs/msw/install.md index 3389f51fd4d5..e6d40178b81a 100644 --- a/docs/msw/install.md +++ b/docs/msw/install.md @@ -50,10 +50,11 @@ Microsoft Visual C++ Compilation {#msw_build_msvs} ### From the IDE Ready to use project files are provided for VC++ versions 8, 9, -10, 11, 12, 14, 15, 16 and 17 (also known as MSVS 2005, 2008, 2010, 2012, -2013, 2015, 2017, 2019 and 2022 respectively). +10, 11, 12, 14, 15, 16, 17 and 18 (also known as MSVS 2005, 2008, 2010, 2012, +2013, 2015, 2017, 2019, 2022 and 2026 respectively). -Simply open `wx_vcN.sln` (for N=8, 9, 10, 11, 12, 14, 15, 16 or 17) file, +Simply open `wx_vcN.sln` (for N=8, 9, 10, 11, 12, 14, 15, 16 or 17, matching +MSVS versions between 2005 and 2022) or `wx_vc18.slnx` (for MSVS 2026) file, select the appropriate configuration (Debug or Release, static or DLL) and build the solution. Notice that when building a DLL configuration, you may need to perform the build several times because the projects diff --git a/samples/minimal/minimal_vc18.slnx b/samples/minimal/minimal_vc18.slnx new file mode 100644 index 000000000000..910e584e4949 --- /dev/null +++ b/samples/minimal/minimal_vc18.slnx @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + From 4d0e15d8d2db014315eb1057472178ee38517a5b Mon Sep 17 00:00:00 2001 From: Hartwig Wiesmann Date: Sat, 31 Jan 2026 18:44:24 +0100 Subject: [PATCH 281/416] Fix marking wrong item as being deleted in wxOSX wxDataViewCtrl The comment in wxDataViewCtrl::IsClearing() said that the item being deleted should be invalid only when the entire model is being cleared, but this wasn't the case in ItemDeleted() as its "parent" argument could be invalid (e.g. when using a flat list model) even if "item" itself is valid. Use "item", not "parent", to set the item being deleted to the correct value to fix this. See #26138, #26139. (cherry picked from commit 6950c3218e4d6212f9584b124973139502cdd05b) --- docs/changes.txt | 1 + src/osx/dataview_osx.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index db0eca9c079f..5040bc2a5332 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -268,6 +268,7 @@ wxMSW: wxOSX: +- Fix bug when deleting wxDataViewCtrl items (Hartwig Wiesmann, #26138). - Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). - Many appearance fixes for macOS 26 Tahoe (#26058, #25767, #26121). - Show applications launched from keyboard under macOS 26 (#26095). diff --git a/src/osx/dataview_osx.cpp b/src/osx/dataview_osx.cpp index 57cf22170222..d6bc94393999 100644 --- a/src/osx/dataview_osx.cpp +++ b/src/osx/dataview_osx.cpp @@ -236,7 +236,7 @@ bool wxOSXDataViewModelNotifier::ItemDeleted(wxDataViewItem const& parent, wxDat // not to be identical because the being edited item might be below the passed item in the hierarchy); // to prevent the control trying to ask the model to update an already deleted item the control is informed that currently a deleting process // has been started and that variables can currently not be updated even when requested by the system: - wxOSXDVCScopedDeleter setDeleting(m_DataViewCtrlPtr, parent); + wxOSXDVCScopedDeleter setDeleting(m_DataViewCtrlPtr, item); bool ok = m_DataViewCtrlPtr->GetDataViewPeer()->Remove(parent); From cf16a891381887c4241f0e917252d807e61c90c6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 2 Feb 2026 13:44:06 +0100 Subject: [PATCH 282/416] Rename wxOSXDVCDeleting::m_parent to m_item No real changes, just don't use "parent" for the name of the item being deleted, this is confusing as it's really the item itself and not its parent. See #26139. (cherry picked from commit 4bb297d962b1d23345e3b45de8006d7a015e34ea) --- src/osx/dataview_osx.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/osx/dataview_osx.cpp b/src/osx/dataview_osx.cpp index d6bc94393999..55af083b0977 100644 --- a/src/osx/dataview_osx.cpp +++ b/src/osx/dataview_osx.cpp @@ -55,11 +55,11 @@ wxString ConcatenateDataViewItemValues(wxDataViewCtrl const* dataViewCtrlPtr, wx struct wxOSXDVCDeleting { - explicit wxOSXDVCDeleting(const wxDataViewItem& parent) : m_parent(parent) + explicit wxOSXDVCDeleting(const wxDataViewItem& item) : m_item(item) { } - const wxDataViewItem m_parent; + const wxDataViewItem m_item; wxDECLARE_NO_COPY_CLASS(wxOSXDVCDeleting); }; @@ -68,11 +68,11 @@ struct wxOSXDVCDeleting class wxOSXDVCScopedDeleter { public: - wxOSXDVCScopedDeleter(wxDataViewCtrl* dvc, const wxDataViewItem& parent) : + wxOSXDVCScopedDeleter(wxDataViewCtrl* dvc, const wxDataViewItem& item) : m_dvc(dvc), m_valueOrig(m_dvc->m_Deleting) { - m_dvc->m_Deleting = new wxOSXDVCDeleting(parent); + m_dvc->m_Deleting = new wxOSXDVCDeleting(item); } ~wxOSXDVCScopedDeleter() @@ -429,7 +429,7 @@ bool wxDataViewCtrl::IsClearing() const { // We only set the item being deleted to an invalid item when we're // clearing the entire model. - return m_Deleting != NULL && !m_Deleting->m_parent.IsOk(); + return m_Deleting != NULL && !m_Deleting->m_item.IsOk(); } bool wxDataViewCtrl::Create(wxWindow *parent, From 81ebf59adb006327e6ccb4ab01079af5127a16d7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 4 Feb 2026 15:08:04 +0100 Subject: [PATCH 283/416] Document wxGetStockHelpString() function It was added back in 345319d60c (fixes to menu stock items support (patch 1547639), 2006-09-05) and even if it's not particularly useful, it still should be documented, so add documentation for it. See #8090. (cherry picked from commit e80d78c2c96a4986c32a33f83d0118c2397836fb) --- interface/wx/stockitem.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/interface/wx/stockitem.h b/interface/wx/stockitem.h index 02182d7b2458..8c91dd834161 100644 --- a/interface/wx/stockitem.h +++ b/interface/wx/stockitem.h @@ -81,3 +81,30 @@ wxString wxGetStockLabel(wxWindowID id, long flags = wxSTOCK_WITH_MNEMONIC); ///@} +/** @addtogroup group_funcmacro_misc */ +///@{ + +/** + Return help string associated with given stock @a id and @a client. + + This function uses the default help string shown in the status bar when the + item with the given @a id is selected in a menu, e.g. for ::wxID_EXIT the + returned string is "Quit this program". + + @param id + The stock item identifier to get the help string for. + @param client + The client context for which the help string is requested, currently + can only be `wxSTOCK_MENU`, which is the default value for this + parameter. + @return + The translated help string for the given stock item identifier and + client context, or an empty string if no default help string is + available for this @a id. + + @header{wx/stockitem.h} + */ +wxString wxGetStockHelpString(wxWindowID id, + wxStockHelpStringClient client = wxSTOCK_MENU); + +///@} From 14c2b46bb0388d0be551d2af9a9b716b6996b6eb Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 4 Feb 2026 15:14:06 +0100 Subject: [PATCH 284/416] Minor corrections to standard IDs documentation Remove misleading Doxygen comments copied from the comments in C++ header which didn't make sense here. Improve the documentation of menu ID ranges. (cherry picked from commit 5a95c14a39e13cd3fe713a278efe957b5ab13ac5) --- interface/wx/defs.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/interface/wx/defs.h b/interface/wx/defs.h index 49bb52f92c21..ce860e8c2a9d 100644 --- a/interface/wx/defs.h +++ b/interface/wx/defs.h @@ -660,7 +660,7 @@ enum wxStandardID wxID_FILE8, wxID_FILE9, - /** Standard button and menu IDs */ + // Standard button and menu IDs wxID_OK = 5100, wxID_CANCEL, wxID_APPLY, @@ -723,16 +723,15 @@ enum wxStandardID wxID_SPELL_CHECK, wxID_STRIKETHROUGH, - /** System menu IDs (used by wxUniv): */ - wxID_SYSTEM_MENU = 5200, - wxID_CLOSE_FRAME, - wxID_MOVE_FRAME, - wxID_RESIZE_FRAME, - wxID_MAXIMIZE_FRAME, - wxID_ICONIZE_FRAME, - wxID_RESTORE_FRAME, + wxID_SYSTEM_MENU = 5200,///< System menu ID (used only by wxUniv). + wxID_CLOSE_FRAME, ///< System menu close item ID (used only by wxUniv). + wxID_MOVE_FRAME, ///< System menu move item ID (used only by wxUniv). + wxID_RESIZE_FRAME, ///< System menu size item ID (used only by wxUniv). + wxID_MAXIMIZE_FRAME, ///< System menu maximize item ID (used only by wxUniv). + wxID_ICONIZE_FRAME, ///< System menu minimize item ID (used only by wxUniv). + wxID_RESTORE_FRAME, ///< System menu restore item ID (used only by wxUniv). - /** MDI window menu ids */ + /// Start of the range of IDs reserved for MDI menu commands. wxID_MDI_WINDOW_FIRST = 5230, wxID_MDI_WINDOW_CASCADE = wxID_MDI_WINDOW_FIRST, wxID_MDI_WINDOW_TILE_HORZ, @@ -740,12 +739,13 @@ enum wxStandardID wxID_MDI_WINDOW_ARRANGE_ICONS, wxID_MDI_WINDOW_PREV, wxID_MDI_WINDOW_NEXT, + /// End of the range of IDs reserved for MDI menu commands. wxID_MDI_WINDOW_LAST = wxID_MDI_WINDOW_NEXT, - /** IDs used by generic file dialog (13 consecutive starting from this value) */ + /** Start of IDs used by generic file dialog (13 consecutive starting from this value) */ wxID_FILEDLGG = 5900, - /** IDs used by generic file ctrl (4 consecutive starting from this value) */ + /** Start of IDs used by generic file control (4 consecutive starting from this value) */ wxID_FILECTRL = 5950, /** From 0910d8fa341988747135444093c86dad576f4ad4 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 5 Feb 2026 09:32:29 +0100 Subject: [PATCH 285/416] Fix crash on key press in wxDataViewCtrl in wxOSX Don't access out of bounds NSString characters when processing key events, as this results in an exception and crash under current macOS versions. See #26160, #26161. (cherry picked from commit fe038044c4f1a05717a0bdc440359fb315b5f61f) --- docs/changes.txt | 1 + src/osx/cocoa/dataview.mm | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 5040bc2a5332..e959563f493e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -269,6 +269,7 @@ wxMSW: wxOSX: - Fix bug when deleting wxDataViewCtrl items (Hartwig Wiesmann, #26138). +- Fix crash on some key presses in wxDataViewCtrl (#26160). - Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). - Many appearance fixes for macOS 26 Tahoe (#26058, #25767, #26121). - Show applications launched from keyboard under macOS 26 (#26095). diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 93554f1c7957..28aaa6a2cbea 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -2035,8 +2035,8 @@ -(BOOL) becomeFirstResponder void wxCocoaDataViewControl::keyEvent(WX_NSEvent event, WXWidget slf, void *_cmd) { - if( [event type] == NSKeyDown && [[event charactersIgnoringModifiers] - characterAtIndex: 0] == NSCarriageReturnCharacter ) + NSString* c = [event type] == NSKeyDown ? [event charactersIgnoringModifiers] : nil; + if( c != nil && [c length] >= 1 && [c characterAtIndex: 0] == NSCarriageReturnCharacter ) { wxDataViewCtrl* const dvc = GetDataViewCtrl(); const wxDataViewItem item = wxDataViewItem( [[m_OutlineView itemAtRow:[m_OutlineView selectedRow]] pointer]); From dd7a3da51d3a2c7a275c6d0462676a29cf92451b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 4 Feb 2026 22:54:08 +0100 Subject: [PATCH 286/416] Fix using invalid filter index in wxOSX wxFileDialog Ensure we use the valid index in m_filterExtensions when m_firstFileTypeFilter was set to -1. This is the equivalent of 17dbee8a46 (Fix using invalid filter index in wxOSX wxFileDialog, 2026-02-04) from master, but applied to both copies of the code present in this branch. See #26148. --- docs/changes.txt | 1 + src/osx/cocoa/filedlg.mm | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index e959563f493e..8f75876bb0a0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -270,6 +270,7 @@ wxOSX: - Fix bug when deleting wxDataViewCtrl items (Hartwig Wiesmann, #26138). - Fix crash on some key presses in wxDataViewCtrl (#26160). +- Fix regression in wxFileDialog filters in 3.2.9 (#26148). - Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). - Many appearance fixes for macOS 26 Tahoe (#26058, #25767, #26121). - Show applications launched from keyboard under macOS 26 (#26095). diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 163beb81cf07..e86ad9829046 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -320,7 +320,11 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions } else { - NSArray* types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); + // m_firstFileTypeFilter may be -1 here if we're not using the + // combobox for selecting the filter, use the first filter in this + // case + const int filterIndex = m_useFileTypeFilter ? m_firstFileTypeFilter : 0; + NSArray* types = GetTypesFromExtension(m_filterExtensions[filterIndex], m_currentExtensions); if ( m_delegate ) [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; else @@ -646,7 +650,11 @@ - (void)setAllowedExtensions:(const wxArrayString &)extensions } else { - NSArray* types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); + // m_firstFileTypeFilter may be -1 here if we're not using the + // combobox for selecting the filter, use the first filter in this + // case + const int filterIndex = m_useFileTypeFilter ? m_firstFileTypeFilter : 0; + NSArray* types = GetTypesFromExtension(m_filterExtensions[filterIndex], m_currentExtensions); if ( m_delegate ) [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; else From 8f074ff44fe087c21022636b33225e01a76a57ae Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 10 Feb 2026 13:59:29 +0100 Subject: [PATCH 287/416] Fix regression in wxDateTime::Format("%F %T") with MSVC Fix incorrect backport done in b97aee419a (Avoid calling strftime("%F") when using MinGW, 2023-12-31) which stopped using strftime() for any Windows compiler, including MSVC, instead of just MinGW, as intended, and done in master. See #26179. --- src/common/datetimefmt.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/common/datetimefmt.cpp b/src/common/datetimefmt.cpp index 704b0fe545d6..b9611fbe52ea 100644 --- a/src/common/datetimefmt.cpp +++ b/src/common/datetimefmt.cpp @@ -356,7 +356,9 @@ wxString wxDateTime::Format(const wxString& formatp, const TimeZone& tz) const { case 'l': #ifdef __WINDOWS__ +#ifdef __MINGW32__ case 'F': +#endif case 'g': case 'G': case 'V': From df0bcb1003995ddd40b02ab188d77eec7562d501 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 10 Feb 2026 14:08:58 +0100 Subject: [PATCH 288/416] Add forgotten support for %T to our own wxDateTime::Format() code "%T" was only handled when strftime() could be used but not by our own implementation, resulting in failing to handle it for format string including both "%T" and one of the specifiers not supported by the standard function, such as "%l" or several others when using MinGW. See #26179, #26180. (cherry picked from commit 3b01ebf5efa84505ef6e92858c3848c06189e87f) --- src/common/datetimefmt.cpp | 4 ++++ tests/datetime/datetimetest.cpp | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/datetimefmt.cpp b/src/common/datetimefmt.cpp index b9611fbe52ea..29a15c87cbfd 100644 --- a/src/common/datetimefmt.cpp +++ b/src/common/datetimefmt.cpp @@ -637,6 +637,10 @@ wxString wxDateTime::Format(const wxString& formatp, const TimeZone& tz) const res += wxString::Format(fmt, tm.sec); break; + case wxT('T'): // time as %H:%M:%S + res += wxString::Format(wxT("%02d:%02d:%02d"), tm.hour, tm.min, tm.sec); + break; + case wxT('U'): // week number in the year (Sunday 1st week day) res += wxString::Format(fmt, GetWeekOfYear(Sunday_First, tz)); break; diff --git a/tests/datetime/datetimetest.cpp b/tests/datetime/datetimetest.cpp index 6cb3940dd05b..1c3a4c0de210 100644 --- a/tests/datetime/datetimetest.cpp +++ b/tests/datetime/datetimetest.cpp @@ -857,7 +857,9 @@ void DateTimeTestCase::TestTimeFormat() CPPUNIT_ASSERT(wxDateTime::Now().Format("%%") == "%"); - wxDateTime dt; + + wxDateTime dt(29, wxDateTime::May, 1976, 18, 30, 15, 678); + CPPUNIT_ASSERT_EQUAL( dt.Format("%F %T.%l"), "1976-05-29 18:30:15.678" ); #if 0 // special case which was known to fail From 31c8641771b362c5a877efa2876fcda8decd51d6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 18 Feb 2026 00:30:00 +0100 Subject: [PATCH 289/416] Fix script used to change macOS install names with configure The previous attempt to fix it in 30c0f6a675 (Fix readlink problem in configure build under macOS < 12, 2025-08-02) introduced multiple problems, not least of which was the install name was changed in _not_ installed libraries rather than the installed copies. Fix this and use more readable names for the different directories instead of cryptic ${N} variables. Use realpath instead of readlink because it gives the ultimate link target directly instead of just another symlink. Also use printf instead of ls because the latter is unnecessary and we don't need to worry about using its "-1" option. See #23143, #25173, #25182, #25675, #26200. --- configure | 26 +++++++++++++++----------- configure.in | 26 +++++++++++++++----------- docs/changes.txt | 1 + 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/configure b/configure index d2960ef361b6..fccf4ee8806c 100755 --- a/configure +++ b/configure @@ -34272,24 +34272,28 @@ rm -f core conftest.err conftest.$ac_objext \ cat <change-install-names #!/bin/sh set -e -libdir=\$(cd lib ; pwd -P) -libnames=\$(cd lib ; ls -1 libwx*${WX_RELEASE}.dylib) +[ -z "\${WXDEBUG_X}" ] || set -x +destdir=\$1 +libdir=\$2 +bindir=\$3 +build_libdir=\$4 +libnames=\$(cd \${build_libdir}; printf '%s\n' libwx*${WX_RELEASE}.dylib) changes='' -for dep in \${libnames} ; do - target=\$(readlink \${4}/\${dep}) - changes="\${changes} -change \${libdir}\${target} \${3}/\${dep}" +for libname in \${libnames} ; do + target=\$(realpath \${build_libdir}/\${libname}) + changes="\${changes} -change \${target} \${libdir}/\$(basename \${target})" done -for i in \${libnames} ; do - lib=\$(readlink \${1}/\${i}) - ${HOST_PREFIX}install_name_tool \${changes} -id \${3}/\${i} \${libdir}/\${lib} +for libname in \${libnames} ; do + target=\$(realpath \${build_libdir}/\${libname}) + ${HOST_PREFIX}install_name_tool \${changes} -id \${libdir}/\${libname} \${destdir}\${libdir}/\$(basename \${target}) done -if test -f "\${2}/wxrc-${WX_RELEASE}" ; then - ${HOST_PREFIX}install_name_tool \${changes} \${2}/wxrc-${WX_RELEASE} +if test -f \${destdir}\${bindir}/wxrc-${WX_RELEASE} ; then + ${HOST_PREFIX}install_name_tool \${changes} \${destdir}\${bindir}/wxrc-${WX_RELEASE} fi EOF chmod +x change-install-names - DYLIB_RPATH_INSTALL="\$(wx_top_builddir)/change-install-names \${DESTDIR}\${libdir} \${DESTDIR}\${bindir} \${libdir} \$(wx_top_builddir)/lib" + DYLIB_RPATH_INSTALL="\$(wx_top_builddir)/change-install-names \"\${DESTDIR}\" \${libdir} \${bindir} \$(wx_top_builddir)/lib" fi HEADER_PAD_OPTION="-headerpad_max_install_names" diff --git a/configure.in b/configure.in index f43c9536752c..1c92c4b70323 100644 --- a/configure.in +++ b/configure.in @@ -4143,24 +4143,28 @@ if test "$wxUSE_SHARED" = "yes"; then cat <change-install-names #!/bin/sh set -e -libdir=\$(cd lib ; pwd -P) -libnames=\$(cd lib ; ls -1 libwx*${WX_RELEASE}.dylib) +[[ -z "\${WXDEBUG_X}" ]] || set -x +destdir=\$1 +libdir=\$2 +bindir=\$3 +build_libdir=\$4 +libnames=\$(cd \${build_libdir}; printf '%s\n' libwx*${WX_RELEASE}.dylib) changes='' -for dep in \${libnames} ; do - target=\$(readlink \${4}/\${dep}) - changes="\${changes} -change \${libdir}\${target} \${3}/\${dep}" +for libname in \${libnames} ; do + target=\$(realpath \${build_libdir}/\${libname}) + changes="\${changes} -change \${target} \${libdir}/\$(basename \${target})" done -for i in \${libnames} ; do - lib=\$(readlink \${1}/\${i}) - ${HOST_PREFIX}install_name_tool \${changes} -id \${3}/\${i} \${libdir}/\${lib} +for libname in \${libnames} ; do + target=\$(realpath \${build_libdir}/\${libname}) + ${HOST_PREFIX}install_name_tool \${changes} -id \${libdir}/\${libname} \${destdir}\${libdir}/\$(basename \${target}) done -if test -f "\${2}/wxrc-${WX_RELEASE}" ; then - ${HOST_PREFIX}install_name_tool \${changes} \${2}/wxrc-${WX_RELEASE} +if test -f \${destdir}\${bindir}/wxrc-${WX_RELEASE} ; then + ${HOST_PREFIX}install_name_tool \${changes} \${destdir}\${bindir}/wxrc-${WX_RELEASE} fi EOF chmod +x change-install-names - DYLIB_RPATH_INSTALL="\$(wx_top_builddir)/change-install-names \${DESTDIR}\${libdir} \${DESTDIR}\${bindir} \${libdir} \$(wx_top_builddir)/lib" + DYLIB_RPATH_INSTALL="\$(wx_top_builddir)/change-install-names \"\${DESTDIR}\" \${libdir} \${bindir} \$(wx_top_builddir)/lib" fi dnl the HEADER_PAD_OPTION is required by some wx samples to avoid the error: diff --git a/docs/changes.txt b/docs/changes.txt index 8f75876bb0a0..2e90f4d9f4a6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -268,6 +268,7 @@ wxMSW: wxOSX: +- Fix install names after "make install" (#25675). - Fix bug when deleting wxDataViewCtrl items (Hartwig Wiesmann, #26138). - Fix crash on some key presses in wxDataViewCtrl (#26160). - Fix regression in wxFileDialog filters in 3.2.9 (#26148). From fcad020c652231f53a424c17930dd4a371c71cee Mon Sep 17 00:00:00 2001 From: Carlo Bramini Date: Thu, 19 Feb 2026 14:45:31 +0100 Subject: [PATCH 290/416] Use correct name for Cairo DLL when using Cygwin See #26207. (cherry picked from commit ed0abebb66ecd8ae11682c7b8313d61b44ade37a) --- src/common/cairo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/cairo.cpp b/src/common/cairo.cpp index 8a00ebc21f73..8480a92651f6 100644 --- a/src/common/cairo.cpp +++ b/src/common/cairo.cpp @@ -326,7 +326,9 @@ wxCairo::wxCairo() { wxLogNull log; -#ifdef __WXMSW__ +#ifdef __CYGWIN__ + wxString cairoDllStr("cygcairo-2.dll"); +#elif defined(__WXMSW__) wxString cairoDllStr("libcairo-2.dll"); #elif defined(__WXOSX__) wxString cairoDllStr("libcairo.2.dylib"); From 7a23d47745ac243436579558f2278fe1720d1773 Mon Sep 17 00:00:00 2001 From: Carlo Bramini Date: Sat, 21 Feb 2026 14:49:32 +0100 Subject: [PATCH 291/416] Fix undefined reference to cairo_surface_get_device_scale() This function needs to be loaded dynamically too. See #26218. (cherry picked from commit 583d44d6bc024980f92381c9c11fdaf4db8a20fe) --- src/common/cairo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/cairo.cpp b/src/common/cairo.cpp index 8480a92651f6..9d4c70e6c1c5 100644 --- a/src/common/cairo.cpp +++ b/src/common/cairo.cpp @@ -186,7 +186,9 @@ m( cairo_user_to_device_distance, \ (cairo_t* cr, double *dx, double* dy), (cr, dx, dy) ) \ m( cairo_surface_mark_dirty, \ - (cairo_surface_t* surface), (surface)) + (cairo_surface_t* surface), (surface)) \ + m( cairo_surface_get_device_scale, \ + (cairo_surface_t *surface, double *x_scale, double *y_scale), (surface, x_scale, y_scale)) #ifdef __WXMAC__ #define wxCAIRO_PLATFORM_METHODS(m) \ From d3ff65741f6e56148da22efd48c6792cdd1a468f Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 21 Feb 2026 12:02:59 +0100 Subject: [PATCH 292/416] CMake: Don't search for Qt6 package wxQT in wx3.2 does not support Qt6, so don't try to find it in CMake. See #26065 --- build/cmake/toolkit.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/toolkit.cmake b/build/cmake/toolkit.cmake index 0910b66d68f7..365f055572c6 100644 --- a/build/cmake/toolkit.cmake +++ b/build/cmake/toolkit.cmake @@ -129,7 +129,7 @@ if(UNIX AND NOT WIN32 AND (WXX11 OR WXMOTIF OR WXGTK2 OR (WXGTK AND wxHAVE_GDK_X endif() if(WXQT) - find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) + find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core) if(QT_VERSION_MAJOR EQUAL 5) set(QT_COMPONENTS Core Widgets Gui OpenGL OpenGL Test) From 039a6c9b1a224b4dc36664eb175f60df6d9ea8a6 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sat, 21 Feb 2026 12:20:36 +0100 Subject: [PATCH 293/416] Backport CMake changes Add the FindGTK2 module from #26040, so CMake first used PkgConfig to find GTK2 and if that fails, the built-in module. Fix a few typos. --- build/cmake/lib/webview/CMakeLists.txt | 2 +- build/cmake/modules/FindGTK2.cmake | 63 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 build/cmake/modules/FindGTK2.cmake diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index 97c1b51148b0..373832879058 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -119,7 +119,7 @@ endif() # webkit extension plugin # we can't use (all of the) macros and functions because this library should -# always be build as a shared libary, and not included in the monolithic build. +# always be built as a shared library, and not included in the monolithic build. if(WXGTK AND wxUSE_WEBVIEW_WEBKIT2) wx_append_sources(WEBKIT2_EXT_FILES WEBVIEW_WEBKIT2_EXTENSION) add_library(wxwebkit2_ext SHARED ${WEBKIT2_EXT_FILES}) diff --git a/build/cmake/modules/FindGTK2.cmake b/build/cmake/modules/FindGTK2.cmake new file mode 100644 index 000000000000..266056baad8b --- /dev/null +++ b/build/cmake/modules/FindGTK2.cmake @@ -0,0 +1,63 @@ +# - Try to find GTK+ 2 +# Once done, this will define +# +# GTK2_FOUND - system has GTK+ 2. +# GTK2_INCLUDE_DIRS - the GTK+ 2. include directories +# GTK2_LIBRARIES - link these to use GTK+ 2. +# +# Copyright (C) 2012 Raphael Kubo da Costa +# Copyright (C) 2013 Igalia S.L. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS +# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +find_package(PkgConfig) +pkg_check_modules(GTK2 QUIET gtk+-2.0) +set(VERSION_OK TRUE) +if (GTK2_VERSION) +if (GTK2_FIND_VERSION_EXACT) +if (NOT("${GTK2_FIND_VERSION}" VERSION_EQUAL "${GTK2_VERSION}")) +set(VERSION_OK FALSE) +endif () +else () +if ("${GTK2_VERSION}" VERSION_LESS "${GTK2_FIND_VERSION}") +set(VERSION_OK FALSE) +endif () +endif () +endif () + +# silence output +set(GTK2_FIND_QUIETLY_TEMP ${GTK2_FIND_QUIETLY}) +set(GTK2_FIND_QUIETLY TRUE) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2 DEFAULT_MSG GTK2_INCLUDE_DIRS GTK2_LIBRARIES VERSION_OK) + +set(GTK2_FIND_QUIETLY ${GTK2_FIND_QUIETLY_TEMP}) + +mark_as_advanced(GTK2_INCLUDE_DIRS GTK2_LIBRARIES) + +# not found using PkgConfig, use CMake's FindGTK2 +if(NOT GTK2_FOUND) + set(CMAKE_MODULE_PATH_TEMP ${CMAKE_MODULE_PATH}) + set(CMAKE_MODULE_PATH "") + find_package(GTK2) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH_TEMP}) +endif() From b83d79b904ed8f9599a2562d7d8a4134338d0384 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 22 Feb 2026 13:49:11 +0100 Subject: [PATCH 294/416] Fix several memory leaks in wxOSX This is a cherry-pick of the merge commit fab7c65eb1 (Merge branch 'osx-memory-leaks', 2026-02-22). See #26208, #26215. --- docs/changes.txt | 1 + src/osx/carbon/fontdlgosx.mm | 2 ++ src/osx/cocoa/dataview.mm | 2 +- src/osx/cocoa/dnd.mm | 2 +- src/osx/cocoa/menu.mm | 8 +------- src/osx/cocoa/overlay.mm | 9 ++++++++- src/osx/cocoa/statbox.mm | 2 +- src/osx/cocoa/textctrl.mm | 6 ++++++ src/osx/cocoa/window.mm | 11 +++-------- src/osx/core/uilocale.mm | 8 ++++++-- src/osx/webview_webkit.mm | 7 ++++--- src/stc/PlatWXcocoa.mm | 4 ++-- 12 files changed, 36 insertions(+), 26 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 2e90f4d9f4a6..6f0d24e0b5cd 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -271,6 +271,7 @@ wxOSX: - Fix install names after "make install" (#25675). - Fix bug when deleting wxDataViewCtrl items (Hartwig Wiesmann, #26138). - Fix crash on some key presses in wxDataViewCtrl (#26160). +- Fix memory leaks in a number of controls (#26208). - Fix regression in wxFileDialog filters in 3.2.9 (#26148). - Improve wxRichTextCtrl handling of cursor keys (Lee Ockert, #26064). - Many appearance fixes for macOS 26 Tahoe (#26058, #25767, #26121). diff --git a/src/osx/carbon/fontdlgosx.mm b/src/osx/carbon/fontdlgosx.mm index 1e6f804476c4..586e66137111 100644 --- a/src/osx/carbon/fontdlgosx.mm +++ b/src/osx/carbon/fontdlgosx.mm @@ -149,6 +149,8 @@ - (id)initWithFrame:(NSRect)rectBox [self addSubview:cancelButton]; [self addSubview:okButton]; + [cancelButton release]; + [okButton release]; [self resetFlags]; } diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 28aaa6a2cbea..0c53acc3e51c 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -2021,7 +2021,7 @@ -(BOOL) becomeFirstResponder NSTableHeaderView* header = nil; if ( !(style & wxDV_NO_HEADER) ) { - header = [[wxDVCNSHeaderView alloc] initWithDVC:GetDataViewCtrl()]; + header = [[[wxDVCNSHeaderView alloc] initWithDVC:GetDataViewCtrl()] autorelease]; } [m_OutlineView setHeaderView:header]; diff --git a/src/osx/cocoa/dnd.mm b/src/osx/cocoa/dnd.mm index 3c5cde3ee334..41c341a1aee2 100644 --- a/src/osx/cocoa/dnd.mm +++ b/src/osx/cocoa/dnd.mm @@ -70,7 +70,7 @@ ~wxOSXPasteboardSinkItem() { - + [m_item release]; } virtual void SetData(const wxDataFormat& format, const void *buf, size_t datasize) diff --git a/src/osx/cocoa/menu.mm b/src/osx/cocoa/menu.mm index a58b9bd6cb1c..273e883a6efb 100644 --- a/src/osx/cocoa/menu.mm +++ b/src/osx/cocoa/menu.mm @@ -164,10 +164,6 @@ - (void)setAppleMenu:(NSMenu *)menu; } [menu setDelegate:controller]; [m_osxMenu setImplementation:this]; - // gc aware - if ( m_osxMenu ) - CFRetain(m_osxMenu); - [m_osxMenu release]; } virtual ~wxMenuCocoaImpl(); @@ -414,9 +410,7 @@ void DisableAutoEnable() { [m_osxMenu setDelegate:nil]; [m_osxMenu setImplementation:nil]; - // gc aware - if ( m_osxMenu ) - CFRelease(m_osxMenu); + [m_osxMenu release]; } wxMenuImpl* wxMenuImpl::Create( wxMenu* peer, const wxString& title ) diff --git a/src/osx/cocoa/overlay.mm b/src/osx/cocoa/overlay.mm index dc2007d0db66..c1860b9118fe 100644 --- a/src/osx/cocoa/overlay.mm +++ b/src/osx/cocoa/overlay.mm @@ -76,7 +76,8 @@ - (instancetype)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)st - (void)dealloc { - [super dealloc]; + self.overlayView = nil; + [super dealloc]; } @end @@ -88,6 +89,12 @@ - (void)drawRect:(NSRect)dirtyRect [self.bitmapImageRep drawInRect:[self bounds]]; } +- (void)dealloc +{ + self.bitmapImageRep = nil; + [super dealloc]; +} + // from https://developer.apple.com/library/archive/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/CapturingScreenContents/CapturingScreenContents.html - (instancetype)initWithFrame:(NSRect)frameRect diff --git a/src/osx/cocoa/statbox.mm b/src/osx/cocoa/statbox.mm index ddb48bf24743..1fe904ac36ce 100644 --- a/src/osx/cocoa/statbox.mm +++ b/src/osx/cocoa/statbox.mm @@ -87,7 +87,7 @@ long WXUNUSED(extraStyle)) NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; wxNSBox* v = [[wxNSBox alloc] initWithFrame:r]; NSSize margin = { 0.0, 0.0 }; - [v setContentView:[[wxNSBoxContentView alloc] init]]; + [v setContentView:[[[wxNSBoxContentView alloc] init] autorelease]]; [v setContentViewMargins: margin]; [v sizeToFit]; wxStaticBoxCocoaImpl* c = new wxStaticBoxCocoaImpl( wxpeer, v ); diff --git a/src/osx/cocoa/textctrl.mm b/src/osx/cocoa/textctrl.mm index a5694828d8ea..aae91fdbeb29 100644 --- a/src/osx/cocoa/textctrl.mm +++ b/src/osx/cocoa/textctrl.mm @@ -493,6 +493,12 @@ - (instancetype)initWithFrame:(NSRect)frameRect return self; } +- (void)dealloc +{ + self.undoManager = nil; + [super dealloc]; +} + - (void)textDidChange:(NSNotification *)aNotification { wxUnusedVar(aNotification); diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index 777dfa077e6c..ae19596be32b 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -2601,11 +2601,6 @@ void wxOSXCocoaClassAddWXMethods(Class c, wxOSXSkipOverrides skipFlags) // check if the user wants to create the control initially hidden if ( !peer->IsShown() ) SetVisibility(false); - - // gc aware handling - if ( m_osxView ) - CFRetain(m_osxView); - [m_osxView release]; if ( IsUserPane() ) ClipsToBounds(true); @@ -2641,11 +2636,10 @@ void wxOSXCocoaClassAddWXMethods(Class c, wxOSXSkipOverrides skipFlags) if ( sv != nil ) [m_osxView removeFromSuperview]; } - // gc aware handling - if ( m_osxView ) - CFRelease(m_osxView); wxCocoaGestures::EraseForObject(this); + + [m_osxView release]; } void wxWidgetCocoaImpl::BeginNativeKeyDownEvent( NSEvent* event ) @@ -4152,6 +4146,7 @@ new wxCocoaGesturesImpl(this, m_osxView, eventsMask) m_osxClipView = [[wxNSClipView alloc] initWithFrame: m_osxView.bounds]; [(NSClipView*)m_osxClipView setDrawsBackground: NO]; [m_osxView addSubview:m_osxClipView]; + [m_osxClipView release]; // add tracking for this clipview as well diff --git a/src/osx/core/uilocale.mm b/src/osx/core/uilocale.mm index 3d33aea2855e..c43a8f757ac7 100644 --- a/src/osx/core/uilocale.mm +++ b/src/osx/core/uilocale.mm @@ -250,7 +250,9 @@ int CompareStrings(const wxString& lhs, const wxString& rhs, } NSString* monthName = [monthNames objectAtIndex:(month)]; - return wxCFStringRef::AsString(monthName); + wxCFStringRef cf(monthName); + [df release]; + return cf.AsString(); } wxString @@ -273,7 +275,9 @@ int CompareStrings(const wxString& lhs, const wxString& rhs, } NSString* weekdayName = [weekdayNames objectAtIndex:(weekday)]; - return wxCFStringRef::AsString(weekdayName); + wxCFStringRef cf(weekdayName); + [df release]; + return cf.AsString(); } #endif // wxUSE_DATETIME diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index bd8cadd53404..e2fefd9ed58d 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -133,7 +133,7 @@ - (id)initWithWxWindow: (wxWebViewWebKit*)inWindow; { for (wxStringToWebHandlerMap::iterator it = m_handlers.begin(); it != m_handlers.end(); it++) { - [webViewConfig setURLSchemeHandler:[[WebViewCustomProtocol alloc] initWithHandler:it->second.get()] + [webViewConfig setURLSchemeHandler:[[[WebViewCustomProtocol alloc] initWithHandler:it->second.get()] autorelease] forURLScheme:wxCFStringRef(it->first).AsNSString()]; } } @@ -202,7 +202,7 @@ function createClass(name,rules) { \ document.webkitFullscreenEnabled = true; \ "); [m_webView.configuration.userContentController addScriptMessageHandler: - [[WebViewScriptMessageHandler alloc] initWithWxWindow:this] name:@"__wxfullscreen"]; + [[[WebViewScriptMessageHandler alloc] initWithWxWindow:this] autorelease] name:@"__wxfullscreen"]; m_UIDelegate = uiDelegate; @@ -426,7 +426,7 @@ function createClass(name,rules) { \ bool wxWebViewWebKit::AddScriptMessageHandler(const wxString& name) { [m_webView.configuration.userContentController addScriptMessageHandler: - [[WebViewScriptMessageHandler alloc] initWithWxWindow:this] name:wxCFStringRef(name).AsNSString()]; + [[[WebViewScriptMessageHandler alloc] initWithWxWindow:this] autorelease] name:wxCFStringRef(name).AsNSString()]; // Make webkit message handler available under common name wxString js = wxString::Format("window.%s = window.webkit.messageHandlers.%s;", name, name); @@ -450,6 +450,7 @@ function createClass(name,rules) { \ WKUserScriptInjectionTimeAtDocumentStart : WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:NO]; [m_webView.configuration.userContentController addUserScript:userScript]; + [userScript release]; return true; } diff --git a/src/stc/PlatWXcocoa.mm b/src/stc/PlatWXcocoa.mm index 52380bad3322..416f89939c79 100644 --- a/src/stc/PlatWXcocoa.mm +++ b/src/stc/PlatWXcocoa.mm @@ -45,7 +45,6 @@ - (void)updateTrackingAreas if( m_trackingArea != nil ) { [self removeTrackingArea:m_trackingArea]; - [m_trackingArea release]; } int options = NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways; @@ -54,6 +53,7 @@ - (void)updateTrackingAreas owner: self userInfo: nil]; [self addTrackingArea:m_trackingArea]; + [m_trackingArea release]; } - (void)mouseEntered:(NSEvent *)evt @@ -106,7 +106,7 @@ WX_NSWindow CreateFloatingWindow(wxWindow* wxWin) defer: NO]; [w setLevel:NSPopUpMenuWindowLevel]; [w setHasShadow:YES]; - [w setContentView:[[wxSTCPopupBaseView alloc] initWithwxWin:wxWin]]; + [w setContentView:[[[wxSTCPopupBaseView alloc] initWithwxWin:wxWin] autorelease]] ; return w; } From 0157304b1d15e2e46603040cf11246c15e6474e8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 23 Feb 2026 13:50:42 +0100 Subject: [PATCH 295/416] Fix autoconf build for macOS < 13 The recent 31c8641771 (Fix script used to change macOS install names with configure, 2026-02-18) broke it by using realpath not available until macOS 13. Return to using (nested) readlink calls. See #25675, #26200. (cherry picked from commit 6799a112215247590b00b8dd024b6e42679a61c4) --- configure | 10 +++++----- configure.in | 12 ++++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/configure b/configure index fccf4ee8806c..c7578224ef97 100755 --- a/configure +++ b/configure @@ -34269,7 +34269,7 @@ rm -f core conftest.err conftest.$ac_objext \ install_name_tool=`which ${HOST_PREFIX}install_name_tool` if test "$install_name_tool" -a -x "$install_name_tool"; then DYLIB_RPATH_POSTLINK="${HOST_PREFIX}install_name_tool -id \$@ \$@" - cat <change-install-names + cat <change-install-names #!/bin/sh set -e [ -z "\${WXDEBUG_X}" ] || set -x @@ -34280,12 +34280,12 @@ build_libdir=\$4 libnames=\$(cd \${build_libdir}; printf '%s\n' libwx*${WX_RELEASE}.dylib) changes='' for libname in \${libnames} ; do - target=\$(realpath \${build_libdir}/\${libname}) - changes="\${changes} -change \${target} \${libdir}/\$(basename \${target})" + target=\$(readlink \${build_libdir}/\$(readlink \${build_libdir}/\${libname})) + changes="\${changes} -change \${build_libdir}/\${target} \${libdir}/\${target}" done for libname in \${libnames} ; do - target=\$(realpath \${build_libdir}/\${libname}) - ${HOST_PREFIX}install_name_tool \${changes} -id \${libdir}/\${libname} \${destdir}\${libdir}/\$(basename \${target}) + target=\$(readlink \${build_libdir}/\$(readlink \${build_libdir}/\${libname})) + ${HOST_PREFIX}install_name_tool \${changes} -id \${libdir}/\${libname} \${destdir}\${libdir}/\${target} done if test -f \${destdir}\${bindir}/wxrc-${WX_RELEASE} ; then diff --git a/configure.in b/configure.in index 1c92c4b70323..d16f1c27072b 100644 --- a/configure.in +++ b/configure.in @@ -4140,6 +4140,10 @@ if test "$wxUSE_SHARED" = "yes"; then install_name_tool=`which ${HOST_PREFIX}install_name_tool` if test "$install_name_tool" -a -x "$install_name_tool"; then DYLIB_RPATH_POSTLINK="${HOST_PREFIX}install_name_tool -id \$@ \$@" + dnl Note that the script below doesn't use realpath because it's + dnl only available since macOS 13 and doesn't even use readlink -f + dnl because this is only available since macOS 12, while we still + dnl need to support 10.10. cat <change-install-names #!/bin/sh set -e @@ -4151,12 +4155,12 @@ build_libdir=\$4 libnames=\$(cd \${build_libdir}; printf '%s\n' libwx*${WX_RELEASE}.dylib) changes='' for libname in \${libnames} ; do - target=\$(realpath \${build_libdir}/\${libname}) - changes="\${changes} -change \${target} \${libdir}/\$(basename \${target})" + target=\$(readlink \${build_libdir}/\$(readlink \${build_libdir}/\${libname})) + changes="\${changes} -change \${build_libdir}/\${target} \${libdir}/\${target}" done for libname in \${libnames} ; do - target=\$(realpath \${build_libdir}/\${libname}) - ${HOST_PREFIX}install_name_tool \${changes} -id \${libdir}/\${libname} \${destdir}\${libdir}/\$(basename \${target}) + target=\$(readlink \${build_libdir}/\$(readlink \${build_libdir}/\${libname})) + ${HOST_PREFIX}install_name_tool \${changes} -id \${libdir}/\${libname} \${destdir}\${libdir}/\${target} done if test -f \${destdir}\${bindir}/wxrc-${WX_RELEASE} ; then From bdc7d2dab2534d9a5162383d8ee9b2c655fdcf45 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 22 Feb 2026 16:45:57 +0100 Subject: [PATCH 296/416] Fix building non-GTK ports under Windows with Cairo >= 1.18 Cairo 1.18 broke using cairo_public redefinition hack used before to avoid declaring Cairo functions as being dll-imported. Use the new way to prevent this from happening but still define cairo_public when using older versions. Note that, unfortunately, we can't do it unconditionally because this results in a macro redefinition warning with newer versions which is impossible to disable using gcc. As the new hack is even worse than the existing one, move it into its own header to avoid duplicating it in both between src/common/cairo.cpp and src/generic/graphicc.cpp. See #26224. (cherry picked from commit 3193ce30afd793e81fd196e8b3a8484a85c4da5c) --- include/wx/private/cairo.h | 29 +++++++++++++++++++++++++++++ src/common/cairo.cpp | 5 +---- src/generic/graphicc.cpp | 7 +------ 3 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 include/wx/private/cairo.h diff --git a/include/wx/private/cairo.h b/include/wx/private/cairo.h new file mode 100644 index 000000000000..4a3affe41e41 --- /dev/null +++ b/include/wx/private/cairo.h @@ -0,0 +1,29 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/private/cairo.h +// Purpose: Wrapper for including cairo.h from wx code +// Author: Vadim Zeitlin +// Created: 2026-02-23 +// Copyright: (c) 2026 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PRIVATE_CAIRO_H_ +#define _WX_PRIVATE_CAIRO_H_ + +// We want to prevent cairo.h from using dllimport attribute for the functions +// it declares as we're loading them dynamically, but this is trickier than it +// should be because older versions of cairo.h respected cairo_public being +// defined before including it, but this was broken in 1.18, so we need to +// define an alternative symbol and avoid defining cairo_public as this would +// result in a warning about its redefinition. +#include + +#if CAIRO_VERSION_MAJOR > 1 || CAIRO_VERSION_MINOR >= 18 +#define CAIRO_WIN32_STATIC_BUILD +#else +#define cairo_public +#endif + +#include + +#endif // _WX_PRIVATE_CAIRO_H_ diff --git a/src/common/cairo.cpp b/src/common/cairo.cpp index 9d4c70e6c1c5..bc98682fb7f7 100644 --- a/src/common/cairo.cpp +++ b/src/common/cairo.cpp @@ -14,11 +14,8 @@ #if wxUSE_CAIRO && !defined(__WXGTK20__) -// keep cairo.h from defining dllimport as we're defining the symbols inside -// the wx dll in order to load them dynamically. -#define cairo_public +#include "wx/private/cairo.h" -#include #include "wx/dynlib.h" #ifdef __WXMSW__ diff --git a/src/generic/graphicc.cpp b/src/generic/graphicc.cpp index 47c19e9f2621..f117b285a250 100644 --- a/src/generic/graphicc.cpp +++ b/src/generic/graphicc.cpp @@ -17,13 +17,8 @@ #if wxUSE_CAIRO -#ifndef __WXGTK20__ -// keep cairo.h from defining dllimport as we're defining the symbols inside -// the wx dll in order to load them dynamically. -#define cairo_public -#endif +#include "wx/private/cairo.h" -#include #include bool wxCairoInit(); From e2c63254682726ee64d96b25afbad4843db3f16a Mon Sep 17 00:00:00 2001 From: Randalphwa <38287198+Randalphwa@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:43:51 -0800 Subject: [PATCH 297/416] Fix handling of "%s" in vararg functions in some UTF-8 builds When wxUSE_UNICODE_UTF8 is set to 1, strings use UTF-8 and are still char strings and not wchar_t ones, but when using wx own implementation of vsnprintf(), "%s" expected a wide string and not a normal one. Fix this at wxPrintfFormatConverterUtf8 level. See #26236. (cherry picked from commit c90aaa3d098f3c9f0fa82d63e14ed0cc93209c68) --- src/common/strvararg.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/common/strvararg.cpp b/src/common/strvararg.cpp index bd72b6eff025..43ade52d78a0 100644 --- a/src/common/strvararg.cpp +++ b/src/common/strvararg.cpp @@ -478,7 +478,14 @@ class wxPrintfFormatConverterUtf8 : public wxFormatConverterBase CharType& outConv, SizeModifier& outSize) wxOVERRIDE { outConv = 's'; +#if wxUSE_WXVSNPRINTFA + // When using wx's own vsnprintf implementation, plain %s is + // interpreted as wchar_t*. We need %hs to indicate char* args, + // which is what we actually pass in UTF-8 builds. + outSize = Size_Short; +#else outSize = Size_Default; +#endif } virtual void HandleChar(CharType WXUNUSED(conv), From fb092018a44f9833543d8a6aedf68b9bfe71da50 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 26 Feb 2026 18:27:44 +0100 Subject: [PATCH 298/416] Fix breakage in wxDateTime::Format("%F") for MSVC < 14 The changes of 8f074ff44f (Fix regression in wxDateTime::Format("%F %T") with MSVC, 2026-02-10) broke this for old MSVC versions which didn't have "%F" support. See #26179. --- src/common/datetimefmt.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/datetimefmt.cpp b/src/common/datetimefmt.cpp index 29a15c87cbfd..0576af8e91a3 100644 --- a/src/common/datetimefmt.cpp +++ b/src/common/datetimefmt.cpp @@ -356,7 +356,8 @@ wxString wxDateTime::Format(const wxString& formatp, const TimeZone& tz) const { case 'l': #ifdef __WINDOWS__ -#ifdef __MINGW32__ + // Versions of MSVC until 2015 and MinGW don't support "%F". +#if defined(__MINGW32__) || (defined(__VISUALC__) && !wxCHECK_VISUALC_VERSION(14)) case 'F': #endif case 'g': From ac5c9a07c2ebc3545605d1bd67b84f8fc643c674 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 24 Feb 2026 23:14:15 +0100 Subject: [PATCH 299/416] Fix handling right and middle clicks in vertical wxAuiToolBar They were wrongly recognized as clicks on the overflow item due to the hit test check being correct for horizontal toolbars only. Fix this by using the same, simpler and much more obviously correct, check that was already used for the left mouse button and just tests if GetOverflowRect() contains the point. See #26242. (cherry picked from commit 00ebfc927568fb948122ec4bebdd35adfb88598d) --- docs/changes.txt | 1 + src/aui/auibar.cpp | 24 ++++-------------------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 6f0d24e0b5cd..26f4e02fa2ee 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -258,6 +258,7 @@ Changes in behaviour which may result in build errors All (GUI): - Fix stc.h with wxNO_IMPLICIT_WXSTRING_ENCODING (reid-p, arch1t3cht, #25047). +- Fix right/middle click events in vertical wxAuiToolBar (#26242). wxMSW: diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index 39b484aecc28..3959984e0be2 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -2721,8 +2721,6 @@ void wxAuiToolBar::OnRightDown(wxMouseEvent& evt) if (HasCapture()) return; - wxRect cli_rect(wxPoint(0,0), GetClientSize()); - if (m_gripperSizerItem) { wxRect gripper_rect = m_gripperSizerItem->GetRect(); @@ -2730,16 +2728,10 @@ void wxAuiToolBar::OnRightDown(wxMouseEvent& evt) return; } - if (m_overflowSizerItem && m_art) + if (m_overflowSizerItem && m_overflowVisible && m_art) { - int overflowSize = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE); - if (overflowSize > 0 && - evt.m_x > cli_rect.width - overflowSize && - evt.m_y >= 0 && - evt.m_y < cli_rect.height) - { + if (GetOverflowRect().Contains(evt.GetX(), evt.GetY())) return; - } } m_actionPos = wxPoint(evt.GetX(), evt.GetY()); @@ -2793,8 +2785,6 @@ void wxAuiToolBar::OnMiddleDown(wxMouseEvent& evt) if (HasCapture()) return; - wxRect cli_rect(wxPoint(0,0), GetClientSize()); - if (m_gripperSizerItem) { wxRect gripper_rect = m_gripperSizerItem->GetRect(); @@ -2802,16 +2792,10 @@ void wxAuiToolBar::OnMiddleDown(wxMouseEvent& evt) return; } - if (m_overflowSizerItem && m_art) + if (m_overflowSizerItem && m_overflowVisible && m_art) { - int overflowSize = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE); - if (overflowSize > 0 && - evt.m_x > cli_rect.width - overflowSize && - evt.m_y >= 0 && - evt.m_y < cli_rect.height) - { + if (GetOverflowRect().Contains(evt.GetX(), evt.GetY())) return; - } } m_actionPos = wxPoint(evt.GetX(), evt.GetY()); From aa1a25e7b511c0a4e341a3c722e6eac2aa159ab6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 28 Feb 2026 13:50:12 +0100 Subject: [PATCH 300/416] Update release files for 3.2.10 Follow the instructions in docs/contributing/how-to-release.md --- docs/changes.txt | 2 +- docs/doxygen/mainpages/manual.h | 2 +- docs/msw/binaries.md | 8 +- docs/publicity/announce.txt | 40 ++++---- docs/readme.txt | 37 ++++---- docs/release.md | 158 ++++++++++++++++---------------- 6 files changed, 118 insertions(+), 129 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 26f4e02fa2ee..f86a9025e241 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,7 +252,7 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. -3.2.10: (released 2026-??-??) +3.2.10: (released 2026-03-03) ----------------------------- All (GUI): diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h index f979c6cf89df..96b10d389921 100644 --- a/docs/doxygen/mainpages/manual.h +++ b/docs/doxygen/mainpages/manual.h @@ -14,7 +14,7 @@ @author Julian Smart, Vadim Zeitlin, Robin Dunn, Stefan Csomor, Bryan Petty, Francesco Montorsi, Robert Roebling et al -@date December 12, 2015 +@date March 3, 2026 Welcome to wxWidgets, a stable and powerful open source framework for developing native cross-platform GUI applications in C++! diff --git a/docs/msw/binaries.md b/docs/msw/binaries.md index 16de33741a4c..ad818d2bcd72 100644 --- a/docs/msw/binaries.md +++ b/docs/msw/binaries.md @@ -17,7 +17,7 @@ Getting the files ----------------- First, you need to get the correct files. You will always need the -`wxWidgets-3.2.9-headers.7z` one but the rest depends on your compiler version +`wxWidgets-3.2.10-headers.7z` one but the rest depends on your compiler version and architecture: as different versions of MSVC compiler are not binary compatible, you should select the files with the correct `vc80`, `vc90`, `vc100`, `vc110`, `vc120`, or `vc14x` @@ -28,14 +28,14 @@ or the ones without this suffix for the still more common 32-bit builds. After determining the combination of suffixes you need, you should download the "Dev" and the "ReleaseDLL" files in addition to the "Headers" one above, e.g. for 32-bit MSVS 2017 development you need -`wxMSW-3.2.9_vc14x_Dev.7z` and `wxMSW-3.2.9_vc14x_ReleaseDLL.7z`. +`wxMSW-3.2.10_vc14x_Dev.7z` and `wxMSW-3.2.10_vc14x_ReleaseDLL.7z`. All binaries are available at: -https://www.wxwidgets.org/downloads#v3.2.9_msw +https://www.wxwidgets.org/downloads#v3.2.10_msw Once you have the files you need, unzip all of them into the same directory, for -example `c:\wx\3.2.9`. You should have `include` and `lib` subdirectories under +example `c:\wx\3.2.10`. You should have `include` and `lib` subdirectories under this directory, as well as files such as `wxwidgets.props`. Note: To avoid hard-coding this path into your projects, define `wxwin` diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt index 1a4702bb88dd..884f7fbd5f0c 100644 --- a/docs/publicity/announce.txt +++ b/docs/publicity/announce.txt @@ -1,41 +1,35 @@ -December 12, 2015 -- The wxWidgets team is pleased to announce a new +March 3, 2015 -- The wxWidgets team is pleased to announce a new stable release of our open source framework for the development of native cross-platform applications in C++. -wxWidgets 3.2.9 is part of the API and ABI-stable 3.2.x release series and is +wxWidgets 3.2.10 is part of the API and ABI-stable 3.2.x release series and is now available from https://www.wxwidgets.org/downloads/ and - https://github.com/wxWidgets/wxWidgets/releases/v3.2.9 + https://github.com/wxWidgets/wxWidgets/releases/v3.2.10 -This release doesn't add any major new features, but contains some important -fixes for bugs found in the previous 3.2.8 release: +This is a minor bug-fix release with just a single new addition: wxWidgets now +includes project files for Microsoft Visual Studio 2026. -- Fix crash when using Farsi as system language under macOS (#25561). -- Fix handling total window size with GNOME with X11 (#25348). -- Fix memory leak when using wxOverlay (#24500). -- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). -- Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). -- Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). +It does contain a number of important bug fixes for macOS port of wxWidgets, +notably: -The new release still contains a couple of enhancements, including: +- Fix install names of the libraries when using "make install" (#25675). +- Fix crash on some key presses in wxDataViewCtrl (#26160). +- Fix memory leaks in a number of controls (#26208). +- Fix regression in wxFileDialog filters in 3.2.9 (#26148). +- Many fixes for macOS 26 Tahoe (#26058, #25767, #26121, #26095). -- Many improvements to CMake build system (#25448, #25749, #25998). -- Support for building under macOS 26 Tahoe (#25798). -- Fix wxStyledTextCtrl support in screen readers (Maarten Bent, #25963). -- Respect HTML5 charset attribute in wxHTML (Kees van der Oord, #25546). -- Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). +Some other bugs fixed in this release: -Other changes include: - -- Fix memory leak in wxColour::Set() under macOS (#25569). -- Fix memory leak when using wxOverlay in wxGTK (#24500). -- Reduce wxStaticBitmap GDI resource usage in wxMSW (Alex Shvartzkop, #25698). -- Significantly improve performance of drawing bitmaps in wxAUI (#23841). +- Don't use first image for wxListCtrl items without images in wxMSW (#26062). +- Fix regression in wxStaticBitmap::SetBitmap() in wxMSW 3.2.9 (#26106). +- Handle font names longer than 31 characters in wxMSW (moi15moi, #25333). +- Fix right/middle click events in vertical wxAuiToolBar (#26242). Please see the full change log for more details: diff --git a/docs/readme.txt b/docs/readme.txt index 53a6b5990125..63b958bd22bc 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -32,32 +32,27 @@ installation instructions. -Changes since 3.2.8 +Changes since 3.2.9 ------------------- -This release doesn't add any major new features, but contains some important -fixes for bugs found in the previous 3.2.8 release: +This is a minor bug-fix release with just a single new addition: wxWidgets now +includes project files for Microsoft Visual Studio 2026. -- Fix crash when using Farsi as system language under macOS (#25561). -- Fix handling total window size with GNOME with X11 (#25348). -- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733). -- Fix missing wxEVT_CHAR for Ctrl-Letter in non-US layouts (#25384). -- Fix selecting columns in wxGrid with mouse (Dietmar Schwertberger, #25884). +It does contain a number of important bug fixes for macOS port of wxWidgets, +notably: -The new release still contains a couple of enhancements, including: +- Fix install names of the libraries when using "make install" (#25675). +- Fix crash on some key presses in wxDataViewCtrl (#26160). +- Fix memory leaks in a number of controls (#26208). +- Fix regression in wxFileDialog filters in 3.2.9 (#26148). +- Many fixes for macOS 26 Tahoe (#26058, #25767, #26121, #26095). -- Many improvements to CMake build system (#25448, #25749, #25998). -- Support for building under macOS 26 Tahoe (#25798). -- Fix wxStyledTextCtrl support in screen readers (Maarten Bent, #25963). -- Respect HTML5 charset attribute in wxHTML (Kees van der Oord, #25546). -- Add support for using EGL 1.4 (and not 1.5) in wxGLCanvas (#22325). +Some other bugs fixed in this release: -Other changes include: - -- Fix memory leak in wxColour::Set() under macOS (#25569). -- Fix memory leak when using wxOverlay in wxGTK (#24500). -- Reduce wxStaticBitmap GDI resource usage in wxMSW (Alex Shvartzkop, #25698). -- Significantly improve performance of drawing bitmaps in wxAUI (#23841). +- Don't use first image for wxListCtrl items without images in wxMSW (#26062). +- Fix regression in wxStaticBitmap::SetBitmap() in wxMSW 3.2.9 (#26106). +- Handle font names longer than 31 characters in wxMSW (moi15moi, #25333). +- Fix right/middle click events in vertical wxAuiToolBar (#26242). Please see the full change log for more details: @@ -161,4 +156,4 @@ developed by its users and your contributions to it are always welcome! Have fun! -The wxWidgets Team, December 2015 +The wxWidgets Team, March 2026 diff --git a/docs/release.md b/docs/release.md index 3f2d7b7cac94..dbf0c8c0e46e 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,33 +1,33 @@ Welcome to wxWidgets, a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. -wxWidgets 3.2.9 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.8 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. +wxWidgets 3.2.10 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.9 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. We recommend using this version for any new wxWidgets applications. Existing applications using wxWidgets 3.0 or 3.1 shouldn't require any special effort to upgrade to this version too, so please try upgrading them to it. -Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/changes.txt) for more details of the changes in it. +Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.10/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.10/docs/changes.txt) for more details of the changes in it. ## Source Files and Documentation If you intend to build wxWidgets from sources (which is recommended), please do **NOT** download the files using the "Source code" links just above, which are automatically generated by GitHub and don't contain the submodules sources which are necessary for building wxWidgets. -Instead, download one of [wxWidgets-3.2.9.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxWidgets-3.2.9.zip) or [wxWidgets-3.2.9.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxWidgets-3.2.9.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.9.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxWidgets-3.2.9.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. +Instead, download one of [wxWidgets-3.2.10.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxWidgets-3.2.10.zip) or [wxWidgets-3.2.10.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxWidgets-3.2.10.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.10.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxWidgets-3.2.10.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. -In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.9). +In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.10). -Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.9/wxMSW-3.2.9-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. +Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxMSW-3.2.10-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. To verify your download please use the following SHA-1 checksums: - fd1496375d93d5ad5c7861e6a3731f58cccafc9b wxMSW-3.2.9-Setup.exe - 5af41900f947deca7d81ebadda463262562c5c64 wxWidgets-3.2.9-docs-chm.zip - 28c6d56a43451379776116d5b2ac0ccd63ed9ad7 wxWidgets-3.2.9-docs-html.tar.bz2 - c6dc3b903fe5182176381156fcaff7b478ada05b wxWidgets-3.2.9-docs-html.zip - f6affb6e4dfd11f8dd3881c408e26759f8fdf472 wxWidgets-3.2.9-headers.7z - 927568479fef386a24196b4ba2d9229fdcdbbceb wxWidgets-3.2.9.7z - 1eb548171cef2e822a2577f09e5383643fb604ce wxWidgets-3.2.9.chm - 7708bfb796dbf8cad90e9cb6c8ad06d8e0a22c81 wxWidgets-3.2.9.tar.bz2 - b914bd955c9b72ac62f602add8fca4dc61727323 wxWidgets-3.2.9.zip + 0000000000000000000000000000000000000000 wxMSW-3.2.10-Setup.exe + 0000000000000000000000000000000000000000 wxWidgets-3.2.10-docs-chm.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.10-docs-html.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.10-docs-html.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.10-headers.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.10.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.10.chm + 0000000000000000000000000000000000000000 wxWidgets-3.2.10.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.10.zip ## Binaries @@ -40,7 +40,7 @@ We provide pre-built binary files for the following compilers: ### For Developers -For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.9_Headers.7z` file and one of `wxMSW-3.2.9-vcXXX_Dev.7z` or `wxMSW-3.2.9_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). +For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.10_Headers.7z` file and one of `wxMSW-3.2.10-vcXXX_Dev.7z` or `wxMSW-3.2.10_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols. @@ -48,79 +48,79 @@ Note that if you're setting up a new project using these binaries, the simplest ### For End Users -End users may download one of `wxMSW-3.2.9_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.9_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. +End users may download one of `wxMSW-3.2.10_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.10_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. ### For Debugging -* Microsoft Visual C++ users: Files `wxMSW-3.2.9_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. +* Microsoft Visual C++ users: Files `wxMSW-3.2.10_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. * MinGW-TDM users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contains the debug symbols). ### Binary File Download Verification To verify your download please use the following SHA-1 checksums: - 687ed4d6a7b1dfdb310680cade550da204bff899 wxMSW-3.2.9_gcc1030TDM_Dev.7z - 22edf443395644da56d26ca6e9c533ff89553199 wxMSW-3.2.9_gcc1030TDM_ReleaseDLL.7z - f51cb8ffa18691d24f446a2e2be61d6776bdca6a wxMSW-3.2.9_gcc1030TDM_x64_Dev.7z - 3337905f470ad169d29c93380b699cc3cff6b747 wxMSW-3.2.9_gcc1030TDM_x64_ReleaseDLL.7z - c8566260f5699e55fe0cccbd425580e07d7d1560 wxMSW-3.2.9_gcc1220_Dev.7z - 350b4a03a3e1f79e943e6b80a064575625c2b6b4 wxMSW-3.2.9_gcc1220_ReleaseDLL.7z - 571ff6cf3493ab9ccf2809b63a3ebcbe92b1b34e wxMSW-3.2.9_gcc1220_x64_Dev.7z - ac347b5554dbdd36dab48f22617f6806f6bb64df wxMSW-3.2.9_gcc1220_x64_ReleaseDLL.7z - a665120e7ebbd7c07372cd24ed030e7aaa951fd4 wxMSW-3.2.9_gcc1320_Dev.7z - 990b20266dd627a241913fef81d343cbeb1c5dc7 wxMSW-3.2.9_gcc1320_ReleaseDLL.7z - 32057eac9dc39ab7cc5ba75b4cba1b9b83a28a3b wxMSW-3.2.9_gcc1320_x64_Dev.7z - 0575f3dc22e5e6101ac0f6bab94dccadab6620aa wxMSW-3.2.9_gcc1320_x64_ReleaseDLL.7z - b3cfa34c20c172e9cf323d37de40987e451a77c2 wxMSW-3.2.9_gcc1420_Dev.7z - f41e4374f229c5a11c41a45973d465479b685524 wxMSW-3.2.9_gcc1420_ReleaseDLL.7z - 4fa006f8405a8d082ec57a9c1bbc3908283a477c wxMSW-3.2.9_gcc1420_x64_Dev.7z - 95dcc6818dfe8e647b80c2fbbdb98f223a722a46 wxMSW-3.2.9_gcc1420_x64_ReleaseDLL.7z - 635b9b8d5a3c9ad9a41f9b6979f66e16301e96b1 wxMSW-3.2.9_gcc1520_Dev.7z - f491abb8d44595b273ac5bd9e1fac323560b57ab wxMSW-3.2.9_gcc1520_ReleaseDLL.7z - a48009378a775b70bbdfbd35f4ba65777fea652c wxMSW-3.2.9_gcc1520_x64_Dev.7z - 7cef71083b49f407cf43514e9eca0a761d6bc93f wxMSW-3.2.9_gcc1520_x64_ReleaseDLL.7z - ce4c47a3ae6ecc66fce4a674579524fc170e725c wxMSW-3.2.9_gcc730_Dev.7z - de891accf029ae486de94bfc9f9ab2a6190b314e wxMSW-3.2.9_gcc730_ReleaseDLL.7z - 3e7993c1ccd25b87825240379b7204a5a9713672 wxMSW-3.2.9_gcc730_x64_Dev.7z - 3726c9125f6d22794aa585c6599a232f6a74776f wxMSW-3.2.9_gcc730_x64_ReleaseDLL.7z - d8792a77465dc61e28520b41a77cde71782b21b9 wxMSW-3.2.9_gcc810_Dev.7z - 0584d566a425d1786b801c81cce06aabc517eafb wxMSW-3.2.9_gcc810_ReleaseDLL.7z - 4cf11517a03f31a82d1b524b334df530c89328cb wxMSW-3.2.9_gcc810_x64_Dev.7z - eabf7c92a18e99fbf8635d0d27b33fb1f68ec1ae wxMSW-3.2.9_gcc810_x64_ReleaseDLL.7z - 3cb7d6bbe2edf17333f058a9b332d7cb52935ed1 wxMSW-3.2.9_gcc1420UCRT_Dev.7z - 867309d9a2dcd76cbd3da979e0cd23d86c9815e4 wxMSW-3.2.9_gcc1420UCRT_ReleaseDLL.7z - 08a65f5328c4094caac4f21121a9e122e053319c wxMSW-3.2.9_gcc1420UCRT_x64_Dev.7z - 96ff9e21735271b593664e2a66935d17139f8d8f wxMSW-3.2.9_gcc1420UCRT_x64_ReleaseDLL.7z - 291a752b129ab0402b05bf55903cd5d146c9dcc8 wxMSW-3.2.9_vc90_Dev.7z - 358a6a130a666f34418e355cb3285171308788db wxMSW-3.2.9_vc90_ReleaseDLL.7z - 9dfdb9c29b44db342602f126fcfcf89fb42a3449 wxMSW-3.2.9_vc90_ReleasePDB.7z - 395a77ee037562d6b3ee4d3058c7f7a19be07317 wxMSW-3.2.9_vc90_x64_Dev.7z - f01a28ab360b45a6ec4e6a8f6c12bc3885188623 wxMSW-3.2.9_vc90_x64_ReleaseDLL.7z - 0615f4b87a5025427e485489647aefbdc6e4dbcf wxMSW-3.2.9_vc90_x64_ReleasePDB.7z - cdab5d7f2823520c4eb2752b397ff3b2655bed25 wxMSW-3.2.9_vc100_Dev.7z - 0c1f55d78ba08f9183fc22f1fbc20e9e63b7917f wxMSW-3.2.9_vc100_ReleaseDLL.7z - 1033a180ef969a78db845777512a123949619cdd wxMSW-3.2.9_vc100_ReleasePDB.7z - 11fe54100e160387da39b301c2c3586ffa4307fd wxMSW-3.2.9_vc100_x64_Dev.7z - af23db3147790a3d403d35626c872360d9c96a5b wxMSW-3.2.9_vc100_x64_ReleaseDLL.7z - 500725824dbe344e5878b4e7f93360da37c1f7ce wxMSW-3.2.9_vc100_x64_ReleasePDB.7z - 51fc9b4110fc4a62e3660897a0b7502b75af6157 wxMSW-3.2.9_vc110_Dev.7z - 1e9dc2379f1f867058d3eceb90937fbadacb6fc9 wxMSW-3.2.9_vc110_ReleaseDLL.7z - ddcfd404fd885dd69a599eb1ffdafc7df66bf675 wxMSW-3.2.9_vc110_ReleasePDB.7z - c9e264d6e3c1366e1a152d29def13f165090b857 wxMSW-3.2.9_vc110_x64_Dev.7z - fbfd3376d72b7435a2ea3afaec40e28ee9813f8c wxMSW-3.2.9_vc110_x64_ReleaseDLL.7z - 0aaf15fc56f622701f90a73f6ca34b46c8346573 wxMSW-3.2.9_vc110_x64_ReleasePDB.7z - 01608e5d06713899e1ba0937c608abebaf8117cc wxMSW-3.2.9_vc120_Dev.7z - 875ec678a0266e8de3be31750918432f15b2c237 wxMSW-3.2.9_vc120_ReleaseDLL.7z - 92268f98db7f733921acfb06e3a0e20fb4693f10 wxMSW-3.2.9_vc120_ReleasePDB.7z - 2538eec92411319861f056a05738e1f6c927af03 wxMSW-3.2.9_vc120_x64_Dev.7z - 98fa8b9322db4ea21bf51109bbd210b3bec5c2ff wxMSW-3.2.9_vc120_x64_ReleaseDLL.7z - b97324cd1462d808d5807292a1ff81760bd2b2ab wxMSW-3.2.9_vc120_x64_ReleasePDB.7z - 012d823743b35365cb7f81bdd9e2daeb7359ff69 wxMSW-3.2.9_vc14x_Dev.7z - c8a4c510d98801d8cce181baf7ed6235f443cd22 wxMSW-3.2.9_vc14x_ReleaseDLL.7z - b1b2f4af4c19f9058e89bc86988f90e86e640a5c wxMSW-3.2.9_vc14x_ReleasePDB.7z - d37898a5391c7b91d11e48d71b15d23b91859054 wxMSW-3.2.9_vc14x_x64_Dev.7z - 9056310a59ce80b9ed2f8a6b83febc753d246b69 wxMSW-3.2.9_vc14x_x64_ReleaseDLL.7z - 9f25af5cad3561b9becdad42eecee07ade22fd42 wxMSW-3.2.9_vc14x_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_x64_ReleasePDB.7z ## Reporting Problems From 626df737c936b6048742161eba7e99c499ec88ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Tue, 17 Mar 2026 16:29:50 +0100 Subject: [PATCH 301/416] Add support for wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR to wxString This symbol is similar to the existing wxNO_IMPLICIT_WXSTRING_ENCODING and can be defined when building the application (as opposed to when building the library) to disable implicit wxString conversions to pointer types, i.e. char*, wchat_t* and void*. (partially cherry-picked from 889845fbc4a89e2fba62c96e04d26b0cf5639cd1) See #26307. --- docs/changes.txt | 7 +++++++ docs/doxygen/overviews/string.h | 8 +++++++- include/wx/string.h | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index f86a9025e241..1a8a52f4f500 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,6 +252,13 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. +3.2.11: (released 2026-??-??) + +All: + +- Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307). + + 3.2.10: (released 2026-03-03) ----------------------------- diff --git a/docs/doxygen/overviews/string.h b/docs/doxygen/overviews/string.h index e79156577236..aa1022740446 100644 --- a/docs/doxygen/overviews/string.h +++ b/docs/doxygen/overviews/string.h @@ -248,7 +248,7 @@ is not appropriate for the current software and platform. The macro @c wxNO_IMPLICIT_WXSTRING_ENCODING disables all implicit conversions, and forces the code to explicitly indicate the encoding of all C strings. -Finally note that encodings, either implicitly or explicitly selected, +Note that encodings, either implicitly or explicitly selected, may not be able to represent all the string's characters. The result in this case is undefined: the string may be empty, or the unrepresentable characters may be missing or wrong. @@ -271,6 +271,12 @@ c = s.utf8_str(); // Alias for the above c = s.mb_str(wxConvLibc); // Always compiles, explicit encoding @endcode +Finally, please note that implicit conversion to both `const char*` (which +is unsafe for the reasons explained above) and to `const wchar_t*` (which +is safe from this point of view, but may still be considered dangerous, as +any implicit conversion) may be entirely disabled by defining +`wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR` when building the application. + @subsection overview_string_iterating Iterating wxString Characters As previously described, when wxUSE_UNICODE_UTF8==1, wxString internally diff --git a/include/wx/string.h b/include/wx/string.h index 28dbadd50dcf..7e0cd12fce2d 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -1631,7 +1631,7 @@ class WXDLLIMPEXP_BASE wxWARN_UNUSED wxString // and not defining it in STL build also helps us to get more clear error // messages for the code which relies on implicit conversion to char* in // STL build -#if !wxUSE_STD_STRING_CONV_IN_WXSTRING +#if !wxUSE_STD_STRING_CONV_IN_WXSTRING && !defined(wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR) operator const wchar_t*() const { return c_str(); } #if wxUSE_UNSAFE_WXSTRING_CONV && !defined(wxNO_UNSAFE_WXSTRING_CONV) @@ -1642,7 +1642,7 @@ class WXDLLIMPEXP_BASE wxWARN_UNUSED wxString operator const void*() const { return c_str(); } #endif // wxUSE_UNSAFE_WXSTRING_CONV && !defined(wxNO_UNSAFE_WXSTRING_CONV) -#endif // !wxUSE_STD_STRING_CONV_IN_WXSTRING +#endif // !wxUSE_STD_STRING_CONV_IN_WXSTRING && !defined(wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR) // identical to c_str(), for MFC compatibility const wxCStrData GetData() const { return c_str(); } From 788bafe3167270f841cfb1f33330d7175e317181 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 29 Jan 2026 22:54:38 +0100 Subject: [PATCH 302/416] Cache the Go installer in AppVeyor CI No need to download it every time. See #26132. (cherry picked from commit 7ba5acc72c22d5cf36f33ac927b4b11f0ffa477e) --- appveyor.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 47c483f88487..98b3f705d5ec 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -64,6 +64,9 @@ environment: SHARED: ON CONFIGURATION: Release +cache: + - '%USERPROFILE%\go%GOVERSION%.windows-amd64.msi' + clone_depth: 50 install: git submodule update --init @@ -95,8 +98,10 @@ before_test: echo Getting and launching httpbin. rmdir %GOROOT% /s /q mkdir %GOROOT% - appveyor DownloadFile https://go.dev/dl/go%GOVERSION%.windows-amd64.msi - msiexec /i go%GOVERSION%.windows-amd64.msi INSTALLDIR="%GOROOT%" /q + cd %USERPROFILE% + set go_exe=go%GOVERSION%.windows-amd64.msi + if not exist "%go_exe%" appveyor DownloadFile https://go.dev/dl/%go_exe% + msiexec /i %go_exe% INSTALLDIR="%GOROOT%" /q go version go install github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@v2 set PATH=%PATH%;%GOPATH%\bin From 2de9dd30be92c80d021be5051c2349ccc2409823 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 22 Nov 2024 00:40:29 +0100 Subject: [PATCH 303/416] Decrease clone depth for AppVeyor There doesn't seem to be any need to get anything but the latest commit. (cherry picked from commit ab689f0ade05f268c781dc423b43b9365e544c31) --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 98b3f705d5ec..40feaba8e2fb 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -67,7 +67,7 @@ environment: cache: - '%USERPROFILE%\go%GOVERSION%.windows-amd64.msi' -clone_depth: 50 +clone_depth: 1 install: git submodule update --init From 990e0516f5c8eb8b67db579ab8f266a62ae2f65e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 2 Mar 2026 18:03:45 +0100 Subject: [PATCH 304/416] Use go-httpbin v2.20.0 in AppVeyor CI The next 2.21 version requires Go version newer than the one available there and installing it takes extra time and fails completely when using (too old?) Visual Studio 2015 image. (cherry picked from commit 3e3ccab35c6cf37b989c1f1e3340a3eb731317e8) --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 40feaba8e2fb..baf21ebd81c3 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -103,7 +103,7 @@ before_test: if not exist "%go_exe%" appveyor DownloadFile https://go.dev/dl/%go_exe% msiexec /i %go_exe% INSTALLDIR="%GOROOT%" /q go version - go install github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@v2 + go install github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@v2.20.0 set PATH=%PATH%;%GOPATH%\bin - ps: | Start-Job -Name wx_httpbin { go-httpbin -host 127.0.0.1 -port 8081 2>&1 > c:\projects\wxwidgets\httpbin.log } From 1a41892a41e7ea262552b7514d1128b7386ebb47 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Mon, 9 Mar 2026 15:47:40 +0000 Subject: [PATCH 305/416] Fix copy/paste in wxGTK when a clipboard manager is running Simplify clipboard operations in GTK to not clear clipboard before changing its contents. When changing the clipboard contents the current code emits a lot of noise on the X11 connection, it clears the contents and verifies it's empty before settings the new content. This non-atomic operation is problematic for desktop environments with clipboard managers that try to replace an empty clipboard. It becomes racey as to the order of things being set. See #26265, #26278. (cherry picked from commit f11053a2d37607f8b776b3707a2dcf408aa318f6) --- docs/changes.txt | 5 +++++ src/gtk/clipbrd.cpp | 15 ++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1a8a52f4f500..1d319b2f7b2d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -253,11 +253,16 @@ Changes in behaviour which may result in build errors 3.2.11: (released 2026-??-??) +----------------------------- All: - Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307). +wxGTK: + +- Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). + 3.2.10: (released 2026-03-03) ----------------------------- diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index c6c56c04ab6b..b87413222915 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -661,8 +661,6 @@ bool wxClipboard::SetData( wxDataObject *data ) wxCHECK_MSG( data, false, wxT("data is invalid") ); - Clear(); - return AddData( data ); } @@ -673,9 +671,16 @@ bool wxClipboard::AddData( wxDataObject *data ) wxCHECK_MSG( data, false, wxT("data is invalid") ); // we can only store one wxDataObject so clear the old one - Clear(); - - Data() = data; + if ( m_usePrimary ) + { + delete m_dataPrimary; + m_dataPrimary = data; + } + else + { + delete m_dataClipboard; + m_dataClipboard = data; + } // get formats from wxDataObjects const size_t count = data->GetFormatCount(); From 50321551aac88f1b72f73d697a0cc63500685b0c Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Tue, 31 Mar 2026 15:49:21 -0700 Subject: [PATCH 306/416] Fix memory leak in wxDataViewChoiceRenderer on GTK (cherry picked from commit c456ccb28f96f536774896b312aca1aa9ebb5b0a) --- src/gtk/dataview.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 7442989bb2b3..4fce8107496f 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -2980,6 +2980,7 @@ wxDataViewChoiceRenderer::wxDataViewChoiceRenderer( const wxArrayString &choices "text-column", 0, "has-entry", FALSE, NULL); + g_object_unref(store); bool editable = (mode & wxDATAVIEW_CELL_EDITABLE) != 0; g_object_set (m_renderer, "editable", editable, NULL); From 12754ce442e8ff1538bc0f0593b64d3e5d8b9fa7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 3 Apr 2026 00:24:28 +0200 Subject: [PATCH 307/416] Improve wxListCtrl::GetColumn() documentation Mention that the index parameter must be valid as it is may not be clear. See #26337. (cherry picked from commit 2d6aaa14d5a45fc9ac891bf9cf7e521bdbe4b74a) --- interface/wx/listctrl.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/interface/wx/listctrl.h b/interface/wx/listctrl.h index 5cbffab8e303..bc65cd3add6e 100644 --- a/interface/wx/listctrl.h +++ b/interface/wx/listctrl.h @@ -555,12 +555,20 @@ class wxListCtrl : public wxControl /** Gets information about this column. + See SetItem() for more information. @beginWxPerlOnly In wxPerl this method takes only the @a col parameter and returns a @c Wx::ListItem (or @c undef). @endWxPerlOnly + + @param col The column index. It must be valid, i.e. positive or 0 and + strictly less than GetColumnCount(). The function asserts if this + is not the case. + @param item Output parameter filled with the information about the + column on successful return. + @return Always @true if the column index is valid. */ bool GetColumn(int col, wxListItem& item) const; From d5fbe7fd3949b9e3d7152ae589041ef24d20e22d Mon Sep 17 00:00:00 2001 From: Florian Larysch Date: Fri, 3 Apr 2026 21:39:43 +0200 Subject: [PATCH 308/416] Fix eglDestroySurface() argument order when using EGL with X11 eglDestroySurface takes the display first and the surface second rather than the other way around. Since both EGLDisplay and EGLSurface are just typedef'd to void* this doesn't raise a compiler warning. This currently doesn't crash at runtime because Mesa validates the display pointer against a list of known good values and fails gracefully, but it still causes a resource leak. The wrong call was present since the changes of 23ccdb2 (Improve and document wxGLCanvas::CreateSurface(), 2023-03-21), see #23366. See #26341. (cherry picked from commit a62b29135380fe46eaa06307ffe3722506f357e1) --- docs/changes.txt | 2 ++ src/unix/glegl.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1d319b2f7b2d..79f038414e7d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,8 @@ All: wxGTK: - Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). +- Fix memory leak in wxDataViewChoiceRenderer. +- Fix resource leak when using EGL with X11 (Florian Larysch, #26341). 3.2.10: (released 2026-03-03) diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index baee0da5b8ed..15c2b5698e24 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -633,7 +633,7 @@ bool wxGLCanvasEGL::CreateSurface() { if ( m_surface != EGL_NO_SURFACE ) { - eglDestroySurface(m_surface, m_display); + eglDestroySurface(m_display, m_surface); m_surface = EGL_NO_SURFACE; } From b826d2da110a310cdbe1fcf210659fde0197b5c8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 3 Apr 2026 23:54:26 +0200 Subject: [PATCH 309/416] Compare EGL surface with EGL_NO_SURFACE for consistency No real changes because EGL_NO_SURFACE is just 0 anyhow, but write the check for the surface being valid in a way consistent with all the other ones in this file. (cherry picked from commit ec1ac0879a09a182ed5e1c087900a5fe9fbb05ca) --- src/unix/glegl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index 15c2b5698e24..dac714ad9331 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -709,7 +709,7 @@ wxGLCanvasEGL::~wxGLCanvasEGL() { if ( m_config && m_config != ms_glEGLConfig ) delete m_config; - if ( m_surface ) + if ( m_surface != EGL_NO_SURFACE ) eglDestroySurface(m_display, m_surface); #ifdef GDK_WINDOWING_WAYLAND DestroyWaylandSubsurface(); From 87a6ca78475722f83915a836b31a6769264037dc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 4 Apr 2026 15:25:02 +0200 Subject: [PATCH 310/416] Fix layout of new page in the notebook sample Use sizer to position the buttons on the new pages instead of hardcoding the buttons positions which, unsurprisingly, didn't work well and resulted in buttons overlapping each other in high DPI. (cherry picked from commit e0321c2ddf9732e5b3e6b6473cb9e49e8c27b013) --- samples/notebook/notebook.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index 5b029bae306e..15f79a9f9688 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -638,8 +638,13 @@ wxPanel *MyFrame::CreateNewPage() const panel->SetHelpText("Panel with \"First\" and \"Second\" buttons"); #endif - (void) new wxButton(panel, wxID_ANY, "First button", wxPoint(10, 30)); - (void) new wxButton(panel, wxID_ANY, "Second button", wxPoint(150, 30)); + wxBoxSizer* const sizer = new wxBoxSizer(wxHORIZONTAL); + panel->SetSizer(sizer); + + sizer->Add(new wxButton(panel, wxID_ANY, "First button"), + wxSizerFlags().Border()); + sizer->Add(new wxButton(panel, wxID_ANY, "Second button"), + wxSizerFlags().Border()); return panel; } From ecc849e63887f90bab5ad39579e845449392950f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 27 Mar 2026 19:31:55 +0100 Subject: [PATCH 311/416] Take default style into account in wxMSW wxTextCtrl::SetValue() Previously this only worked for plain EDIT controls but not for the controls with wxTE_RICH[2] style because WM_SETTEXT ignores the current text style for the latter. Work around this by using EM_REPLACESEL for them instead. See #26320, #26321. (cherry picked from commit fba6003bf117efb332f938c9a4a9914d50acfc6c) --- docs/changes.txt | 4 ++++ src/msw/textctrl.cpp | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 79f038414e7d..1d8c851a6e1b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -265,6 +265,10 @@ wxGTK: - Fix memory leak in wxDataViewChoiceRenderer. - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). +wxMSW: + +- Use default style in wxTextCtrl::SetValue() (#26320). + 3.2.10: (released 2026-03-03) ----------------------------- diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index cc49eb050189..dfbd3d144cb9 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -1355,7 +1355,24 @@ void wxTextCtrl::DoWriteText(const wxString& value, int flags) if ( !m_defaultStyle.IsDefault() ) { long start, end; - GetSelection(&start, &end); + + // For the selection style to be taken into account, we must use + // EM_REPLACESEL below, WM_SETTEXT ignores the style, so ensure + // that we do, selecting all the text if necessary to do the same + // thing as WM_SETTEXT would do. + if ( !selectionOnly ) + { + start = 0; + end = GetLastPosition(); + SetSelection(start, end); // Select everything. + + selectionOnly = true; + } + else // We're already only overwriting the selection. + { + GetSelection(&start, &end); + } + SetStyle(start, end, m_defaultStyle); } From 3f99b5ddf2bad02f352fe3917ef1874cd969dd33 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 5 Apr 2026 15:22:57 +0200 Subject: [PATCH 312/416] Don't impose arbitrary maximum length on picker controls text This code was there ever since ec376c8fd9 (added wx{Colour|File|Dir|Font}PickerCtrl (patch 1472329 by Francesco), 2006-05-31), but didn't make any sense because it should be possible to enter arbitrarily long strings in these controls. Additionally, the maximum length was increased for wxFilePickerCtrl after creation which meant that that its initial contents was not shown in it, but the same string could be shown later, which was even more confusing. Just stop imposing any length constraints. See #7863, #26314. (cherry picked from commit 932004d7225c3b31f484d452325d74109856048b) --- docs/changes.txt | 1 + src/common/filepickercmn.cpp | 4 ---- src/common/pickerbase.cpp | 7 ------- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1d8c851a6e1b..96f9d4b9ac5d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -264,6 +264,7 @@ wxGTK: - Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). - Fix memory leak in wxDataViewChoiceRenderer. - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). +- Remove wrong maximum text length limitation in "picker" controls (#26314). wxMSW: diff --git a/src/common/filepickercmn.cpp b/src/common/filepickercmn.cpp index 6f9bc36e0668..a2232a223217 100644 --- a/src/common/filepickercmn.cpp +++ b/src/common/filepickercmn.cpp @@ -87,10 +87,6 @@ bool wxFileDirPickerCtrlBase::CreateBase(wxWindow *parent, DoConnect( m_picker, this ); - // default's wxPickerBase textctrl limit is too small for this control: - // make it bigger - if (m_text) m_text->SetMaxLength(512); - return true; } diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp index 8905d8d0ce11..909f88ebb16b 100644 --- a/src/common/pickerbase.cpp +++ b/src/common/pickerbase.cpp @@ -78,13 +78,6 @@ bool wxPickerBase::CreateBase(wxWindow *parent, return false; } - // set the maximum length allowed for this textctrl. - // This is very important since any change to it will trigger an update in - // the m_picker; for very long strings, this real-time synchronization could - // become a CPU-blocker and thus should be avoided. - // 32 characters will be more than enough for all common uses. - m_text->SetMaxLength(32); - // set the initial contents of the textctrl m_text->SetValue(text); From 6ab2a59ffb552ff4ce4bf57abf95cbd44fc8ff88 Mon Sep 17 00:00:00 2001 From: Florian Larysch Date: Sun, 5 Apr 2026 16:54:14 +0200 Subject: [PATCH 313/416] Fix crash with wxGLCanvas using EGL inside wxNotebook EGL implementation of wxGLCanvas requires its GTKHandleRealized() to be called in order to call wxGLCanvasEGL::OnRealized(), but this didn't happen when wxGLCanvas was used as a wxNotebook page because such pages are already realized by the time wxWindow::PostCreation() is called due to the wxNotebook-specific hack in its AddChildGTK() and PostCreation() skipped connecting to "realize" signal in this case. Fix this by always connecting to this signal, as the page can, and will, be unrealized and then re-realized later and the window must be notified when this happens. This commit is best viewed ignoring whitespace-only changes. See #26340. Co-authored-by: Vadim Zeitlin (cherry picked from commit ce69bc9bbe2b9bb22d993c7314a4f9d96363e5b2) --- docs/changes.txt | 1 + src/gtk/window.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 96f9d4b9ac5d..a25381f65588 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All: wxGTK: - Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). +- Fix crash with EGL-based wxGLCanvas in wxNotebook (Florian Larysch, #26340). - Fix memory leak in wxDataViewChoiceRenderer. - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). - Remove wrong maximum text length limitation in "picker" controls (#26314). diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 171dddddf832..febea5d54efa 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -3071,11 +3071,12 @@ void wxWindowGTK::PostCreation() { GTKHandleRealized(); } - else - { - g_signal_connect (connect_widget, "realize", - G_CALLBACK (gtk_window_realized_callback), this); - } + + // Note that we connect to "realize" even if the widget is already realized + // because we might be unrealized later and then realized again, and we + // must be notified when the widget is re-realized again. + g_signal_connect (connect_widget, "realize", + G_CALLBACK (gtk_window_realized_callback), this); g_signal_connect(connect_widget, "unrealize", G_CALLBACK(unrealize), this); if (!IsTopLevel()) From 2ecb519e62639c8cec29059583f1f32621422542 Mon Sep 17 00:00:00 2001 From: AliKet Date: Mon, 30 Mar 2026 22:18:56 +0100 Subject: [PATCH 314/416] Fix wxDC::StretchBlit() when blitting a DIB in RTL under MSW Use LogicalToDevice() instead of LogicalToDevice{X,Y}() which don't work correctly in RTL layout in this branch (they do in 3.3). See #19344, #26266. --- docs/changes.txt | 1 + src/msw/dc.cpp | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index a25381f65588..91da32e375e1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -269,6 +269,7 @@ wxGTK: wxMSW: +- Fix wxBufferedPaintDC when using RTL layout (AliKet, #26266). - Use default style in wxTextCtrl::SetValue() (#26320). diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 4dde3e3f8475..f70246914104 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -2383,7 +2383,9 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest, xdest += XLOG2DEV(0); ydest += YLOG2DEV(0); - const int xsrcOrig = xsrc; + // Manually adjusted for RTL layout to fix incorrect scrolling of the DIB + // when blitted with ::StretchDIBits() below. + const int xsrcOrig = GetLayoutDirection() == wxLayout_LeftToRight ? xsrc : -xsrc; const int ysrcOrig = ysrc; // This does the same thing as XLOG2DEV() but for the source DC. @@ -2603,10 +2605,23 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest, // automatically as it doesn't even work with the source HDC. // So do this manually to ensure that the coordinates are // interpreted in the same way here as in all the other cases. - xsrc = source->LogicalToDeviceX(xsrcOrig); - ysrc = source->LogicalToDeviceY(ysrcOrig); - srcWidth = source->LogicalToDeviceXRel(srcWidth); - srcHeight = source->LogicalToDeviceYRel(srcHeight); + // Notice that drawings performed on a DIB section are not + // automatically mirrored when SetLayout(LAYOUT_RTL) is called. + // IOW, blitting a DIB using StretchDIBits() will always look + // incorrect in RTL layout, because SetLayout() cannot modify + // drawing directly into the bits of a DIB as documented in MSDN. + // Fixing this RTL issue is by using LogicalToDevice{Rel}() and + // rely on StretchDIBits() to create a mirror image of the bitmap. + // LogicalToDevice[XY]{Rel}() doesn't work correctly in RTL as it + // doesn't account for m_signX (which is always +1 even in RTL). + + const wxPoint pt = source->LogicalToDevice(xsrcOrig, ysrcOrig); + const wxSize sz = source->LogicalToDeviceRel(srcWidth, srcHeight); + + xsrc = pt.x; + ysrc = pt.y; + srcWidth = sz.x; + srcHeight = sz.y; // Figure out what co-ordinate system we're supposed to specify // ysrc in. From 45d026335973107c11bcd4186b7f5eaabcb49a06 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 7 Apr 2026 20:43:27 +0200 Subject: [PATCH 315/416] Fix for titlebar showing on Wayland with wxBORDER_NONE and server-side decorations Removing decorations with gtk_window_set_decorated() is insufficient to disable titlebar with some Wayland compositors. See #26357. (cherry picked from commit 236e5c2451fa8ddca85f9bdf8778c5c38d0083a2) --- docs/changes.txt | 1 + src/gtk/toplevel.cpp | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 91da32e375e1..2572f41b9006 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -265,6 +265,7 @@ wxGTK: - Fix crash with EGL-based wxGLCanvas in wxNotebook (Florian Larysch, #26340). - Fix memory leak in wxDataViewChoiceRenderer. - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). +- Fix showing title bar under Wayland with wxBORDER_NONE (#26357). - Remove wrong maximum text length limitation in "picker" controls (#26314). wxMSW: diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index b530883b1e28..b82803820533 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -844,14 +844,6 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, if ( style & wxCAPTION ) m_gdkDecor |= GDK_DECOR_TITLE; -#if GTK_CHECK_VERSION(3,10,0) - else if ( - wxGTKImpl::IsWayland(display) && - gtk_check_version(3,10,0) == NULL) - { - gtk_window_set_titlebar(GTK_WINDOW(m_widget), gtk_header_bar_new()); - } -#endif if ( style & wxSYSTEM_MENU ) m_gdkDecor |= GDK_DECOR_MENU; @@ -868,6 +860,14 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, m_gdkDecor |= GDK_DECOR_RESIZEH; } } +#if GTK_CHECK_VERSION(3,10,0) + if ((m_gdkDecor & GDK_DECOR_TITLE) == 0 && + wxGTKImpl::IsWayland(display) && + wx_is_at_least_gtk3(10)) + { + gtk_window_set_titlebar(GTK_WINDOW(m_widget), gtk_header_bar_new()); + } +#endif m_decorSize = GetCachedDecorSize(); int w = m_width; From 2acd490c4e7800381ff281dd9fa0721b49aa217c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 15 Apr 2026 01:45:45 +0200 Subject: [PATCH 316/416] Fix using wxCaret in a scrolled window in non-wxMSW ports Call PrepareDC() to account for scrolling. See #26282. (cherry picked from commit 96fac602e8066544d771f79a7fb8cf295ca47b9a) --- docs/changes.txt | 4 ++++ src/generic/caret.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 2572f41b9006..8211a5353749 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,10 @@ All: - Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307). +All (GUI): + +- Fix wxCaret position in scrolled windows (#26282). + wxGTK: - Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). diff --git a/src/generic/caret.cpp b/src/generic/caret.cpp index 2011fc1cf918..74ba97c93d75 100644 --- a/src/generic/caret.cpp +++ b/src/generic/caret.cpp @@ -229,6 +229,8 @@ void wxCaret::Blink() void wxCaret::Refresh() { wxClientDC dcWin(GetWindow()); + GetWindow()->PrepareDC(dcWin); + if (m_overlay.IsNative()) { wxDCOverlay dcOverlay(m_overlay, &dcWin, m_x, m_y, m_width, m_height); From 655b1d27a8882839533aa976e7ec253b54fdeb90 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 27 Apr 2026 17:16:11 +0200 Subject: [PATCH 317/416] Fix creating wxGLCanvas when using EGL 1.4 with X11 The changes of 602b80d (Support EGL 1.4 instead of previously required 1.5, 2025-11-23) were wrong for X11 because eglCreateWindowSurface(), used as the fallback when newer EGL functions are not available, requires passing it the actual X11 Window (i.e. an XID) rather than a pointer to it. Fix this by passing both the XID and a pointer to it to this function and calling the different functions with the appropriate parameter. Note that we still need to pass wl_egl_window pointer to this function when using Wayland and we need to pass a pointer to XID when using newer EGL functions. See #26410. (cherry picked from commit 8a41fd01d1c08e97ef38701d556ed128efd2e53c) --- include/wx/unix/glegl.h | 23 ++++++++++++++++++++--- src/unix/glegl.cpp | 12 +++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/include/wx/unix/glegl.h b/include/wx/unix/glegl.h index 09bcb27ce257..26703411e817 100644 --- a/include/wx/unix/glegl.h +++ b/include/wx/unix/glegl.h @@ -136,9 +136,26 @@ class WXDLLIMPEXP_GL wxGLCanvasEGL : public wxGLCanvasBase // fall back on eglCreateWindowSurface() otherwise. // // This function uses m_display and m_config which must be initialized - // before using it and should be passed either m_xwindow or m_wlEGLWindow - // depending on whether we are using X11 or Wayland. - EGLSurface CallCreatePlatformWindowSurface(void *window) const; + // before using it. + // + // Window parameter is passed twice because some of the functions above + // take it by value while others take it by pointer and this depends on + // whether we use X11 or Wayland. Use wrappers below taking correct window + // type instead of calling this function directly. + EGLSurface + DoCallCreatePlatformWindowSurface(wxUIntPtr windowID, void* windowPtr) const; + + // This one is for X11. + EGLSurface CallCreatePlatformWindowSurface(wxUIntPtr xwindow) const + { + return DoCallCreatePlatformWindowSurface(xwindow, &xwindow); + } + + // And this one is for Wayland. + EGLSurface CallCreatePlatformWindowSurface(struct wl_egl_window* window) const + { + return DoCallCreatePlatformWindowSurface(wxPtrToUInt(window), window); + } EGLConfig *m_config; diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index dac714ad9331..85c4e7195373 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -561,7 +561,9 @@ static void gtk_glcanvas_scale_factor_notify(GtkWidget* widget, } // extern "C" #endif // GDK_WINDOWING_WAYLAND -EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const +EGLSurface +wxGLCanvasEGL::DoCallCreatePlatformWindowSurface(wxUIntPtr windowID, + void* windowPtr) const { // Type of eglCreatePlatformWindowSurface[EXT](). typedef EGLSurface (*CreatePlatformWindowSurface)(EGLDisplay display, @@ -585,7 +587,7 @@ EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const if ( s_eglCreatePlatformWindowSurface ) { return s_eglCreatePlatformWindowSurface(m_display, *m_config, - window, + windowPtr, NULL); } } @@ -607,13 +609,13 @@ EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const if ( s_eglCreatePlatformWindowSurfaceEXT ) { return s_eglCreatePlatformWindowSurfaceEXT(m_display, *m_config, - window, + windowPtr, NULL); } else { return eglCreateWindowSurface(m_display, *m_config, - reinterpret_cast(window), + reinterpret_cast(windowID), NULL); } } @@ -638,7 +640,7 @@ bool wxGLCanvasEGL::CreateSurface() } m_xwindow = GDK_WINDOW_XID(window); - m_surface = CallCreatePlatformWindowSurface(&m_xwindow); + m_surface = CallCreatePlatformWindowSurface(m_xwindow); } #endif #ifdef GDK_WINDOWING_WAYLAND From 70a09d88c8f3ba63a16786ba7215bf8da7971d7e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 30 Apr 2026 00:05:51 +0200 Subject: [PATCH 318/416] Use Fedora 43 for Circle CI builds for now Latest Fedora 44 uses pre-release version of gcc 16 which is problematic, keep testing with gcc 15 from the previous Fedora release for now. --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e6fb9802c5f8..7865593e5c08 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,7 @@ version: 2.1 jobs: build-fedora: docker: - - image: fedora + - image: fedora:43 steps: - run: name: Install Git From 5be3d9059d6fe9f67369bacefed7acebf04f207a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Mon, 27 Apr 2026 18:12:25 +0200 Subject: [PATCH 319/416] Don't crash on unexpected CTFontDescription content Don't crash in wxNativeFontInfo::InitFromDescriptor() in wxOSX when the provided descriptor doesn't contain kCTFontTraitsAttribute. This can happen e.g. when the descriptor was deserialized from a plist dictionary and the corresponding font is not present on the system. See #26411. (cherry picked from commit bbdbf45dceb7485fa7cd5e5b5a87a70f5b34a5e6) --- docs/changes.txt | 4 ++++ src/osx/carbon/font.cpp | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8211a5353749..ac82dbcf42d8 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -277,6 +277,10 @@ wxMSW: - Fix wxBufferedPaintDC when using RTL layout (AliKet, #26266). - Use default style in wxTextCtrl::SetValue() (#26320). +wxOSX: + +- Fix possible crash in wxFont::SetNativeFontInfo() (Václav Slavík, #26411). + 3.2.10: (released 2026-03-03) ----------------------------- diff --git a/src/osx/carbon/font.cpp b/src/osx/carbon/font.cpp index ef48ae9245b0..7973227965cd 100644 --- a/src/osx/carbon/font.cpp +++ b/src/osx/carbon/font.cpp @@ -892,9 +892,10 @@ void wxNativeFontInfo::InitFromFontDescriptor(CTFontDescriptorRef desc) // determine approximate family - CTFontSymbolicTraits symbolicTraits; + CTFontSymbolicTraits symbolicTraits = 0; wxCFDictionaryRef traits((CFDictionaryRef)CTFontDescriptorCopyAttribute(desc, kCTFontTraitsAttribute)); - traits.GetValue(kCTFontSymbolicTrait).GetValue((int32_t*)&symbolicTraits, 0); + if (traits) + traits.GetValue(kCTFontSymbolicTrait).GetValue((int32_t*)&symbolicTraits, 0); if (symbolicTraits & kCTFontMonoSpaceTrait) m_family = wxFONTFAMILY_TELETYPE; @@ -1031,6 +1032,8 @@ CGFloat wxNativeFontInfo::GetCTWeight(CTFontDescriptorRef descr) { CGFloat weight; CFTypeRef fonttraitstype = CTFontDescriptorCopyAttribute(descr, kCTFontTraitsAttribute); + if (!fonttraitstype) + return CGFloat(0.0); wxCFDictionaryRef traits((CFDictionaryRef)fonttraitstype); traits.GetValue(kCTFontWeightTrait).GetValue(&weight, CGFloat(0.0)); return weight; @@ -1040,6 +1043,8 @@ CGFloat wxNativeFontInfo::GetCTwidth(CTFontDescriptorRef descr) { CGFloat weight; CFTypeRef fonttraitstype = CTFontDescriptorCopyAttribute(descr, kCTFontTraitsAttribute); + if (!fonttraitstype) + return CGFloat(0.0); wxCFDictionaryRef traits((CFDictionaryRef)fonttraitstype); traits.GetValue(kCTFontWidthTrait).GetValue(&weight, CGFloat(0.0)); return weight; @@ -1049,6 +1054,8 @@ CGFloat wxNativeFontInfo::GetCTSlant(CTFontDescriptorRef descr) { CGFloat slant; CFTypeRef fonttraitstype = CTFontDescriptorCopyAttribute(descr, kCTFontTraitsAttribute); + if (!fonttraitstype) + return CGFloat(0.0); wxCFDictionaryRef traits((CFDictionaryRef)fonttraitstype); traits.GetValue(kCTFontSlantTrait).GetValue(&slant, CGFloat(0.0)); return slant; From 95bfcbc82c62fe9efff8c822b0c5f0b73688f1d1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 30 Apr 2026 19:14:08 +0200 Subject: [PATCH 320/416] Improve wxFont::SetNativeFontInfo() documentation Explain that it returns true even if the font was not matched exactly. See #26411. (cherry picked from commit 52f9219bf4b730d382f7221896f6ff2b76f7ab4f) --- interface/wx/font.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/interface/wx/font.h b/interface/wx/font.h index 968919ec3a94..25d04c876051 100644 --- a/interface/wx/font.h +++ b/interface/wx/font.h @@ -1069,11 +1069,18 @@ class wxFont : public wxGDIObject Creates the font corresponding to the given native font description string which must have been previously returned by GetNativeFontInfoDesc(). - If the string is invalid, font is unchanged. + If the string is syntactically invalid, the functions returns @false + and the font is unchanged. Otherwise the function returns @true even if + the created font doesn't exactly match the description (e.g. because + some of the attributes in it are not supported or the font name is not + available on the end-user's system and so a closest match is created + instead). + This function is typically used for de-serializing a wxFont object previously saved in a string-form. - @return @true if the creation was successful. + @return @true if the font was initialized from the given string, @false + if the string was invalid and the font was not changed. @see SetNativeFontInfoUserDesc() */ @@ -1422,7 +1429,7 @@ wxFontList* wxTheFontList; Converts string to a wxFont best represented by the given string. Returns @true on success. - @see wxToString(const wxFont&) + @see wxToString(const wxFont&), wxFont::SetNativeFontInfo() @header{wx/font.h} */ @@ -1431,7 +1438,7 @@ bool wxFromString(const wxString& string, wxFont* font); /** Converts the given wxFont into a string. - @see wxFromString(const wxString&, wxFont*) + @see wxFromString(const wxString&, wxFont*), wxFont::GetNativeFontInfoDesc() @header{wx/font.h} */ From e0faab1ca3586ae02d44174abd3a056b9ec1a39b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 15 Oct 2022 20:37:40 +0200 Subject: [PATCH 321/416] Avoid harmless -Wunused-variable in unit tests This warning used to be suppressed in Catch headers, but this is not the case any longer, so work around it in the tests themselves now. (cherry picked from commit 895dd8424c9e3cfbf451279c2617121e6b140b1c) --- tests/image/image.cpp | 8 ++++++-- tests/intl/intltest.cpp | 2 ++ tests/strings/vararg.cpp | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index c0480811c511..f0811953c791 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1632,8 +1632,12 @@ TEST_CASE("wxImage::Paste", "[image][paste]") }; // Execute AddHandler() just once. - static const bool - registeredHandler = (wxImage::AddHandler(new wxPNGHandler()), true); + static bool s_registeredHandler = false; + if ( !s_registeredHandler ) + { + wxImage::AddHandler(new wxPNGHandler()); + s_registeredHandler = true; + } SECTION("Paste same size image") { diff --git a/tests/intl/intltest.cpp b/tests/intl/intltest.cpp index 75bc1ff10dbc..46960a87b241 100644 --- a/tests/intl/intltest.cpp +++ b/tests/intl/intltest.cpp @@ -213,6 +213,8 @@ void IntlTestCase::DateTimeFmtFrench() // its middle, so test it piece-wise and hope it doesn't change too much. CHECK( fmtDT.StartsWith("%A %d %B %Y") ); CHECK( fmtDT.EndsWith("%H:%M:%S") ); + + wxUnusedVar(FRENCH_DATE_TIME_FMT); #else // Some glic versions have " %Z" at the end of the locale and some don't. // The test is still useful if we just ignore this difference. diff --git a/tests/strings/vararg.cpp b/tests/strings/vararg.cpp index aa94b1e48851..6da082fde9dc 100644 --- a/tests/strings/vararg.cpp +++ b/tests/strings/vararg.cpp @@ -200,6 +200,7 @@ TEST_CASE("ArgsValidation", "[wxString][vararg][error]") int written; void *ptr = &written; short int swritten; + wxUnusedVar(swritten); // We're not really going to use it. // these are valid: wxString::Format("a string(%s,%s), ptr %p, int %i", From ce957f451fb5c80ec8ab8905000649a5fa4a50e9 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 18 Dec 2022 03:30:44 +0100 Subject: [PATCH 322/416] Log image information earlier in the image unit test Use INFO() before some checks that may already fail to at least show in which test the failures occur. (cherry picked from commit 612dfa447a521ea2dec5bdbf49843e245dd8de35) --- tests/image/image.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index f0811953c791..977f289c6f4a 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -933,6 +933,10 @@ void CompareImage(const wxImageHandler& handler, const wxImage& image, return; } + unsigned bitsPerPixel = testPalette ? 8 : (testAlpha ? 32 : 24); + wxINFO_FMT("Compare test '%s (%d-bit)' for saving", + handler.GetExtension(), bitsPerPixel); + wxMemoryInputStream memIn(memOut); REQUIRE(memIn.IsOk()); @@ -940,10 +944,6 @@ void CompareImage(const wxImageHandler& handler, const wxImage& image, REQUIRE(actual.IsOk()); const wxImage *expected = compareTo ? compareTo : ℑ - - unsigned bitsPerPixel = testPalette ? 8 : (testAlpha ? 32 : 24); - wxINFO_FMT("Compare test '%s (%d-bit)' for saving", - handler.GetExtension(), bitsPerPixel); CHECK_THAT(actual, RGBSameAs(*expected)); #if wxUSE_PALETTE From 948c62526f58d90d423432f40f9189e15838792d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 19 Dec 2022 01:11:39 +0100 Subject: [PATCH 323/416] Relax checks for image equality in wxImage::ChangeColours Allow difference of 1 as this is what we get when using -O2 with gcc 12. (cherry picked from commit f77390551ff5bd390063885524cf90222734c766) --- tests/image/image.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 977f289c6f4a..cf374f6c96f6 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -2271,42 +2271,42 @@ TEST_CASE("wxImage::ChangeColours", "[image]") test = original; test.RotateHue(0.538); REQUIRE(expected.LoadFile("image/toucan_hue_0.538.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test.ChangeSaturation(-0.41); REQUIRE(expected.LoadFile("image/toucan_sat_-0.41.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test.ChangeBrightness(-0.259); REQUIRE(expected.LoadFile("image/toucan_bright_-0.259.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test.ChangeHSV(0.538, -0.41, -0.259); REQUIRE(expected.LoadFile("image/toucan_hsv_0.538_-0.41_-0.259.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test = test.ChangeLightness(46); REQUIRE(expected.LoadFile("image/toucan_light_46.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test = test.ConvertToDisabled(240); REQUIRE(expected.LoadFile("image/toucan_dis_240.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test = test.ConvertToGreyscale(); REQUIRE(expected.LoadFile("image/toucan_grey.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); test = original; test = test.ConvertToMono(255, 255, 255); REQUIRE(expected.LoadFile("image/toucan_mono_255_255_255.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSameAs(expected)); + CHECK_THAT(test, RGBSimilarTo(expected, 1)); } TEST_CASE("wxImage::Clear", "[image]") From 03d55ccba5cbbcf863d9b2680a117c9c4b37df34 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 19 Dec 2022 01:19:06 +0100 Subject: [PATCH 324/416] Improve wxImage::ChangeColours test code Use a helper function to both make it shorter and provide more information in case of a check failure: now the output will include the name of the file, comparing with which failed, allowing to immediately see which test failed. (cherry picked from commit 2ed4e6bee4ee7659405862f5ff311429c44338f5) --- tests/image/image.cpp | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index cf374f6c96f6..16893960d433 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -2260,6 +2260,21 @@ TEST_CASE("wxImage::PNM", "[image][pnm]") #endif } +namespace +{ + +inline ImageRGBMatcher RGBSimilarToFile(const char* name) +{ + INFO("Loading file from " << name); + + wxImage expected; + REQUIRE(expected.LoadFile(name)); + + return ImageRGBMatcher(expected, 1); +} + +} // anonymous namespace + TEST_CASE("wxImage::ChangeColours", "[image]") { wxImage original; @@ -2270,43 +2285,35 @@ TEST_CASE("wxImage::ChangeColours", "[image]") test = original; test.RotateHue(0.538); - REQUIRE(expected.LoadFile("image/toucan_hue_0.538.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_hue_0.538.png")); test = original; test.ChangeSaturation(-0.41); - REQUIRE(expected.LoadFile("image/toucan_sat_-0.41.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_sat_-0.41.png")); test = original; test.ChangeBrightness(-0.259); - REQUIRE(expected.LoadFile("image/toucan_bright_-0.259.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_bright_-0.259.png")); test = original; test.ChangeHSV(0.538, -0.41, -0.259); - REQUIRE(expected.LoadFile("image/toucan_hsv_0.538_-0.41_-0.259.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_hsv_0.538_-0.41_-0.259.png")); test = original; test = test.ChangeLightness(46); - REQUIRE(expected.LoadFile("image/toucan_light_46.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_light_46.png")); test = original; test = test.ConvertToDisabled(240); - REQUIRE(expected.LoadFile("image/toucan_dis_240.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_dis_240.png")); test = original; test = test.ConvertToGreyscale(); - REQUIRE(expected.LoadFile("image/toucan_grey.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_grey.png")); test = original; test = test.ConvertToMono(255, 255, 255); - REQUIRE(expected.LoadFile("image/toucan_mono_255_255_255.png", wxBITMAP_TYPE_PNG)); - CHECK_THAT(test, RGBSimilarTo(expected, 1)); + CHECK_THAT(test, RGBSimilarToFile("image/toucan_mono_255_255_255.png")); } TEST_CASE("wxImage::Clear", "[image]") From 273a100dc258638b8a71494350149f5a4c7888c6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 20 Dec 2022 00:21:44 +0100 Subject: [PATCH 325/416] Improve TIFF saving test code Give more details in case of failure by using INFO() and use simple CHECK()s instead of ugly WX_ASSERT_EQUAL_MESSAGE as they will show the failing test anyhow. No real changes. (cherry picked from commit c9efe227630c45533a914f1d517446842394b39c) --- tests/image/image.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 16893960d433..b849c0f2b1f4 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1093,6 +1093,8 @@ void ImageTestCase::SavePNG() static void TestTIFFImage(const wxString& option, int value, const wxImage *compareImage = NULL) { + INFO("Using option " << option << "=" << value); + wxImage image; if (compareImage) { @@ -1115,13 +1117,9 @@ static void TestTIFFImage(const wxString& option, int value, wxImage savedImage(memIn); REQUIRE(savedImage.IsOk()); - WX_ASSERT_EQUAL_MESSAGE(("While checking for option %s", option), - true, savedImage.HasOption(option)); - - WX_ASSERT_EQUAL_MESSAGE(("While testing for %s", option), - value, savedImage.GetOptionInt(option)); - - WX_ASSERT_EQUAL_MESSAGE(("HasAlpha() not equal"), image.HasAlpha(), savedImage.HasAlpha()); + CHECK( savedImage.HasOption(option) ); + CHECK( savedImage.GetOptionInt(option) == value ); + CHECK( savedImage.HasAlpha() == image.HasAlpha() ); } void ImageTestCase::SaveTIFF() From 65a3974170123a3f0b5ff6e9a0ed7731c34bbd53 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 18 May 2023 00:21:10 +0200 Subject: [PATCH 326/416] Remove CppUnit boilerplate in wxImage unit test No real changes, just remove all the ugly compatibility macros. (cherry picked from commit d56d773a557d1fd2e4e9484b1807f4d4df0a440a) --- tests/image/image.cpp | 112 ++++++++++++------------------------------ 1 file changed, 31 insertions(+), 81 deletions(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index b849c0f2b1f4..171ee46ff32f 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -68,68 +68,25 @@ struct testData { }; -// ---------------------------------------------------------------------------- -// test class -// ---------------------------------------------------------------------------- - -class ImageTestCase : public CppUnit::TestCase +class ImageHandlersInit { public: - ImageTestCase(); - ~ImageTestCase(); + ImageHandlersInit(); private: - CPPUNIT_TEST_SUITE( ImageTestCase ); - CPPUNIT_TEST( LoadFromSocketStream ); - CPPUNIT_TEST( LoadFromZipStream ); - CPPUNIT_TEST( LoadFromFile ); - CPPUNIT_TEST( SizeImage ); - CPPUNIT_TEST( CompareLoadedImage ); - CPPUNIT_TEST( CompareSavedImage ); - CPPUNIT_TEST( SavePNG ); -#if wxUSE_LIBTIFF - CPPUNIT_TEST( SaveTIFF ); -#endif // wxUSE_LIBTIFF - CPPUNIT_TEST( ReadCorruptedTGA ); -#if wxUSE_GIF - CPPUNIT_TEST( SaveAnimatedGIF ); - CPPUNIT_TEST( GIFComment ); -#endif // wxUSE_GIF - CPPUNIT_TEST( DibPadding ); - CPPUNIT_TEST( BMPFlippingAndRLECompression ); - CPPUNIT_TEST( ScaleCompare ); - CPPUNIT_TEST( CreateBitmapFromCursor ); - CPPUNIT_TEST_SUITE_END(); - - void LoadFromSocketStream(); - void LoadFromZipStream(); - void LoadFromFile(); - void SizeImage(); - void CompareLoadedImage(); - void CompareSavedImage(); - void SavePNG(); -#if wxUSE_LIBTIFF - void SaveTIFF(); -#endif // wxUSE_LIBTIFF - void ReadCorruptedTGA(); -#if wxUSE_GIF - void SaveAnimatedGIF(); - void GIFComment(); -#endif // wxUSE_GIF - void DibPadding(); - void BMPFlippingAndRLECompression(); - void ScaleCompare(); - void CreateBitmapFromCursor(); + static bool ms_initialized; - wxDECLARE_NO_COPY_CLASS(ImageTestCase); + wxDECLARE_NO_COPY_CLASS(ImageHandlersInit); }; -CPPUNIT_TEST_SUITE_REGISTRATION( ImageTestCase ); -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ImageTestCase, "ImageTestCase" ); +bool ImageHandlersInit::ms_initialized = false; -ImageTestCase::ImageTestCase() +ImageHandlersInit::ImageHandlersInit() { - wxSocketBase::Initialize(); + if ( ms_initialized ) + return; + + ms_initialized = true; // the formats we're going to test: wxImage::AddHandler(new wxICOHandler); @@ -150,12 +107,7 @@ ImageTestCase::ImageTestCase() #endif // wxUSE_LIBTIFF } -ImageTestCase::~ImageTestCase() -{ - wxSocketBase::Shutdown(); -} - -void ImageTestCase::LoadFromFile() +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::LoadFromFile", "[image]") { wxImage img; for (unsigned int i=0; i Date: Sat, 3 Jun 2023 00:54:02 +0100 Subject: [PATCH 327/416] Correct loading of `BI_BITFIELDS` bitmaps This fixes several minor bugs in the loading of `BI_BITFIELDS` bitmaps, related to handling different header sizes and the colour and alpha masks. See #23601. (cherry picked from commit d78e9fb1cb7718f9d62c9ad400a97dea23b179bd) --- build/cmake/tests/gui/CMakeLists.txt | 1 + docs/changes.txt | 1 + src/common/imagbmp.cpp | 27 +++++++-- src/msw/dib.cpp | 9 ++- tests/Makefile.in | 2 +- tests/image/bitfields-alpha.bmp | Bin 0 -> 4162 bytes tests/image/image.cpp | 83 +++++++++++++++++++++++++++ tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 1 + 10 files changed, 119 insertions(+), 9 deletions(-) create mode 100644 tests/image/bitfields-alpha.bmp diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index 698d3a10866d..e32721ffcf75 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -146,6 +146,7 @@ set(TEST_GUI_DATA horse.tif horse.xpm image/bitfields.bmp + image/bitfields-alpha.bmp image/8bpp-colorsused-large.bmp image/8bpp-colorsused-negative.bmp image/rle4-delta-320x240.bmp diff --git a/docs/changes.txt b/docs/changes.txt index ac82dbcf42d8..ebf43a6af4b2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All: All (GUI): - Fix wxCaret position in scrolled windows (#26282). +- Correct loading of `BI_BITFIELDS` bitmaps (Brian Nixon, #23601). wxGTK: diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index edce87beec2a..a427895db6c2 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -509,7 +509,7 @@ struct BMPDesc wxScopedArray paletteData; - int rmask, gmask, bmask, amask; + int rmask, gmask, bmask; }; // Read the data in BMP format into the given image. @@ -619,6 +619,18 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, gmask = desc.gmask; bmask = desc.bmask; + // Mimic Windows behaviour: alpha is applied only in 32bpp + // and if the colour masks are the same as for BI_RGB. + // Any alpha mask in the header is ignored. + if ( bpp == 32 && + rmask == 0x00FF0000 && + gmask == 0x0000FF00 && + bmask == 0x000000FF ) + { + amask = 0xFF000000; + ashift = 24; + } + // find shift amount (Least significant bit of mask) for (bit = bpp-1; bit>=0; bit--) { @@ -1206,15 +1218,18 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, if ( desc.comp == BI_BITFIELDS ) { // Read the mask values from the header. - if ( !stream.ReadAll(dbuf, 4 * 4) ) + if ( !stream.ReadAll(dbuf, 4 * 3) ) return false; - hdrBytesRead += 4 * 4; + hdrBytesRead += 4 * 3; desc.rmask = wxINT32_SWAP_ON_BE(dbuf[0]); desc.gmask = wxINT32_SWAP_ON_BE(dbuf[1]); desc.bmask = wxINT32_SWAP_ON_BE(dbuf[2]); - desc.amask = wxINT32_SWAP_ON_BE(dbuf[3]); + + // There will also be an alpha mask if (and only if) the header is + // V4 or V5, so we mustn't try to read it if we don't have one of + // those. But it's not used anywhere in any case. } // Now that we've read everything we needed from the header, advance @@ -1230,6 +1245,10 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, // bytes preceding it: "BM" signature and 3 other DWORDs. wxFileOffset bytesRead = 14 + hdrSize; + // We might have read colour masks. + if ( desc.comp == BI_BITFIELDS ) + bytesRead += 12; + // We must have a palette for 1bpp, 4bpp and 8bpp bitmaps. if (desc.ncolors == 0 && desc.bpp < 16) desc.ncolors = 1 << desc.bpp; diff --git a/src/msw/dib.cpp b/src/msw/dib.cpp index edf8ab5420ab..fa9ff34633fd 100644 --- a/src/msw/dib.cpp +++ b/src/msw/dib.cpp @@ -414,7 +414,9 @@ HBITMAP wxDIB::ConvertToBitmap(const BITMAPINFO *pbmi, HDC hdc, const void *bits switch ( pbmih->biCompression ) { case BI_BITFIELDS: - numColors = 3; + // with a classic BITMAPINFOHEADER, there are 3 colour-mask DWORDs + // after the header. Otherwise the masks are part of the header + numColors = pbmih->biSize == sizeof(BITMAPINFOHEADER) ? 3 : 0; break; case BI_RGB: @@ -434,7 +436,10 @@ HBITMAP wxDIB::ConvertToBitmap(const BITMAPINFO *pbmi, HDC hdc, const void *bits numColors = 0; } - bits = reinterpret_cast(pbmih + 1) + numColors * sizeof(RGBQUAD); + // pbmih->biSize might not be the same as sizeof(BITMAPINFOHEADER) + // (such as in the case of a BITMAPV4HEADER or BITMAPV5HEADER); + // we need to advance by the number of bytes actually present + bits = reinterpret_cast(pbmih) + pbmih->biSize + numColors * sizeof(RGBQUAD); } HBITMAP hbmp = ::CreateDIBitmap diff --git a/tests/Makefile.in b/tests/Makefile.in index 6071c5b449b7..809c2f47bb08 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/bitfields-alpha.bmp b/tests/image/bitfields-alpha.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b4ad4e49286e65ee37745c5f540103b96a83ec36 GIT binary patch literal 4162 zcmeIup>HzU8NlI^r2^4phzbO`Ly!!CKp+q#<4X_-1OkB|HwZ)p0)eO?83KVoAP@+$ zR8$}k2t-AbArJ@z0)Zem2t)+}QBgt8o@|r*6ZYnulk>>m`>XQn&kz5eU*5mEfBEl? z`2ETMe@}RL_|JKG=>PHXx4}Oi{yzNu;h&@59v;R#;VIAfjo*3B3tsYyKlqc^yx}eH zc+Uqu@`=xU;V-`OjlcPa?;PPrj`9=7_?hFJ;3TIw%^A*ej`LjLBA2+#6|QoP>)hZb zxA=wI+~F?2a*z8w;31EA%oCpSjNka3=e*!0ulR#MdCeQ%@{ad>;3J>-%oqORE8qB= zfB4Q3e&i@Wag3ii&IwL(iqo9oEay1S1uk-l%Ut0q*SO9NZgPuXxXm5z@+&kNZ5}A&+>>6Q1&n-}s&9yx=9T z_=7)r%^TkGj`w`vBcJ%p7yjZa-}sw<_|6f2*> zT;VF$xXul3a*JQM%^mLYEBCn110M2-$2{RF&-jhsdCm)7@`^wBlh?fAE$?{G2R`zN z&wSx8zVeN~`G@Zu;YW`06UX?OJFr&I?}hia+?1*Sz5^?|9D#KJtmreBm#?@{PawhwmKWM~?Cn$M~7!oZuv!>%{Xu`wAM^+PL4VL6 z^auSxf6yQF2mL{R&>!>%{Xu`wAM^+PL4VL6^auSxf6yQF2mL{R&>!>%{Xu`wAM^+P zL4VL6^auSxf6yQF2mL{R&>!>%{o()p_A#)Jp?!?(W6Tqt@{Hg3o#(vZC9n8{KY7g? z-tvz3eBdLW_{)hZbxA=wI+~F?2a*z8w z;31EA%oCpSjNka3=e*!0ulR#MdCeQ%@{ad>;3J>-%oqORE8qB=fB4Q3e&i@Wag3ii z&IwL(iqo9oEay1S1uk-l%Ut0q*SO9NZgPuXxXm5z@+&kNZ5}A&+>>6Q1&n-}s&9yx=9T_=7)r%^TkGj`w`v zBcJ%p7yjZa-}sw<_|6f2*>T;VF$xXul3a*JQM z%^mLYEBCn110M2-$2{RF&-jhsdCm)7@`^wBlh?fAE$?{G2R`zN&wSx8zVeN~`G@Zu y;YW`06UX?O buf(dataLen); + cbRead = file.Read(&buf[0], dataLen); + REQUIRE((size_t)cbRead == dataLen); + + // Check there is no gap in the file between the end of the header + // and the start of the pixel data. If there is, we can't tell + // wxDIB::ConvertToBitmap() about it because we need to test its + // code path where bits==nullptr, so we just have to fail the test + const BITMAPINFO* pbmi = reinterpret_cast(&buf[0]); + wxUint32 numColors = 0; + if ( pbmi->bmiHeader.biCompression == BI_BITFIELDS ) + { + if ( pbmi->bmiHeader.biSize == sizeof(BITMAPINFOHEADER) ) + numColors = 3; + } + else + { + if ( pbmi->bmiHeader.biClrUsed ) + numColors = pbmi->bmiHeader.biClrUsed; + else if ( pbmi->bmiHeader.biBitCount <= 8 ) + numColors = 1 << pbmi->bmiHeader.biBitCount; + } + wxUint32 cbColorTable = numColors * sizeof(RGBQUAD); + size_t ofstComputed = hdrLen + pbmi->bmiHeader.biSize + cbColorTable; + REQUIRE(ofstComputed == ofstDeclared); + + // All good; now make an image out of it + AutoHBITMAP ahbmp(wxDIB::ConvertToBitmap(pbmi)); + wxDIB dib(ahbmp); + REQUIRE(dib.IsOk()); + + return dib.ConvertToImage(); +} + +// Compare the results of loading a BMP via wxBMPHandler +// and via Windows' own conversion (CreateDIBitmap()) +static void CompareBMPImageLoad(const wxString& filename, int properties = 0) +{ + wxImage image1 = ImageFromBMPFile(filename); + REQUIRE( image1.IsOk() ); + + wxImage image2(filename); + REQUIRE( image2.IsOk() ); + + INFO("Comparing loading methods for " << filename); + CompareImage(*wxImage::FindHandler(wxBITMAP_TYPE_BMP), + image1, properties, &image2); +} + +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMPLoadMethod", "[image][bmp]") +{ + CompareBMPImageLoad("image/bitfields.bmp"); + // We would check the alpha on this one, but at the moment it fails + // because of the way CompareImage() saves and reloads images, + // which for BMPs does not preserve the alpha channel + CompareBMPImageLoad("image/bitfields-alpha.bmp"/*, wxIMAGE_HAVE_ALPHA*/); + CompareBMPImageLoad("image/horse_grey.bmp"); + CompareBMPImageLoad("image/horse_rle8.bmp"); + CompareBMPImageLoad("image/horse_rle4.bmp"); +} + +#endif // CAN_LOAD_BITMAP_DIRECTLY static int FindMaxChannelDiff(const wxImage& i1, const wxImage& i2) diff --git a/tests/makefile.gcc b/tests/makefile.gcc index a7eae3594f3d..61cccdffd1f9 100644 --- a/tests/makefile.gcc +++ b/tests/makefile.gcc @@ -560,7 +560,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %%f in (bitfields.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%%f copy .\image\%%f image + for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%%f copy .\image\%%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/makefile.vc b/tests/makefile.vc index f75651dcfd46..f0cc80bc0038 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -858,7 +858,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %f in (bitfields.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%f copy .\image\%f image + for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%f copy .\image\%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/test.bkl b/tests/test.bkl index b87d05759931..d8cb5e1ceab2 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -353,6 +353,7 @@ image bitfields.bmp + bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp From 33e6f770ab582b66916e6d0ad5231a6682c3fbbc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 2 Jul 2023 17:30:50 +0100 Subject: [PATCH 328/416] Add tests for reading truncated GIF image This should have been part of 217ecf0096 (Fix crash when reading truncated GIF image, 2023-07-02). See #23409. --- tests/Makefile.in | 2 +- tests/image/bad_truncated.gif | Bin 0 -> 33048 bytes tests/image/image.cpp | 8 ++++++++ tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 2 ++ 6 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 tests/image/bad_truncated.gif diff --git a/tests/Makefile.in b/tests/Makefile.in index 809c2f47bb08..2920be0a7bf9 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/bad_truncated.gif b/tests/image/bad_truncated.gif new file mode 100644 index 0000000000000000000000000000000000000000..3568c77dcd60643b6bd0431d65e2c682f45b3075 GIT binary patch literal 33048 zcmeF2g;pF)({7Q$-Q5QF!QI^*26uN2ngD~lI|L7&!JXg??k>UI1B4Layx(=4zptQI zt@U)*+O%^si|pbXlQ9^>FDTyKp;ImJp%&+BO@ad6B9EtGYbm~D=RA-8yh=2I|l~`CnqNt z7Z*1-HwXmc;o;%s<>lk!)z#C})7RHGFfcGQG&C|Y0)xTE#>OTlCZ?vQW@cvQ=H?a_7M7NlR#sNl*48#Q zHnz65c6N65_Vx}A4vvnFPEJnF&dx3_F0QVwZf!{Kc6N47 zPEKxaZeCtqetv#IK|x_*VNp?0adB};Ny+EWpG!+i%gV~i%gZY&Dk>{0tE#H1tE<0! z`BGC;Q(IeGS65eGU*FKs(Ae16)YSC#>sKfg+T7gS($dn}+S=CE*52OU(b3V_+1b_A z)!p6Q)6>)2+uPUI*WceiFfj1#+qc2N!J(m{;o;$tk&)5S(Xp|y@$vDAi3u1CHaR&t zH8nLoJv}osGdnvwH#avwKfkcBu(-Imw6wImyu7lqvbwsuwzjsuzP_=svAMaqwY9aq zy}h%uv%9;yx3~BG`}h6*{ey#p!^6X)qod>F(lv$ON_^NWj%%gf8FtE=nl z>zkXK+uPf_ySw}Q`-g{z$H&JXKYlztJv~1^zr4Ks{Q2|s_4U`UUvF=3zkmP!^XJds zzkmPz`}h9-&hftl{4Wc!|CfaSOTz!pNkDyvgGZ%QhL#RNPzl(~V9>IWSX_8Op0ZB3 z0z4wG3%^xq_yhtaPMml+Tts9h3rUUHW+^-*7eoUKUC?C$pz=BH^^wsHYoba(6!Sn4 z2uS7f$@n+UZLHDg+7+_x(yPPz^+a_hgM;n$Mos#Baa8Pv5MwO6d6y075Qk~I$L7?{ zLIkIIPk>n9z4V8#mf!rOLSK80pw=UwWWt4KULiJP$vAQWf4W+1@PKT#do$g9XL$4= z$Un@UHs|?rxkS)xFd%*%Y6(fv=oLgGV6r&cEB^iBvD>FnD&1V(^>D}mZgWZ(7r`Xu zu{nmNGfZZ)JIuh+k0w&-wSlN5t@|7sOSPF}Mg zjuaDj7>U;ucOXvQu~C|Y5-f}(`5NwI6UmP7niBc;{PX+A+csM}v7co5$LZ>I6?0)f zM2s!NPV)%9XM=No?1dcoT`&sohyF+w+HIHR)eoZi6@UMkNZ%All68#f+K!k3c(iKfI3%aSrlAg zi|u%g_*DmNv10MV_Al!f$KJ`We7RO!t{U6+>aLpRPZC_e4z9hK`HhTgb2Rr)vDHHd z1=+9ac~`U{wUxT6m$)0)@BrLo!!I=in))anggW{<(S*8SYou~hx3XwrGp|Jj63b9L z&wlG;3dMe#IP3GizZo)$-~Ku{I(>60O*ap4saaH{@a#JnAN6n(nxOPs&{3k=9)h13 zr4H#ECwH!V@EWBZ!Fw3NVlKKLAz(K18OBTf^El$pZ}vFpnbfyCF14PnL>+RiqfD1B zZxhd0nTEf(tgXcPyn?5rzodFgIfSOP<2}yUY39p8 zC}!@zZr^GC;d``@MbKGQr$xx!n2=@I>q+P5G|7K3n*^~E)T0R2CFQc{$3Ees7|Jd1 zVFddCciHQS5{p$Lux;+qeb=0iC1fs6kK$(@w2Oi zPgtqKr*!iU;cMU3qw6SYrjQ#VbLz7M*h#N1jkJ==F(Rw#9i9`6VN*5)sZ|^f#_5R* z8N}@YR*h74YNk7)k)2s^T;3uPW~Z{bJsT%nfs=_AFNX*NPh;Glvf-_4a7l+ot)RTL z>ed*pr1LC>JR)Wsw$ho930)@MjC@QRd|$|fVGf@_7bX_S7c#RX-CELk;J~3bG6%Zg z6Os3^m1Eyp%;;#V*15^)nyKQ#v1yMt1JINILS63=%t#NvVX)Ct*_?{$XcysgcmII~ z$iXM91h=wiq!;QvF#n?xOap7f#`YHD@Cr) z?1W9U$!68BBf2IyTRkUQI|@ks5LcBwL0BD*#Bu+`#Ft*H`eU*rlc5Wn{^Cmr-0^3~ z+Pc)A*$P=K)y2eHqcW1knvZwApLGfoBrE1T<@xbT;|QOmuvlxtEgNZmj@J#+b&n{? z+t31@eQB64V!u3Z){36;eP&yAlzgCzwfI>##1)~UzOz3rh}@ejP{pdTS~Fg_x5DHo zTtPM~jm*20No}$qOH{WHU>;b82Bz1GDx-4Z0}Y~p;^?N^J%m+)?X|oPE_%5=gtd}m z5a4@(s!6>~wny&97^|RK!r*fwk>?4U6%U^A`~j!3{XNGidA;#eGEu$P_K42SzU~() zS!cOv0F(Y1n%21oK|wf|pShCxC9M&;C+~lX(pyDcP zJ1mU+sXedeIDbrRoF5wj?ob?RgD>5Z>M4ob<8!jX8zSO4_qax|<8|CwPnQ<(T2-gz4%6#Yf zL&DM^-af#k1-BF|Lefg69|>_ZKKIn*ru zG`vy|zzr<>EmPYB9p)u^)8^V}z-65YMX__!rOeiK*oyO8b8qF6Gx;XG8+o|?FM#7(@5iOxU1-~s*&G@097F8 zgvGBO#&5wOXcQ-hAhv7uDA!t4N_2xA>lMbdjbUq%0mQKa&SWuTtxZOn6IcHVaqV)j zT`cJa$Kh&Z>vT}Rvr)#wf1B-$ORdWY(}VDv@P!GHknsePp`X&N8M~s8=<<7Zpnr7W zE{)xXUgh)K4?BYX9{0~H$x_VjvEbFlG=qm7h3W%Bz<$b=MG<`-H#)B#X>=T zh+JLR7ZTsd#EThOlFEmoi>Z&2buh$A{5cQ|;_C3A>{whe*dBnHp4R=%WP(id?%J?iSS>Q#Hu*-mB-z_u7s()dMG^l$r zm-&O;d@kG=+lUy%tjX!eqb5FU);*~)=kr{-b8Lh2dqJSuH?a&;`Y&tV`byAzsgC+* zF^KkB?Koc(WVh6Dy+BS(Y9Vf}M&22+NKmvdu=e5UPB#tV7`ksrC}s2hMcKdBJ(}1& zW=nGsK!>Ub0y-a&jj_NnE?Yd6Yr2y+SbWXJW_*59mOrGQ4v@N{r|W(JzWGX?Axhr= za8)*N#n}M9ElUl((BVDO=-W#UFahy>q`&h4Win{Rd<_2LMKYqgJ1DsSETdV8kyx+B z#$zzL^fK~OU^MW7tX42m95dPgne6bvc8`!9FK|2&^U^-pA80%R!u)oR@$nJ;>pofu z6g3e__1A~$xP?U(mv!TjW&4puIEytu(%h=XOHdxr(vG-n?PUY-E(UU{9Gj`?`^-I> zWt=Kd=6a8}D=b*Yg5WqOh!DL=F>H!yBUDPRlt5ESDX#k zX*t(jdHh{D(lb8y^QzKYIrm>1mY58xNO{m_em*XUb)KD71|e^fACG|%pZ$ai@u`1I ziyyHduZ5%azjkZqeM^$efbC`~GKdXJwN2FU$5}o!f0E>-K(!Cdcp}vw5C=aX?tl2? z2p8dq5BY!}ZDbdFh94g*nEW#^g(OJx)Gj+#BX^xJe_ca+D5&^My;qZ?J^ygB)ed#)g=}?8U$#t_a1G5K_BMcO>4L8Gyo%H`gA~dQZ z1{A{|_ah$YahQaGPVv&HPi|~o*c_-bT;~itEJpmWPeO5!`!WdS3WNp_B|{392V*J5 zMNO4Psh>x+!$s>VM;o#rgGrH0V9|2>(b8}+GSaLzFhsjo76(*Tr!Fs-JVdv+xLO-T zFR=GCQrt%{hdzUIP)#gttXUX~57fsD5@;6v%Jv^WNB|ckg8`{|fOO&bY!;;4xcDMi z{M}=`8E%3MGjc^9ca>8@jWDS0oVQ`a-(!#u`p#n2DvZ+Zq$-}NTDAh}?Lx*{PISFb zv?NKQP)zc*N}9+^nt~;T?I-QSCohwhB23{L{!kO`NES!7W6;6JL>IKNwM!r=OB5oI zFH5-sYbYP2_$?DYY?STDr|vRn9!A-}ZP@=gPj#XTPVfz`R!aM@D2zr{(PAXh{4?0~ z)S)f5B7I29&rlm+uPsGhiGJcpHR)KF9$K}it%@Gj@guYYkvs;Og6S9e*3S%ftE#fADb4L@BplHP=cg6U%Y8V}t1E^uu&vsy zsG!CLEqks*dSNYxRoNXkOX43hL`(q^w&`wOZq%%bP5ET>9gazcG%B{8>BAPaZw5Fm z8*@?{bF7rP(+i_v5FMltEk_T!jAk*e0iBq?Ee?)Z5EZoeO&NAU50jw#o zeePz({eZ}-B0sn-w8>?k?WF(`)-Nrm#*bQ1~&pd=-EF3gC2xgfm{tnW<*SK0rAiu z@sRi?O~mnfSS8Z`0HNvmcb_Axy|0(pI$8@aBU3xD2pw5#yeVs4dM+Xl`slqnmQ5u*oX2?c3&Xb@QuQcr38s39ss5vEUo z|D9LPViKGT(Y!g<1gVPfCOCL7RS4BpJQ0eDtCD?zI7*v@%DGgIoTV$grK_pxXpx5z z2q5V6h&Ag}?S81rEv({%RxL#oSg3jluvXilBRfo?IMr3VT~>RkqWh?R`DXPc@C_^Y z?NhyB-FAg^xTtivYK_@sO`HpTVsMQ~cTJkAE4gfKPC{+-X?9_O{>Zq2z)}`1Z(Ue{ z^p0L`O)x`U0s}X!t|=G-eJ96mVH;@MlCg=b?`D(T8mwR6uU~*`n5AtPb!mXrHB=8a z1noC~;Tm&T8(}JqYiz6=qA@#ljlz|UcEU|!+D)QfO&4{hujqw~4^58+g+!EJ)$P7M z)p7KVvHjlq`V~JG&J_{Clocris+0y*heFSmpg0uG2B2m$?PgQ2W~;PjYiP6GLbE*- z@@74|nxb4yQ47q19ruW0@-DOM07!AAD&rxs1P=$F=XSZ5c# zS9;`&Hc%x)E!auNMTa?GXKf;^rKp=djdIUXfmMhqSJ$L(X1Z*ZWj~tb0iTEMh04VQ zEgRSNWRX7{_@#vwV^owGg2bfr$gnBbdv))oc^E-{DA|q-Bp?Omh|(U3<4lTW+f338 ztVzY911Vtt{jaXN7juSVvo}AmBQI&G10xSIX&s{bccxu735@u<+>s<0FBWox1U!y$ zY3|^ef(>ZG$FL;Nv7(&8&P&ws0?aAx)ITsVUw+PjviYMPxy`M(j(IKq3R;+x0#Zm> z<)NIGq+U+%PoC%~O<9jD`Mgx3vxwC#tjjv`1WMj-*+^`wJMS1KDbms&0i^tI4!_#83OKr^cPC3QrzF{?;zBB`FcH2`W?)rKsjE_G zZ&Ad*3x@UKO}DB~cbH9&Epv1iA@=S}4&_aUAxsh{h2dio&S!RJ>W2p^+@we z-SCgP^gs1Fxc`EKTh^ssCa{@#$>OML#b2=eyl4MsY3dZqr=8x`&$$Gkuz@-@Qzy2I5)H0 zH-o}AL!p~cj}Jzf0`5h4lsfppMFB6&6j&SFAq=i+wmo4&F!fB3WNKnvzQciiTYoL+ z88z56X4_V$JRVZ+*9&j62;0(haIEeujYtbDba2nv$&$G(!b~UXCPS#wo{CMcUA+DD za@$CMm#)@5U>$Zi8+M{0K0HD>JJd~JhA8lh1tb(dB#v~v#Pz%clJn(HgF|y;WBGiK zrU5bbA;)Mg#pv1Lqf%o($G^>V^|7noabsJ9oGI zXplb#G0CA6mYnL%>FoG%5b7rBh?tH|xFkhQORO=<-b=i(z&~IAY&DV2#JY3E@=AN_QVsX4#uVyi z=019s8Bk4K0QQmAeEE@Vs79`;kZvN^Vg{6c@wOlxjU>&DISnRS3bo}EwgnWI#Q*g- zEJ_I17_Aphs`FDB2LI8%wzfdoEF0axYvm#1E1~1#Z~pj~kGQ?<-zMU_*A;5o)m~Sr z5&Oh9>g!?2GGdo&wV3OVGiCN-_A}Jwdr#MlCgs1*JIJ(e*xu|DGHmc-e#TWGXR5LgS@M)GVNSg8C*eqg)oqoHt8l z`E)i<$oNy1rVfLIr)|7O$95uxMk*4( zstZ8FXHqZV4|=ql%3{&!aQpSBkX#@hgiaI*h{tDC&yx%TDyU}H88+ICEmd7@G&?VM zxFe!qQ;GUtZnc|s&K390e*WH{NaE?|98`Of%_ZSU?Gn^ykN`ls^Cp;x* zgMXaPJsdgS7IB$7{CO2S>-_YqMZ_0|msaF6MV40NjZgW77kTJmoWi~BAf^z7IT0l5 z+E80f?o{eMPG+A)7ei_p+B}wHV0aKkAOna%OzCNWmN&M!*hQiO=R|EL=)C|4sMLX| zt{gNGq&9KQ!{}EN(8#AD6vj`eEh^MLumg6gmX!l!F3U;P&X%XHR?M@I=phJA+$+Is4d{S&pZA8wS2U>p*2Gp*w|j=RnEy; z*>#9c_C2FHfekt+i@|w%S&qTg1&8<_ajjv;G#p_$TIJOhur)NXR6tA?SnIlK65R3{ z`47~-K97+=W}n9_AUEws7TYj^WPTVe{i@|>jiV-0&*&E}r;upkEw@EDl6AA`zt2r( zxzDS~W}mP+Qbf;7>A@n$w8SZWa0?$SKmLCHX&H`49B37ZA^2()j;JjR2TvXl7!Hq~ z_TNR=I=T)Kv8AnSQ;6=t@W`ZKtB5o;htddS*^gHCIdtJxC#XR1=1HDyb+A0h6UO#27M_AJ5A(fU?dEDVn-yQ8}vUlwP?$yk>x6w@215pOsNn zy-OAE(H_Uy-_ej}bih-rHFZAd>ZDsYet>U_9jI{2N%Uy>Vc=|fMUC(3E z2*!5l-w=L`W)5SksS_JJl~u_*uJ>3xx0(v#MFMPN#ny9iG$|f&;X7fi%j1_M%YF~p+iLAI9_Oq>%e>`dQ>}NBonpth|@Xs~wI51o)$Zk^= z;c_Zg!@99qCl5ZEa_lLycs@Kxynhczp+3d1-ad8^>i?w?#hGM{?Mgbzq}ZHj%wbD; zwJ{+p$eS6BY0qZ6Ib-n>p0`QhC^TX`6ZkTZ_6O5RmcnTr-0$oH(9W;G4f~L^LCn6WD?fp1ecJs6+5LdAx{F@-=*A66goJp4fUa;NU z;Mn-@NH{!=v?UK|U;3Ou^Fim~)J|JE{qUOe!5fp*uN{s>FF`mT&nP}i?ByCA&&Y+1 z{i^@H!Tjx&C-!51GmS;R?fU!Q3$5^fdRlOeMuP~{P^tn>T1273!JpC~D*Vd*uodqi z%mP~oGI<&b0YDZn1`@Rgq7%}tktH@6i3VlSVY$c2QOQQeN**KN7ShTy;V#B0sRQv! zHb!aG7nOA>F^Gb!6o8-$l&y9ylKwbFp5RICLjzmV)xc`OkF44s6OJfv^1g^+vuTE@ zFBkqJg;8QYqC`^;(?Pr#6u4T_Q;Q;#7+8^1eTFh}XDXRQSdp~~;IqmZPMS20WAq2$ za~j=FV@_~qO!iu^zN;ajRGFm=K1N9!nMz((#E4XPRmbr zY@12z zdvdaj7=BT^8#@Nun9eRFb}(LoHsv9%xcVw%w=_M|{W+>V>vU>Blrjg?1&Y!P7jA+b z>;kCUyZTpW`P(4_P2i%cS;kv-KzI!m*!i*rnIUjJZcnCrz2ADmHopgdT*_tlQts^z z_cbI(kukzQ!zHou@G(clq)fM{oXULQKS*uu!)0of-Dbha>8wC%dJOb#iDJ|U8KMJc zei|`9Up*2LwlJP!TklvYow1m$%SohJZ?rHtSgr?~Iiu#peQ=&4%fv9BI}W|ty$8C? z!CNSuzK7j~c|sZ3MQqe_@-hXG?UB`krVMhJb6RIwIKO9p{@X_;J<-P(QIKDXZ0@_X zHRBMo6f}1@Ur_YWa38dnQWp{VB85m>x#^Zuu4n<{r%Y$nH<}BT-Zpgz zrD|_&F?xa~VjX}Vy_~k45Y$dA-LB^wVUQSM2#GLCi~wKZoAh#-+9H@Ox3lgGaNf6b z!3lzJJA`NjZRG^*Z3P`69foOwrlo?eBZ8g_g0q3_-I4X46sc?HSP#&YK2f0{ug(Ec z?0}>CzMjrIR;-|9nqW1K5L=E=dhD=5q0stax(4>JiiRj(6fd!^8K5wNiExY_N^C3b zyI-8}a)I!B_(-B&T2g&u%63c|h6oW*Bol(1r6*!-C6Wsf$*&OMfr=C@iDpTbDX;#W{^clwxmL8USCk5h&;5qpe$>;1$Sq{@l^3s91lTJh zA_h_wYg8j_cIxef^uks2GDCY=2E_o&y=L{11N9h#%Lqe-iNo}e5jpWOJ&0*@j)ybi zc73i*S>Kc%WcrA1HU!b+vd{IGxR4X^B0I@aqQo)=P+NDuFZ&wP8MKJ-#QcM|$`*%_ADz;-MI?CbpdU!wu& z3OB`ihU<)=kn8j*MKVEo1;+}63ctfrSEew90cnUs8VIZ?xOGW*1)T5rqGj$~xbFKS z*eWIep>A?sYCTXik+)h<5T27tc6T7g+Ge_f*=VzsD047$!2^9|D{ z09-gFTm+?Lq&OTz9G0x2oWV*KBTg0@3PXv5p_D2o%;cjD!roEgSc*4cXy>rhr~EWZ z6-*WtVLp}2K0XP7Z#hvaQbefvW)w31sD*8)MI5XHWfY3jQlD3(-~iJ3PVvfAs+BwZ zRek!!!BbUjl(h`#b?Wf-9L1nX)#@!(2{uBLKj_Wk2rUf=%9jEdvvph>l^|uJc0a@p zKeetbwVt+VqrvIJMYRdxn1Q~SZyd3M$3u~F8u0i++{Y<{J~ZF0)F-mkgQ07z4KpEK z>Q88&XRg)f2xVa=G_%(wXTs{MUF=JkT`Pd$W&WC#!umf3`nQaCc) zU5>OpK!^FOWQnj`XNW%Tw*^WKl^ zVMpY#P5#GmdXk0~qwzdv%lyx%`PZU(t~#yuk$K9r_J0lV|NJW6?YMP_2&INM@84AG z#TGc;;F0_Zkrgo7!HG=a3zk{hMw}pYsv+>0HrA{*wuTIj0wONaB0sGTK^UR~`ZlS( zj)<4ewBP2a|A+|3EPBa>5gD(L+8+uJw9*fWI|7%B3K! zZCPkqPxMGne56K-5j91XqLr*xhDyIE>s!)!-20o_isF@&^3k`y7}7_KQ>xLFQ}I)u zU5bj7r7L05|McnEf6?=GZ$8L=m0OHp{T0D%O~|k>W_KLfph0Akozqi;v3*1*xsTZS z2SZ~aY8X~V%0PW+-E9Voo?z)lb*2`s#F+=tKE9^hE3Z2W7x$QLJT4fRttOIK!oJlq zm`)YJb+;nIb}F(alJOY>;dl$LoFY*{Ui7^TBT=hio|Y_;IUfJ2W$dRq6=yR(g2vdr ztk`oMw+Ojd>+cMaJz)7rI$X%Yu`I%xH=$)xVtXKlW_OlagaNp{TSvrl^hl?>Kik5X zXS%SDB!1D=t_s$xv|S;-F4nvW;h~UFaw;QQEzH*E=>ykpyTLCS#EiSqEow03TJkKp z6fwE0npqQ{j)jp zemo$)mZ)> zv-~T8{BITceb)$%Yb2cAYP847!(czeYTq?_f5y!!fPNiq%@8961u$oIzqwy_YvpsY zk1M#3N1cijXyt0(KZT z#wIbf@Gwgm7uXQLzCAhoC{B%WYK?t2;!f%vndd`3;KvI$DFK(dxisbP5Y3-ITkJ4j zESYPqC&+1jb0jHLzwG5u^N;DwM^nXjfaR;q*)~>fq;y+UP28{PI62PRfk`RF-ERj} zl$CjHDS0cy`TB@_T6%aYWdjww8DL?^gq)DgpNcvr66edXo&Pn76bR?JGz2MT^LvS2!XqGGML+C&M zLgOe7m~okP4o3AI7pHmmvlRk;n(-K0W6Ik9iMHPJHskZd%CEiQ6M^uWQ|gveY5*tg zMbIosNhv=^V@$|Mm##)3J14|9?5v#QSGrh}Md|9bv0cR+SMSyC9vQc>9P)UV6NcPCJ9AtyOHEdP;+8F8pRRSb zj&U|9ym@8BbX*PMIYUH^=&=`rNPptdhGZY?S-tnM-+7dgt{r+R2*I$;){DRGO(UMC z=fQp6-sHQrd}w|T`o{E7^2*G37tP}d4{mv~xO-6ycZj*;N@fQ6E59|}g+;>sS%dLz zd;UX~T6^|fXOzn3I7=XpD^R-sX?maJbT6w``&R$0xKB#aRX+z^6;lcx3k4pVSyg4V z4F|;uz~GG!^5#4!CrmXaj%B-DeIxmfkDc}K+VBAE^42{-pjuz-#FB_`l)zf<7sd4f z3i;?s`!L2LF?Av_-yyN2BC~$+sUPrJ1Fz4vU2xs4aijQtp#Q=6w8n>%!ap%nGQK|< zP$xZn~My}zN}Q3f7dLg>XXP*sUpdh()xk&XFt{N zX=)#0)S2<#E%*Hl?w^$4{B^##>KY;H(X%dY-jMBzE8!Oo{LjBDw z8O(Em7M9nh9Qam3FRzp@bSy8n-^=Y#BJJnljr{_mQeME6+_~B3RNXJEHCb+-BHdAj zJW{E=XvRC?P&pCWy$)LJ)rLUUJ%0c3%Q7-PJ6IMgfj5wx-*v50Wx0BGJlRKaD(Hv9 z9Azfc!Jzlic%@n{jd72i%JS@ZA;oIV#p{EuQi)j5i#kEGtwOZbU>qJ_`q^lyf|%mW zhWEK*o`+EB=I4xF$ExpSF4KO6 zPR!9(;=YZ5jM?hz2pjAby5H{?a3Zx3M|?P*5^&p)?i2AlpRe#dxBA=Tk3$W0T`%bu z3%sL}3|+uR00cdr&42NHx0d+xdMy=K<4H3RhIe+AN;>rY8|vSapEPI;Pe!HT@GmI) zk@U11v{6XJd9vudu>V9($yewIwhVx06qnov6@W{dA#4*bmjoWg2YipTBBHf4FxvGd-RI4V2ShVg-IlgFWZPcmAd0m4b z`FUL^vdh`$(8umCP5nJT>cv9;v2j4Z&53+zzNx90EAk%izHafZ&eSaOEb!&*Shg_L z6gf`gn-g|Vphywg3rCz2`reTLA8&1##1h(oC29z)R$e6W&GP$JgNDz`r*pxk4EvJfD+QU3~eBt0wzyuxh5P(3Gt!$J)EAKt&kw7pq z?jcr=HXRIwIpr4X-o?6g8UsQ3G}PYC1g%RndPjYN?R67!^6ZCPhVQfBrXlBI_tc1vPtp zoirzP{z`Hhg_U4sS83{HHO~bZ6jl1>EG24RG%4|iF$x?b^T3n#T#Ju?i8idF$zt+s z;zVA+b~(=9;T#J5*ESu?k`>8aPQH#8xI()HP2D>Ws<(gl|79xj8YO#o-0_(d5Tf#* z<58jt=xQy#3O^G&xJdDb*-}4MqDbC4mxcnBOW-dYC4OzDM*gc9f~SH>V?XYH!e1#x zk#Um22f{~lM3q(evp4|X;N#T+0K&;M1t~AQBs+O}+9wVrvCGBO!3EI`q6=jQq6aS5V@PrYcTfuW8eLa-+g2|0ci2D~g+7qrUf3gRdbcu9lPM>)#MM z5+aDMt;-o6O` zJ%gV+Db)pwZp?BOHfFu8xuS(5atUk>vkhbN#>OUN_c_Je3vTZrqi&^&H=8S9NbLtY zuE8KKGANt}6QL&8V4MSvH#t7Zjsr1&(rG*-pVjpzHRyfdA^VR1GUUo-qf_$dNp({| zzpK|N3grpFQS{f*=l3@fsw;lxa4Ot+c!GK`jySaWE*{7Glt2c<5GqO9#)0~nN&9C* zDGHOV3{Aobfxz!Rs)BRDsacR7D*`4*U9gxWj10^uc5~xHbi|Y9r^kH=K<&*Y!}qJC zkITQIMX!z163p!u`csL;VN9udsg1G^uVtNN1z-a4BS2cf%C8 zgC7zti)t-g5!TyJ?Y@X?s#1r_(tk8Zs@H1NNvX_OsUnQV32npE`@!Nxx&B%s7MbuZ zkdUb4@mvX+?^QpB{FpZ6xlV4+$S?riw&dd~Ebx7%lM47zsU_o?L$m3~h&^RZRIt0j zc~+RJY{yVUlMLIVOxNs;jU=sqv5C(0hGWniKJ4IyNc!JYD7IXq{jRDW~uoW|efcj96}(nanFSOaft&$#Uccc-~d_9gv+H z+R6ch)Z5bvUC#p#ga^D-^kH0MzRER117*Do{Ft~<2Kwpf9V5-i43Q+eN{@YKiZuOR zfv(DpZr_g6jNbGV^<#R)2J}m?qbM(j{kvCFVVrtUq**e#3YOA?GDToHQ6uf*2QTSK zs#|ER1b_S9%fJWI43t&)C;K|&nmU8#I)f|!Y5eN3iWP@CEu4ByDBaGsC?_Yq!u)AzcGDVDcMb;+s-$`E; z{M`%P^`4DYt`Gef77r<%ePx?JmhLi9OYW|oi^P$%n_PlT11O5H$aK5vS-jaI9YZck3eZ(8*O5tgx}5Gi(1rsy(_XG~DShC4?%JK$bL= zqS$ExVh0t&P)eJ*14<-k;&3xV`ZqH)2^g9|dDMSuoVLcoM%UWH^u@&Zfwn zX0$=QlofvRTzQIe1x`}o+HGIGj{-G@>K=ra3749QIZP{!mJ=<@l7_(AH_RSo6qIem z$zaRbR~-Bofd_Xaqa7nOU#>_Wzj;5t7?4paPb%Sc^qGS?(jPsXbx)X$Iy&CAGSn6l zUm-f4&~U$45^06$t(?j^JQWL-?)W=SX?kurlh3L+RyQ`h5_VXHPK zNK1OsVZ=AH)clC~Ie*!+A2+EhF18CbcEj?&1%~B?@5Wn$%Nv$LGBY}FuzG758R4kZ z850>VcsbN4bK)qAwE}7F6MYK+!!jbG&Zt>ykWE|hbq+2~rA45c@_HX@ncG~o8GqS;1f8Wg zj)6|u6Dp;V{eOyt7KvcEaYPwu4l-FsHkl?Ic}J@66f(tI3`KB}-;$OG?0^zs&FY|x zDu6lQ{J^@sh$aPvHXxQ3A81QvgG2{(yrHBQET7{9BB|I!1*S2Y0GV8DX1sv-UP;VM z5iH0oMT_|_8jJ*RCzF+jY=ScEs_=4D01nY=-^KFYJu6lZ6^s!%6a*G7$oF|n*Dy_J5Rz`YZpvy#McU2`P%f%pSrY4uMBqv*$r^+Cr zeJl)S5VkrN986U7ITi?HP*xmK&S2oltK=%JWUXOff>x>xSE?^DP;OKb@7ujzRIWT9 zYZ2RP%PxEIuuW3h>jH;#C71Oi?e(#%41AIdY);Bt7~Q<>SAtHkL`=YsgWyZ)r7T9A z%9ARUS(7>!?6xX`K1Slv6SI#p<^e=eh&wVBW}2px#yRoomL=LpF{t7W6AofHAiIj3D!)h;nquH@N9gYa(DbnfHt z^?jn*kNef%@Dy$J%ZRwfZOpW6^<#)*vPp=~el{5V3LXDdqv%tjn^c(mHic`df~Dz5b1H4lmb$n?{2$4F&rzD-yK~ai z$k*$mOx+6xqDm5bU8d%9CjX_jB>c|4_^Xe#c{xj+Q5ZK7a)m`|g_RhEF2{XV5G5w# z{wM~%B9*LF_aM9qmNF#wvqb7g$Wnfl^i*1zUrXm42S~L^cWQ-TcmXd}#xuMJ(5r_5s9m6^9w*oniegQTd z2+kHY&I@yNW0nXriWnrX2O8BC9@UkPa!RPi5>&9#B-G=N)`RI|QZpGw$scsdAMlf$ zxJ9+oIVdZ;D(!0?nqh;@m|XCYI>^#HE(+xIqvSxNUDgzM*-ZG2QN3&L@N18Al-G00 z*D3hZL*N;9!s#pb+wFd8>4BHir+aoIbDTkBW_u1w(gdy1GUQ>V>)|HFk-1f0#RhjL zvx%^su^6*S?`z7!qKS`gfyCO>sn>AXZowrSAx$XL$h-^#*TGZFDDbeENa@*+xQwc( z3;E%5k8aqn94T;|y6EnNuc(WLGO|>JsVtn!z{cea?o?%WBJIZ2jv+i(PHHcAuG69Q zN12TjPMWNnO)l9j!^tg|`0XWxozuvjIrrT?_dT1Dy@2%Z0T!o*)Mc2rpVH}%6wwb6 zNRPKzj!szwz9SwVo>!=QNEkK=pX!KBC7g~=C86UdKNg?$Af6w-Ptt2-Tu@^qiYAg& z-HJBcULI~-MK0wP;NKj2+??JDT{rc*$=&_CZxwE772cX{;fIgFHN@~->iQF+YV70i){bGK8h5i4w*Q|w$BoDV}d)3oFO z9(62lFyR9p%>zE)gR;0cq0o!lB?aLdlGPKEwSI>^&ETN(d$SSI&I?%4gp+cJ{Cc!e z(M4O@c|vixy3F0m?2k6bA274O4M)J17V=J60K$U5+ZXG`qQE!~&-aJPo>;_oH{fB> zbif)t@G(>sh?X3VA>N50o(w;M>m|Zi!R56}c>*sAMWg|kxeV>H><174NJ4+snMcU6 zY%3{~+$$UP@g#Ag$kJXP(vn8f-Is3?%hKgFZUWVRnEbalL(dLH$c-`z9Bbr?n*5fe zva7hscbJ&Y*eZjN2*k>$0t-uEmNanW2^+QwIr<9FG#z;S5P8e3_M$&*#M@8c6R&F( z3qBG&tjLtDrN2m!?m&w+%MkU zuM8R3anCO@3M@llWAJ45i)8wL0ogq!!f1k&u;i900xvR5yp4qDCoLGfmPawp@mb?9MjLh z&KssxfDy(PD^Fr zv6*$bVc<{K3 z!|`k%hi#i&|9of1e(Z1aAp-4ja5vU)Pu2w$_i`I@%qob_H8*re_YF*Uiu@B$Vz>H6 z!FY4G7I^oqf_Hce#CR8kc_Scte}Q_p0ek0xd*19~&bc#oqVjImyjukMf+xsjt1l9P*)7c`SM zIh4*0+wqzmwS07fcYaJ%$V~*nalsdnJ+{asQE)|T^Y3bn=@#f6FQyS zIi5#>o<{+nzm1=-jG&YLpD(EFLuC^D)66h>66_?7JbKWe2&Gp#{9!r|5rL*#w~lmr z1AclJg!%-IdKi>?ub+C=syel{`slnm8qA`sgAT2Wbu4B?u8+<}2uZI48yo=pTMxUi z*RZjdfwb0O2WzmghQYFnK}R$@U_U!^$)dE&K@$T69XfaJ)Ttv!4jw!L5fTLO5Mo4$ z6Dd}-coAbpjT33>ZMtfPn)CQX)XGa;3|a3TW0`uz=>xn+$mNLszh4$(GG<7A@Gb8rZgV zyJ3S{ws7gj)le5N-41*C_U-Gz!-o%W`w9kpIIv*FivfcGf!ML*#gQpT79oQ2<;<8t zTplsvvgXdAKYIo(qO=GSBv!0|0Yirl9z1^h2oi({kt0W(IBD{`N$)68u3XWg1q&7{ zR=99U-la=(Fkr+~7ZWB7^y%8cVCTMN3mGzH%1k$N-prdfaNrQ!vuDsCL4pbuI&^5! zB1MWAF@gjsk^m#Aq>=#t3y?qpGs%P#PDmjI6;xVjrIuQ5xurr|Y{?~;3U~Q%7hr%H zW*B0Kfd-muuKDI0a>!9fopsiE=NpCFq|k{&R{wC6`6kqq)jG|N=eMm2F%Q%4)+yfMdl z-lWGy9OuN5MjG{$lSe+^X@}5uWRwxcL=!!9opjPM#~eq|nUqpUC$$uvax^W+#c;wI z2h?#q1qU2ZN%hp5RK4Mbn^d=XbsKE3sfN~Sq>%|~ z1S_G0lK=Lbj}JZwGKf9()>uP5H{4(kA%xUWqq!=o7_K+qnveorDTbS33UtL?PF!}A zW4AbQ#VwBA;huP6x!;BpcVGV{lqk0eCYUf+V1W%5IEf^XKmrILhM1V*B8te3;vpiw zE#inR&duV78%B3Hbm_gKx#Wri54`5S_`*Chs>2RD@z6ly+Hc!v6L(hz#&G`1( zG>lH;W~137dX1g6y|!mGm@Ybvoxinq4Wqwh+G#g-W-n(ojHX&^HNw6*=`^CQnT(mk zuo(^PqCRiuo4;lcj%?i!h#@)H6NsQW=4j{+f!GtAqr??oobkpx`p6@ZMk?u~0#aJ3 zrI%om>42JS!bt(07Vya@polvC0i%#wN~xxvf=Vi?vck%$t+?_^tgtL7i}$h6N(+Ov z)CLjsP zOi}`qlA!dZD@ln;K7`T`k+h{Q(Zh#QQev3MR34r9BlRVrM4=BzlPj$Le7WWj7 zKE2~lHVTv%2URFWDN0d{aulQ_MX5`f za0Lxr@yb`g5*GiljD@UBD2rLnQUtW5RggMV>kZe^8@Iakt#FMi3h_Hvy4KY$DZI-H z@tVTCrcf_?;cE)|;+GZt6$OAjL0|+k7{U^^FeNnXVG+yN#6CuZjBP9k9Ror!LxzNr zsVfR5YbDC^w=$Nw3}#?BkK5RGv#{+fYC=1Y(3o~Kq@h7+aNt@Sp0qkDN!KMQ=j%! zDLsYCP$&NoyP{U5DOZt7SCmQt++78Cx$E6n*rJx-WdM0_am!wi*VVfuZ!ge;3u2Zx zJrC?fdTITD^FDyR#ITjE)oZKv6eAkbc+WB7%PaXlW4^wI4>hMj0SatjgV`LG2f`e} z!^}0DOfbfJr1 z{9?M-6^1ZO#0+N8id8O>5uw5;CmliYM^=*JlFo$0Ao`F?J$&yyxHMlU0WnJMwbBli z#KiwJ^;b<$1aO?_q$C2*=|@o3QH7GQp&FGAM5zN(FmhBI-8d;1Y3hwI zauKLTd`CQzid3wE)rz;FA{Ei&s`%du8C&T-CMh2sRUIpCR& zX2Xy+qhalC0`=$C%=xX-w!vsSyVj^jUA9p3%nYCYXBw`ht%7=1)SDjd&f3swH{Abo z*4Mh(0n2b6fclI)WvI@i$uQ1dn_*`FCAFvBAh-p>p<8m$7D5C^kig9WZ+UxzKt|ea zZ-4tDB@MtyE2q-SwG<`?fN4x;`Z=H66sI~h-B5n|)1X3tsIZ&LQH|PErqb@Ix5M33 z$x_weT{Wx4(*Re$>eb|JAgmDYz*rAc*6E>jt#8%1VBD(KxK@uci?M59@j9B3o2IYj z`)gnUJJ`Y^b~cJ-EN~JHSu04EvRJUJ7%-dJ&3d-8zz!`KX05GHpY{%^U2SV$3yIjy zwi30yZEiKO+ur^*xWgqyagVEt@Iyy|L50@jv>L_uE?>H(HtC+>Fa`81_EDaemgT^)n299-X3Lg9T z$3Y%4B#M0GBrAE!PL6VFlV4?UUD*m*e!`Zka567{Im~0OpP8|MW-F+9er|qqn}4&* zIY+b3Ot|wA^6bn#E1}PS26UhwHt0eh8kEafwEe{OXfW)L3nUE;D9zH+0MjH&)9$I$ z)Zo)jjnqiZ)a2Gz|9ALFr*+Sas+_fR0?xkO5N5CreS8b4is8%( zF$7~T0HY2QqvPaCG1y8n=8EIE$K*nTdrnS#3h@L^Kzve85l0{eQosdV;0A7>Hil^k zazkK#gI&_>l&T;(jsrWY<7J2~Z9H(FqD^q91r7{CA)@6ym@E(iAwKHkKK7$OCSekA zYe9m`w~8x5B4k)51Q>yFxpFL6f<+c&K|?BJgsLm;uFF@Z%UA!dOGLIyL`3AeNMyTc z>{hfv8^miJcm(t0;lBt>hxSW|_Nz#A#VXO#T+qc}_N8Iohy9SiVhXKc8fG^VCSm{J$IX^wIhx}*UPds#06Ge@ zFn8`{P*4oS184xswBBHyW=&`2DF(GAZLURVI_uQR<^%ERF(-4?itg58a5Aw*1aIbB z!l?{sCJg4rvo1^6#Na%rrkvzSTb@k^+oN#kfRhBLqAKce1ZM`{03m?TIFFMfgfIX? zq6ky!2-8gomr$mf@Cg|pr>rw5PG<@upbArmJ0YNTh-wSRvv#1$0?c#Z!q6--fDFqJ zt26)&ze=mxqA%ER;*_TY;IISOLJkju4m-dO0Td4(gL?Fk4?*A$|8NisaY6U05DgI# z`Dzgv(Gek05`TaaEl~+DaSAk1T*&eh#UK<_a1{SH@Y76j4p31Q@qiWgz!hO}5M=QX zXps?Y5f?K-7e#>=d+`^8Q5au=7>n^3lTjHpgc*C`x}4D$pwSnk5g4ek8n1B}vN0L9 zu^Zv;8{Hus$8jL3h>7H}9??-9gNPmR!SCRazRc7f1g}Z{jvmhuPVehWjf9E#F~IsO z9lO-P0Md%^L?8+B?r;Pl1@ccCtRW%N9T2ti4h2RiQuHiR9WXLdHS$q7GLAB(96}OQ zM)Dg<5*%0sC9y#zSF$BvGA5m2CTsF0cOfTHVJAbOCx4O?g0fkLk`apX5RNhslF|>B zQV^Ol5T4QxqEZf~ato?5mag*4w2~{YU@ZT=lFYOqTBG$@kHaj{vXs^`UD`7J;4%s1 z@?q+7V4UDClOQkkQVIC7H~bQR0&_44(=ZS73qbJ;6q7O0!!g@HJt8xoK(jL4;4;@B zGtr;~U69$YSchAS<^Ld1~#i>Hth+YPVF|=!=tcGH#>^j z=HNH^CODmqIOPC2Th?VK!Xq9+a>&gj&MhTwmZhST2}P%-N+;eJ0Cj}or-T+fm%^x| z;&uAXcFdD$1r7|ua10Obch1lZ;qyJIHsKx)dfE^#0OK<5(5%3Adh~D)2XuQvZmvpB zG#vCn3o+#q@ia`p1XzFtYM=&UV+a58b_YPF2*R~*kw9S3@?NfhJE|kIGV9ZV6Sbgh zwc;Z_TI)VqYd>P^KWs5Tm}NnHGDm&u6iy)+kMS5Qq`5f6>~w)iedR;Yt{1HF7g(1> zOayjemsgJA7)*qAO@u^5#6&~{8@Edscm+kc(Ni3yArmqo_cTutukMIwOxSe3-qcC{ z&WLPUGPvXHwXk?58g-0TC^U`P?V1!T0FxhV|513RX}a95DnN^qOR z;ASwXYnbiXW(^_g25o3l4XPt;?$rhJwE@#$)o!LUjm{19hO|bL)+jTgItyq@P%+VX zV$lW-$oN{aEjV%0Wa$7E1!AN8M%%Q7J=*D7URIJ_Hf8}}W@*-DaW-d_aA!q_bg=U} zgZ2T2c9e@&DUOx`l6K#gwrRcaE7UV;%aCe?Cq9KoYw?q7>%wbAKy1lMK+TG5)v6B_ zl&%`|dp4tO-FD>wOK$(^)^71uZ~4}5A0}|qWpE33F%Opv5;tTQSLyt~aR&i%4?%Jj zfpQ_iaw7qAGeL7h;kQJgb3Ye!MVA&xm%2>17kmYEcR_Vo*L77Wc1>hqml$#v z7eD`;YA$YZ6c+;VH|5PB6w~3VZhM1R5&vfwWaUIokdaM>KOM!`jfos8mjSGT3L4qf^f@}4H7eRyTgM$mfgA)OS89{_$w1nN@ zgt&5ylUpTHPo#aIr=*qb=kkBvr+LG5Tn(_kwQjz?3D z=~$mS^NznIj|p~<`8YQHShvwekk^2aL)MT5B9ZA}kuk}U;Q*4?V3MQz2bGg%2OuTP z?Pj4hsStsSuglv zYx&|V{^H`AN8>)uddL=SxrdkqBbk#qHN; zXiyHKg~|Vr>~URd5iXY!6eJUR%qQEqxU_B+R-to;5fsWq_6Kbo+GUz|nnnqhIKJKGGf^4metgVwzJ&a~LTBd~u6K+y4(zf7bT(~gt z8an^L0{~wJEVa+DmxEnUY1+?n6IDrxdn2+5MwV0<3xGWZ#REDH_dM>^Xo4-+?seBz z(3~PlJ@jUgRraFrCf3NqXi8K(?j4=ZDb^zDn8mH z&D(X-`*o;dz031<+Pf>@`<3OJzUSM%&5?L z97t!p7DhK0Qnz)Vw4rl68Fu^_dfdl>JQ;+X$c@~)kUa61Tp5}?8J;}wqr4cVJa((x z8Lk{0vOG(<9Pc)|iNc&p-h9mEYxLbq&C#44)m+WfT%@st^sCpT=e+Sw`oAU*&-J`Z z=cIgD+8{5lPXq;hahlNE!O#;0(Kk%d*MZR;{f#8OQz+e2ND|XwMboW;(>)#3t3lLh zlGKyI)O!KdO+nQ?fz@3d6JXs|LzseSeGqJ&5pW%ZbzKpVvdQqE*VEwFw*aq&-RuDZ zjTkXtz;NNRWy_Z@2fH}zaeX0}<8l_B`N^R5Tjn+4A z+{~FHN6uHRVd0pCgLTasr&iH0#X7WY+q7%0wo$7_4c5GP)pW&bwyWB`dDW0AQc4gW%Y*{#8>Cn+E$8*@NZ^pjaOqeO3Nh$Vsmf{7on=pu_U&e-CMHL@5Yjv?;I zqmDeTutEzh*kD5rIRF8~4?hq=#1T#&fdmpSiL{dx8abqqP-GOQS5{lyafcs%6jI0{ zi%>!dCYWfV2`8M8LW(J-tg?zKs-S|(E3d!;3oW$R0;nyz=+a9sz8vbyFvAeTC^5-A znhZ0{IO7a7&`2XqHPv7`%`}=`bB#6Dd}OOHMFaO-Wj z;@XpKw%(SjEj{?)lkK|MUTdyB>%v>^x#-qQF23k`d+oUPP|I((-)<`{wbxc_Ew}U( zJdd=}I*ahN5YOYRw9q~rk2~%->uft7x1;gLBDce=Iwqft4mu~RQ?fcKr<_hY$|_q< z&E?Qs4msr13=TNqgyW4j$Og>~H`{EpYO9)dDk`R!Qfg^4%{;2;p}FM3C!U>j!ls&N zdQC|sl}s`TB#=DvNFpT9~<^ zRaXNI)G)ZIly9J$?Vql1f$P^ifVUC6NRZOpruU zL|iOH`9hODwpv_iN#AaRIe9OWnnI?riN2dPt?>tu%k+v!dNzViU` zs1O3@L63S|*q-^w2R`(%4}S2&9|K_^Ko}U14t1EI1T|=g8nBQNH$Wi^ZRkTD>QIM5 zgd!KEC`Bu(Q59oEqZwV%MmYijkG?1ZAMFT8LL&c?k&vV$COrvCQfdN~o}iK|bsrpu6{=d5G*7}xRI>8aC2xf*Y1nF4z4}$Kh%u~UG2>XtT2`~36|HGii(U#77`Xfu zu6^a}UFu@jJ=~S9c+Cr2`np%VgelB^jSFA{3)r<7cCcM4jA0Iw$HWXqkBL=G9vAaw z#x}+=k%eqz9&6dkQns>|y$l^Oo0&OmcC<Y-i=@+0TMDG;b8`Xh}QO(x%Zgr$G%G zQlr{1tcEpMXpL){02|oEMmDpdO>K5_8{GfoMz=?F6mO5v8{hl}I5-GS4TKYe@07L9&I+H?Na&_8x{Z`h3a5)g>U8o1*0~OLQ;;3) z!eF~H;4XJ$SZVLpAeZ1tWq4&Mo*9nU2I(!YdC!BM^k8bem1a*3+e1V5z6U<Ke4QQYP9iUN3KPZBK|EmNgyd=OXF^Ls=l8}WI;*OKFLBBwWtN41_g`|1A|eDDn>CL#mZzXlv16-)F`c?su*KK8`?Np(Ey69 z93zXyMGL5obzHQb^~}ab+Xjt6)hQ%T15=ig)UJqSVq!@OQ$wToSB7*C=Qg(p0*H8okn5@g%;uF-@xlCo{sjxZZXi*2@KYqX?>AX6X$ z0SG|sVGj=mQ}o~C0l+$Jors!FgtJo@e|g2eWwQ z+TH8k!`o7DFJVRE1%!iE&H{(LXa%h+RSjbE!jz#5L@|pU>r$FhhV$JIeQi)UOed=q zFnLCRY^6A7=3thv>>U5*X`oy|LJRe%OFcHEEv*1fYrz5-hqbNUpa)~CfY~mfwqw7o zb#j}+-F~OH=lQJ*g*)8f#>codOzwXC!@~kO_qhsUkaVZZpz1>Cx)sVUb|1uDCWhBT z;PtKtr1<#rN`8y&U9WrD``-A@cLeplZ+`cyr2hg~z)c|VN2{m8LNuMM8@%tzrkZ}`1twX2(plg ze6%B9BgxxevNW2^j3*-_%Ce*~H>`Ziac+5A0Yg`pn;GUX-&y`=UbC9R@S? z_A;7gPn=c`p9X571`eZEYN2v!sOB`P6b-Bf4X)-&u{LX{P;0lAYnZTWz22IY2cV32NI@Hi8(1z6&4 zTmWxaAaC?m1@?vo9)WK;p>I>bZ%p8C8Ub*HC2(f&a3ObaZ;)_ywQwwj1`QX8AD0Hk z;}>oaSru0Y7bjU62L~I6ba2pdJZFdm*I0Puhk6wjC3kXXp>l7)a@gZ?m>6?pFmq^d zJ2uA@Y?1#4JJ&rvM?FCI20}*%M0W?yV|3T1boaw_P6q~4Cyc}RKvg$d#=#q?&*$TOnk2-oYIwl#M8~9p<4z=>c3Z1a~w9cQ$lf=jb2!p?4PGLkEH& z0+Im>@^{l^T}31zhi7<&#~~c@T^>>*Q}mB2GG37vkT7yyT4W=bCq_NuUhtIyDc}Mw zU?eqA14x1-PU1QNrjbgJ6EPug2)256Xcx{iZPE5@hj0jJ;wGUG3UY#BdU6Z55Njc3 zVvK@f${;D0Vk^g|DWo(F%x7fUpn}r(4M7uX)Aut!qccBaf=oFMI^$_j`IP(=l{#aU zOBw$TM_H8KkTeJNG|nJ?H)(!4V=@}kP3y-?0t06FA};jjX8cz!X$EJ=WG~|KX2(Q; z`nQ(9wq2RkP|teF1> zTCsDRVR3Yzi;YMJopD)k5Ek~cb2`U!Fr^jF^A%lT8Zc!RYLPf@kQauP7>#i~?t_Ok zhlza=Kb81;n&k#+VRQoYUh5YLf%Lo;0QzPF^=RYT;_O=^pTFpwT|srAPEAG^4NEPSC1BgkNfx_ z``BGe6p&GLA_5tZkY|wQg^*d)MPQVtBH)k^DUmrqkroLA7|8@18DJgh1Rtq--8mE^ zSqCKv2q&46l(3R5X$mj-3Nbm8z)+KpGJH763_2MNJXsAs36#-CWC5j>IF|pE;eeG* z84gt`t5ex&Q+bu0DP#fFm8R)^loFPoI+o;6mhNztXh}?Mc`yFrmiy;Sa(NGBW=wS% zE_Zon^Y?%32TXnmnDIa@gxRgS6fp~98^;(=su0nVFWE zip{n-@)N}%^+pbDCxl1TqRbdYp%0HOCI zp(95<71~x9ItLy4i5wbJA6f=XC!&ne76E6XXkb5Ff)pz12AP#VFNy~-dUP{7p*4Dl zW^ki9%AbZSNAb*JkUB2~1f@ihV_U;+_I zkvzZy7kLE!MH8+Q6E4vN1||~Z)&I zoFXgA2P#F=W7S8Lp4qAY#qUM8R}6E&w=ya|xFNcr9jzE^moU&I-bCxh~X_Ehc;q{J;;$ zDoxpBO#-uk2?I`p39b!eP8w5Ag~l=6!7iGY%PlgGxH$0%vXhoCpc2_`G21_Ln^T{skqRS-x)IS#?HGzD&2 zun-9`6tbfc3HAjEA#WJrhV1#CAHh=x;S@@Nh?-~?Xx0A}YIPc#!HZ%s2dlid$y2v& zkQZ4?8lLfB0wh3{Wfs;(S&wKMYGGJP`-uira-B#ATHzU9yP;t9x4>f*WKdUFfrzd6 z6u9F%hf|56m_M5_Sr`WzQEL`9hZHXR1w%o&>#U=O8>FdqL0hMFMe231^|&Djrqy3AF&VM-u96pyG2T@byx5A7gE^t#x!kNr4Bi}$7k zIgoX#yE0Nmcq#(E8%7NoU&2egHDJ8RtGrLZyiVY}&}#+KOTBQLh}WCFi?F?z(7mYe zz2R#M;|mPsn+)fRN$D$N>&w2#(!TJUl=XX+^-KT2_KLsepuaZ5zxl+O{|mqZj86p& zGzXl(u`&${e8tS*z}5i4!YaWJ*uoVYfZ~F|`lrFdv`ijcE+d>RBD{apiVrA^!Ya(d z6iiLO6vNr1fP{%LIGjs5Os+lr4nK^6K^(+IY{Vg`Pe~lB^#$~MQ4pf-Vw$9jASe4Ge=Ox%Gy z$b(SGqIk$+kjUq@$YJ0Vjcf*wJiXZ|$rw?|TX4w{k;$va$wYMpo_qx<(X*jk1*6Ob zrA*C_fmWZW%5K2Qpz+EVO5d~mJ-6(ja*+Sabg;|3?8|Tf%osP!Ymv5z_&vvbbjchV z%lrn-tXI!miq|vE)!YWxjB~d$x6sVZJl7W;suti3%i^pV&b zJP&ZTmdKjH&uZ8Ag2H+|fc59sZ<%KKXRXpIP4*&9hb=I>{%4GBPR?>I<aB*5aN~)TR=Gyk>`1yR6Swd@n!{Is924`CCejmBEANs0UB2O8LkXHJ&(1t%%J?E z8MZidcu-lm=!lzP7E#+h^(KBx*3{n+YV7VamhNevuIc;B z>Eqz(`&2WbE;FNU?xrs4m1Z)kt}?8?>aU)apShJZChN3r>)wFt?V#)O5beD#?ENR~ z(n^=ZjxNPMX3A85_?Q0=^cQ9TkxyVgd-m|*D|qi-!iDze(JRRCVZnLx3Qn{qPu|0d z9p`EEs4?Eicn{yb)0k4_%8@EhzI@lN-MV!$Y09)&vt7D$G}Wm?7Zlykpyte#Lt2j9 zQgTR_hJzXv+*GRGym8}(O)EBQ)}%>`7OmM>vdNM$V}=abv17u7>CzP|)~8RHFg<$Y z$dMvNjQldf8%b~^NRad{S`>J&V7`7AQ=%kz(&R~a3-iUSDADFbe)Z!0%P8|^KYr%S zfddB(8Zuy)u?GLTg;a)V8C$U;(N>REn&g{?~=R=^5tBxV7YSTxfU(a zpIfm)J-P8RWmf;&zOClX8#!{^xG6vW{F*i6$Cocpht6sF@a3F7ZC`%s^YrJ>vG0yM z!Km!Go55e+MOKm*%*lVK={@i%)zBwG!@WSybtdPAl(s+$M+RXS4jn{4) zF}B*iD{&1F+c@tw_9R^6yz^!pu|oS0OzlB9#vAdx5m(DijO2LZ4FD&fgfdDgr=+q< zE3d>dOD&@epi3_W08@Yh#w@@91IR4XOal-=-~cxdV3W-S7Eqv01?FTRPX-!jAWuFY z05niRA%FnT2qGYq&_fTMU;;)bpn!r3Du}dFOC_DO0t+^^U{X#$wIG8GHpQS+Q#TbA zRZ&;fpjH1@TisxTS6_`a)>b>{Al45)h!s~{d+opj4}A4iSYn0U)z}VpW%dJMk!|(^ z5I~4lT53PQb=qln6+r}Twe8jf6Ifs&ha7a!VTT=j@F9pGkU%1eD4cLY3MrWZ7jGV1Qvu8D*e>Cah_u=}H@Iw6e-7sKz0A zoTZ#1hh(ITGK%Dr%PHz8n9*UG<(PRA3LTz!`l;uhgZhaknt~Eqr<-Qd2`8j^R%hpQ za&CDXtG3z3W38zE<{P7UI!U94zJ@3wjTFL&?64K8NTG-f!bhQl3KHm`x9xEopSat; z=kEW56jJDJzVF$aZ@J}OTkVJpzvydHF-ia_dUCCO82NuJ6@BB}C|+;ImcrH_`$ zXPsDN|xFis6q}IE3K}f{hDg33F|A2F?Ploi!D}b;#+Q!Ym`wSD;N;v z0SP1!K?FJE5X7cmL@&MgLd<&WC8O*y$S9diu*)#h%P+)0W2CUc#D@egLkx*tc>@u| zkv;G#Byz+wy3_47<9ss?Z;TVbF97E`1f-6>l2e5$7!V7|@lAJDq=p;4;XLEX4}9b^ zo(nOEK&M&I9Sl?+1f8aY_z@6-@{k7sDF_b)q62~qw8DY$fe!)_&^I?6J`rqPUvajOaD`OT%igIHMY=;fNK25QLJ5!8yq1 zG-SNs82yWgeEibQB7=m6P)5SCp+C~0ead~pAso3 zMm~U0hC)=L78QX;Jt|U@y40mIr72E%3RJ2hm8nVv%22IJRI_rGtx&0fTFFWSzuLgA zfCWojDeG9nDwYS5h0AI^OPA5w7BH`sEp2hjTi*gfxW-kkbERut?RrA{ zDj*mBMTXb}>@))_*ufI^iG?-nVG)~H#V(eyXl$%wAHxRhMpm+yEk$MJsG0xEnldw^ zASGrsyV=u(;xy9zY$)m|8qtK76NV~nY3cZh)1YP!l1;5@@Wh(d%)vF3Yy@m!E6CXH zQMQqu?H*}sNI?QOH@zW*Zh*5}J_6U$zxhpYc&pps3YXHCt_^I9t4QO%_BeTjWO9HwpG-rhJSz-y{5@K1i_7eegSk{0>xy z`mN!9NPGhp`6nCyg#mzJ5a0m&r%7QQR@g!X!BB>HpkW_uh{HSRkcV~f;T(Vnhav(<4lt~)e2$pJH8wGe zPn04Pr-+6slE@5L)S~{l=!V;T(L!My(i`w6+cN$Kjj`=+8{Y_qINs5}{{^s?@)#xo z48Xt#HZYpTq$UHn36O6pWS#KDfH_UrPkd@XBOmEVNiM2Um89f{88 zCCX2k(#08Q)hS&iV_4Nn#;t6nENew9V$CvGxb!8idI{uT?s8Y(suq&1h0J6gvs)=h zfeTy^gBX|#UF-q^5RPz!BqTvz4768tm@~lj720XVV_3-=RHj0*L5~9|KUqr6vPv_VC1qxd4row#Vw8yPte{7u2~Ri| zw1wh?b29m~r`@5npU8wKqnk8W$C0(EKxHXBG08g~0y&{Rp2aDQ7V z;a++Wf%GjOb^BYg^LFf9hfUWGQ5>`r_tT7clq2()^-4Ul?RlJpsZCw#NV+DElgQ+$ zQVm_toJP>nVKpf)L&`j%k~Kho!(&wI%I$8qvD<|OV-`b;S&C7NiQV~Oq7VgS-p3&l zCI}DBd*Ayq!7nmwf*4&D=HWCu ztT`T-%Uu6peGda07=mmV!m2O#4g=ev4F|SD1KIGn2Fjp-hS(tJ{zvMzb%WE-bD}Gn z_ckwTkr=wun(lPRi50rddei8hH%yoDI?DSR>~r_K|DEr?SyFGn5Ma)C-tz+v6M_+} z;53=Z!EJ(YgeP3#L+S~`8D`{$69s`uiuh3?CUK@v{HYULV3eFTI4 ztZs~BUGZwiJf>wXYxyi8M@w1IGV+qI)hs15d0PM7`o0LDEM+QNSqE6wGMBv^1u#oN z%v?wgnbTlqG~+?dhhQ@$+ze+q)7j2=Mg~1|20pt6KhuVK6EtujGzB!YazHe4P_(Uz z8AtOcbbvHQ!x^1P2TE%iOCudjTL(>Z2TlW>b_lgl1GQ1ZiBj8%p0KJ8?5A=d8CC-a zS0e{lqlc5owxDvhuemjPFq~&&2wqdR!6`z#(WzmJDPu!6W#gM-YqrD*!f30tX!Dw( z!Zv!49B%UnZ(}OV5x0&iw{|!;oH!bvSvL>N8LdJYN0Ya3pf_&FntR)ZeA736Gpm17 zhJZ_kfh)LQIJktPgoUevA8|N{i@1qXgo^)Tgo|T@!&rok>$r~#xyn#1Mj$!sF*)v0 zIh3P}mNSHx6NH$XteLBWtP3HWQv)kP5%S_WZW6pQ_&NRxx-b|zS}eMwOOB))5vGfx zfFYy1o4fz0x~s#w5Zbys=sK(eyFL&*J|H{c$^)}QyFF05K43dMa65;CJL{6W>mraI zvOCnkJH2xQzEiph0=zVcjlm;>!YhNrQzA7`yx3wq$8!(JV~@!r$I4R!bi}+a;0@pK zyn-~yJL(bw1Cs<(Fa`^x2Rpq8Go;mPJw$3GK$$&7i6juaJrRSHO4+24)V)svJ`C`r zQV|tV8b0GAzFAQv=7UKbi$3V{rR)FurJ5`~=qNhw@Q&{|E*okdzQ{kiKm}B2nBj?-VHgIB=^c!@ovYaftgwng zBN-cHovBE)joLueVYCQz8l*_Wq0vANtg5Oin!nVEQ=2NzAxsrCw|C$im`F^-RKYPc zwRJNJdul+18n=(42Oiuh!}%Lt3$~ncsbJ$wml6nu7zmk)sbKpxC&V?)gsHWeHYx-u zu_>x7G_btZ=sVX6kMk&x5n;Uf zy1NRx$2CZe*|HBgNDahO1D^|n*6TSFgj7g|^dr-I6NnTfiDbPzu`oTk zNDiC5Lm?E73^9-V$V>kc$&e(;k~~QaNJ&#!$>O82RC1-5#MBL#Ngl(=>Dwh=8nR~D zNuTt|phPC{0|BBmN+3W=rDVz=a7w7G0;yCEs!Wlq$x#ROO2{7d1iG^dF{<5UXdOwQ%Z8t2>w=&T0moCfNQ2J6I5 z?Gy&?^iJ>;&prPj&o(;GJ4jDKSkLx+&qRpN`K(X+91Q%d#Ql7POwY&3*;goAS(mEzQzo!eyJAc}=z|0^tZ;9g|^-1*8gafE}#x7}`PEjlr0)u+HqvPG9f^xOjzEFdo0K zq168fJPnNv_K**(Y@R@PpXk9_<&ii=h@SOapTRI%#BhvA(4NTvPofQF`~*+-DGa}e zo}Mijmn(z=J%s1Ux(iv2*Pu|al?|%gFLx9=CFz3CS`9FQg9`Bv*3}PUbU3{AI>e39 zK3HZO!dn5^TOswj9PQiEP@aLg<{|aE8sdY!Ee)HygRz?|xkV6QP9mmrqV7nqT0W7Q zErY%bQMawFGX)XIJ0hs7E%v~V)-?||s1U=`A6h1Z(JH#(z}&*a^bTRGaUQ|*(_ BC;9*Y literal 0 HcmV?d00001 diff --git a/tests/image/image.cpp b/tests/image/image.cpp index b83ac84829ac..bea3d4a1af63 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1247,6 +1247,14 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::GIFComment", "[image]") #endif //wxUSE_PALETTE } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIF", "[image][gif][error]") +{ + wxImage image("image/bad_truncated.gif"); + REQUIRE( image.IsOk() ); + + CHECK( image.GetSize() == wxSize(1200, 800) ); +} + #endif // wxUSE_GIF TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") diff --git a/tests/makefile.gcc b/tests/makefile.gcc index 61cccdffd1f9..8a2dcca1c622 100644 --- a/tests/makefile.gcc +++ b/tests/makefile.gcc @@ -560,7 +560,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%%f copy .\image\%%f image + for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/makefile.vc b/tests/makefile.vc index f0cc80bc0038..e9561d11611e 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -858,7 +858,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm) do if not exist image\%f copy .\image\%f image + for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/test.bkl b/tests/test.bkl index d8cb5e1ceab2..db73bfdfd06e 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -408,6 +408,8 @@ width-times-height-overflow.bmp width_height_32_bit_overflow.pgm + + bad_truncated.gif From 235cb8bf3dd3609953519f4b132b8b513fc85bd2 Mon Sep 17 00:00:00 2001 From: paulcor Date: Mon, 4 Nov 2024 19:38:54 -0800 Subject: [PATCH 329/416] Fix loading BMP files which use 32bpp but do not have valid alpha Based on the behavior of WIN32 LoadFile(), and the gdk-pixbuf BMP loader source code, the alpha values are ignored unless the compression method is BI_BITFIELDS. See #10915, #24219. (cherry picked from commit b21642b72b4128f0b64ed7d79b4d320cbfc35497) --- build/cmake/tests/gui/CMakeLists.txt | 1 + docs/changes.txt | 1 + src/common/imagbmp.cpp | 51 +++++++-------------------- tests/Makefile.in | 2 +- tests/image/32bpp_rgb.bmp | Bin 0 -> 1081 bytes tests/image/image.cpp | 9 +++++ tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 1 + 9 files changed, 27 insertions(+), 42 deletions(-) create mode 100644 tests/image/32bpp_rgb.bmp diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index e32721ffcf75..fbf68830b5f8 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -149,6 +149,7 @@ set(TEST_GUI_DATA image/bitfields-alpha.bmp image/8bpp-colorsused-large.bmp image/8bpp-colorsused-negative.bmp + image/32bpp_rgb.bmp image/rle4-delta-320x240.bmp image/rle8-delta-320x240-expected.bmp image/rle8-delta-320x240.bmp diff --git a/docs/changes.txt b/docs/changes.txt index ebf43a6af4b2..52678ef48d24 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -263,6 +263,7 @@ All (GUI): - Fix wxCaret position in scrolled windows (#26282). - Correct loading of `BI_BITFIELDS` bitmaps (Brian Nixon, #23601). +- Fix loading 32bpp BMP files without valid alpha (#24219). wxGTK: diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index a427895db6c2..770304a8922e 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -558,25 +558,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, return false; } - unsigned char *alpha; - if ( bpp == 32 ) - { - // tell the image to allocate an alpha buffer - image->SetAlpha(); - alpha = image->GetAlpha(); - if ( !alpha ) - { - if ( verbose ) - { - wxLogError(_("BMP: Couldn't allocate memory.")); - } - return false; - } - } - else // no alpha - { - alpha = NULL; - } + unsigned char* alpha = NULL; // Reading the palette, if it exists: if ( bpp < 16 && ncolors != 0 ) @@ -629,6 +611,17 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { amask = 0xFF000000; ashift = 24; + + image->SetAlpha(); + alpha = image->GetAlpha(); + if (!alpha) + { + if (verbose) + { + wxLogError(_("BMP: Couldn't allocate memory.")); + } + return false; + } } // find shift amount (Least significant bit of mask) @@ -669,9 +662,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, rmask = 0x00FF0000; gmask = 0x0000FF00; bmask = 0x000000FF; - amask = 0xFF000000; - ashift = 24; rshift = 16; gshift = 8; bshift = 0; @@ -700,14 +691,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, int linesize = ((width * bpp + 31) / 32) * 4; - // flag indicating if we have any not fully transparent alpha values: this - // is used to account for the bitmaps which use 32bpp format (normally - // meaning that they have alpha channel) but have only zeroes in it so that - // without this hack they appear fully transparent -- and as this is - // unlikely intentional, we consider that they don't have alpha at all in - // this case (see #10915) - bool hasValidAlpha = false; - for ( int row = 0; row < height; row++ ) { int line = isUpsideDown ? height - 1 - row : row; @@ -972,9 +955,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { temp = (unsigned char)((aDword & amask) >> ashift); alpha[line * width + column] = temp; - - if ( temp != wxALPHA_TRANSPARENT ) - hasValidAlpha = true; } column++; } @@ -989,13 +969,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, image->SetMask(false); - // check if we had any valid alpha values in this bitmap - if ( alpha && !hasValidAlpha ) - { - // we didn't, so finally discard the alpha channel completely - image->ClearAlpha(); - } - const wxStreamError err = stream.GetLastError(); return err == wxSTREAM_NO_ERROR || err == wxSTREAM_EOF; } diff --git a/tests/Makefile.in b/tests/Makefile.in index 2920be0a7bf9..f829370f14fa 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/32bpp_rgb.bmp b/tests/image/32bpp_rgb.bmp new file mode 100644 index 0000000000000000000000000000000000000000..643a589f7152842169bb7b3024bcccb6860a5294 GIT binary patch literal 1081 zcmb_ZyAA>|3=4>%f(5a4W8@1EGduspUw14?s84S10*6E;H>qR0_qac9JMneZ{h~NF zY~-w+$X4g4!y8WMR;AW|!(%O4@k=&*`b55PUXueYyjI=UYDy`57U)I~pV8->yZ6Gq zpEBUJYHP{Eyo+f2mQB)GTS}QYC8QQM-R`?M_!&snuurbQg2-3 pH69ps;H`3Q$BTZu2Ix@XL3N(=@Nw<3>A$S;a*p*~R&cM#{snEcse}Lk literal 0 HcmV?d00001 diff --git a/tests/image/image.cpp b/tests/image/image.cpp index bea3d4a1af63..1bc50a54d89f 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1595,6 +1595,15 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") LoadMalformedImageWithException("image/width-times-height-overflow.bmp", wxBITMAP_TYPE_BMP); } + SECTION("32bpp BI_RGB") + { + wxImage image; + CHECK(image.LoadFile("image/32bpp_rgb.bmp", wxBITMAP_TYPE_BMP)); + if (image.IsOk()) + { + CHECK(!image.GetAlpha()); + } + } } TEST_CASE_METHOD(ImageHandlersInit, "wxImage::Paste", "[image][paste]") diff --git a/tests/makefile.gcc b/tests/makefile.gcc index 8a2dcca1c622..1ed78d8ac35b 100644 --- a/tests/makefile.gcc +++ b/tests/makefile.gcc @@ -560,7 +560,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image + for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/makefile.vc b/tests/makefile.vc index e9561d11611e..044db42301e3 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -858,7 +858,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image + for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/test.bkl b/tests/test.bkl index db73bfdfd06e..9918f627cae1 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -356,6 +356,7 @@ bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp + 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp From b0db3a9fdb7d46580860549423c4c1b42166c87d Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Mon, 18 Nov 2024 16:55:19 -0800 Subject: [PATCH 330/416] Fix loading ICO files with alpha broken by parent commit The rules are different than for BMP files. Broken by parent 3676d34f8e (Fix loading BMP files which use 32bpp but do not have valid alpha, 2024-11-04) which was backported from master as is. See #24219, #24955. (cherry picked from commit b321af212d1923cef590675510c885762ece47c5) --- src/common/imagbmp.cpp | 32 ++++++++++++++++++-------------- tests/image/32bpp_rgb.bmp | Bin 1081 -> 1078 bytes tests/image/32bpp_rgb.ico | Bin 0 -> 1150 bytes tests/image/image.cpp | 15 +++++++++------ 4 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 tests/image/32bpp_rgb.ico diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 770304a8922e..90c78fc73cc4 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -517,7 +517,7 @@ struct BMPDesc // The stream must be positioned at the start of the bitmap data // (i.e., after any palette data) bool LoadBMPData(wxImage * image, const BMPDesc& desc, - wxInputStream& stream, bool verbose) + wxInputStream& stream, bool verbose, bool isBmp) { const int width = desc.width; int height = desc.height; @@ -559,6 +559,19 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } unsigned char* alpha = NULL; + if (bpp == 32 && (!isBmp || desc.comp == BI_BITFIELDS)) + { + image->SetAlpha(); + alpha = image->GetAlpha(); + if (!alpha) + { + if (verbose) + { + wxLogError(_("BMP: Couldn't allocate memory.")); + } + return false; + } + } // Reading the palette, if it exists: if ( bpp < 16 && ncolors != 0 ) @@ -611,17 +624,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { amask = 0xFF000000; ashift = 24; - - image->SetAlpha(); - alpha = image->GetAlpha(); - if (!alpha) - { - if (verbose) - { - wxLogError(_("BMP: Couldn't allocate memory.")); - } - return false; - } } // find shift amount (Least significant bit of mask) @@ -662,7 +664,9 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, rmask = 0x00FF0000; gmask = 0x0000FF00; bmask = 0x000000FF; + amask = 0xFF000000; + ashift = 24; rshift = 16; gshift = 8; bshift = 0; @@ -1264,7 +1268,7 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, } //read DIB; this is the BMP image or the XOR part of an icon image - if ( !LoadBMPData(image, desc, stream, verbose) ) + if ( !LoadBMPData(image, desc, stream, verbose, IsBmp) ) { if (verbose) { @@ -1285,7 +1289,7 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, //there is no palette, so we will create one wxImage mask; - if ( !LoadBMPData(&mask, descMask, stream, verbose) ) + if ( !LoadBMPData(&mask, descMask, stream, verbose, IsBmp) ) { if (verbose) { diff --git a/tests/image/32bpp_rgb.bmp b/tests/image/32bpp_rgb.bmp index 643a589f7152842169bb7b3024bcccb6860a5294..e0058f9b59a88a54cd9b924f1ec8b6d39b48947a 100644 GIT binary patch literal 1078 xcmZ?rHDh4_12Z700mK4O%*dbsWB~zG9>Rf<|Nk>EjN%a-1`R;JkKz#;1_16Bzx)6I literal 1081 zcmb_ZyAA>|3=4>%f(5a4W8@1EGduspUw14?s84S10*6E;H>qR0_qac9JMneZ{h~NF zY~-w+$X4g4!y8WMR;AW|!(%O4@k=&*`b55PUXueYyjI=UYDy`57U)I~pV8->yZ6Gq zpEBUJYHP{Eyo+f2mQB)GTS}QYC8QQM-R`?M_!&snuurbQg2-3 pH69ps;H`3Q$BTZu2Ix@XL3N(=@Nw<3>A$S;a*p*~R&cM#{snEcse}Lk diff --git a/tests/image/32bpp_rgb.ico b/tests/image/32bpp_rgb.ico new file mode 100644 index 0000000000000000000000000000000000000000..6b3dda1bc875605d4e329b845019639b703a4539 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYH+!T Date: Tue, 19 Nov 2024 13:50:33 -0800 Subject: [PATCH 331/416] Fix loading ICO files with fully transparent alpha Windows behavior is to ignore alpha in that case. Broken by grand parent commit 3676d34f8e (Fix loading BMP files which use 32bpp but do not have valid alpha, 2024-11-04) backported as is from master. (cherry picked from commit dc83c4ca0eaa247950aaa9a9e114a21b46b6ae17) --- build/cmake/tests/gui/CMakeLists.txt | 2 ++ src/common/imagbmp.cpp | 13 +++++++++++++ tests/Makefile.in | 2 +- tests/image/32bpp_rgb_a0.ico | Bin 0 -> 1150 bytes tests/image/image.cpp | 5 +++++ tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 2 ++ 8 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 tests/image/32bpp_rgb_a0.ico diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index fbf68830b5f8..3f8452d9ba1f 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -150,6 +150,8 @@ set(TEST_GUI_DATA image/8bpp-colorsused-large.bmp image/8bpp-colorsused-negative.bmp image/32bpp_rgb.bmp + image/32bpp_rgb.ico + image/32bpp_rgb_a0.ico image/rle4-delta-320x240.bmp image/rle8-delta-320x240-expected.bmp image/rle8-delta-320x240.bmp diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 90c78fc73cc4..88224fe9ac3b 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -695,6 +695,10 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, int linesize = ((width * bpp + 31) / 32) * 4; + // flag used to detect fully transparent alpha channels, as + // Windows behavior for ICO is to ignore alpha in that case + bool hasNonTransparentAlpha = false; + for ( int row = 0; row < height; row++ ) { int line = isUpsideDown ? height - 1 - row : row; @@ -959,6 +963,9 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { temp = (unsigned char)((aDword & amask) >> ashift); alpha[line * width + column] = temp; + + if (temp != wxALPHA_TRANSPARENT) + hasNonTransparentAlpha = true; } column++; } @@ -973,6 +980,12 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, image->SetMask(false); + if (alpha && !isBmp && !hasNonTransparentAlpha) + { + // alpha is ignored for ICO if it is all zeros + image->ClearAlpha(); + } + const wxStreamError err = stream.GetLastError(); return err == wxSTREAM_NO_ERROR || err == wxSTREAM_EOF; } diff --git a/tests/Makefile.in b/tests/Makefile.in index f829370f14fa..a51a05da2f67 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/32bpp_rgb_a0.ico b/tests/image/32bpp_rgb_a0.ico new file mode 100644 index 0000000000000000000000000000000000000000..24cb7b6a8a79101ead28ca9c2eab112e1aba230e GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYH+!GEC8C>{-i(KIkJ(*S0P HK#B+ebnyUE literal 0 HcmV?d00001 diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 75dde5db069f..0cd315e9ff99 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1598,6 +1598,7 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") SECTION("32bpp alpha") { wxImage image; + REQUIRE(image.LoadFile("image/32bpp_rgb.bmp", wxBITMAP_TYPE_BMP)); REQUIRE_FALSE(image.GetAlpha()); @@ -1606,6 +1607,10 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") const unsigned char* alpha = image.GetAlpha(); REQUIRE(alpha); REQUIRE(alpha[0] == 0x80); + + // alpha is ignored for ICO if it is fully transparent + REQUIRE(image.LoadFile("image/32bpp_rgb_a0.ico", wxBITMAP_TYPE_ICO)); + REQUIRE_FALSE(image.GetAlpha()); } } diff --git a/tests/makefile.gcc b/tests/makefile.gcc index 1ed78d8ac35b..6e112c87e680 100644 --- a/tests/makefile.gcc +++ b/tests/makefile.gcc @@ -560,7 +560,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image + for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/makefile.vc b/tests/makefile.vc index 044db42301e3..22c5e0f94e54 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -858,7 +858,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image + for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/test.bkl b/tests/test.bkl index 9918f627cae1..e4a1011c1952 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -357,6 +357,8 @@ 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp + 32bpp_rgb.ico + 32bpp_rgb_a0.ico rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp From 282d71e0dab88143423652d1ee02ecd07e16018d Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 27 Nov 2024 07:50:47 -0800 Subject: [PATCH 332/416] Avoid memory overwrite on malformed BMP with invalid RLE data (cherry picked from commit 443b64c11cc2b44a0fd713e90efa4300e279ea59) --- build/cmake/tests/gui/CMakeLists.txt | 1 + docs/changes.txt | 1 + src/common/imagbmp.cpp | 4 ++++ tests/Makefile.in | 2 +- tests/image/badrle4.bmp | Bin 0 -> 4326 bytes tests/image/image.cpp | 1 + tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 1 + 9 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 tests/image/badrle4.bmp diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index 3f8452d9ba1f..6807aba37672 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -152,6 +152,7 @@ set(TEST_GUI_DATA image/32bpp_rgb.bmp image/32bpp_rgb.ico image/32bpp_rgb_a0.ico + image/badrle4.bmp image/rle4-delta-320x240.bmp image/rle8-delta-320x240-expected.bmp image/rle8-delta-320x240.bmp diff --git a/docs/changes.txt b/docs/changes.txt index 52678ef48d24..aa94d364ef11 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -264,6 +264,7 @@ All (GUI): - Fix wxCaret position in scrolled windows (#26282). - Correct loading of `BI_BITFIELDS` bitmaps (Brian Nixon, #23601). - Fix loading 32bpp BMP files without valid alpha (#24219). +- Fix buffer overwrite when loading malformed BMPs with invalid RLE data. wxGTK: diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 88224fe9ac3b..b8e75890aee2 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -767,6 +767,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, if ( !stream.IsOk() ) return false; row += aByte; + if (row >= height) + return false; line = isUpsideDown ? height - 1 - row : row; } else @@ -870,6 +872,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, if ( !stream.IsOk() ) return false; row += aByte; + if (row >= height) + return false; line = isUpsideDown ? height - 1 - row : row; } else diff --git a/tests/Makefile.in b/tests/Makefile.in index a51a05da2f67..91dc0a8901f1 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/badrle4.bmp b/tests/image/badrle4.bmp new file mode 100644 index 0000000000000000000000000000000000000000..632787a730fb44640ed6ee6c427495db6ed95433 GIT binary patch literal 4326 zcmb_e&rc&q7JhNt)oq&rmz%M%GYQy>v{94;Rs)hvOFPCsMYGaK$Tuz#5eLL!=VTE@ zN_-09gyloz(Hz{}hJAOiaD$iKmUudDqFl1Wy(6y>h2>VEaU?|tu8 zZ~pVQ6a{~K`27t1JM_osA5oMdxPFUuGpYIm-1FZpeIHzT6b!$|75{X5t1kGx#UrC15qdR=b11Dv8!%i^Sn@zEe%sm7R1DNC|lYL`04$qmv@-^C^A zE!j%VEl}pLB~3YRqODSLor=4Ayz{u_V1T_Bytg$V<8)qPZ`mRvK*jSlYln7tu}**Yc6N82(nM=JD+>FEqe+X?l$&_# z&!RhyERX)D=suLPis(9}PUnn_4JzNoH#l>qFISdloYjgj9o@SFQ@=hrET9C6%ZJ+GBjr)W9EKFn3NvJfEy%qt5R9UY?LC~Hd&~+MoE1uqg#y$#Psjk*1-WpQedDNuGebJA8YQI*b^dFtNM&EjPb$-u zL~%H$-ik}h9ikPo(x;@F*Ja3^DIY+6dT_3VycLj*Rj1^^8#oimL~!iFw=gz3{1`?& zH;R3r!E6M%h4W5#QR9LhIlimD3~~!~OnD(>pRL9t$WKPA%Rqa`9H=S>-RXsRl{B{( zx78a86%G0C_o&JXx_cdQHOw2ZmBxvz z8f(og6siSqR&{%N=qWV(v$bZ~O2a@_K^Pe0Fkgf`2^k&E=+bEi&uB7kli2@Ctt;=t z3OA*PVy#*gt5Q}tIUlEThNTKMpq%&n zSw?`dF3W0HFzVL5-AmBIyT_z;%-+rZUL3qp925^j{!vF~rQJWt=GgC`s)n40&qbwe zR5TCj^@Ph_!)fLAYB@wds>fjlafTyL1ApPyi0h&Dq(z9D;&@Wc!TDf%KqELOZ0$s3 zNn>UNTM3v9GhvE9Fc|QMY@3xPie%m;(I=6WS-eIuri;%rdW6-G9KPPwX;uoG)u`K) zehWsjd6~}<0-CSb6AiD;q@z`V&j+{W(L-b}&PmfHqd${Hu5|F}r7FlB9nIO=&xtkC zyr-tZmTcoI%k5!)ZxM)$G?itwRkIw{h-yJ!npQ|1Q2oy0_&$owF&UaN+CnQH8Kt+~1!-#wbH{2BY(?NZe%B zgr~oq$wu2ondi<)T&65a21Kq1RQ_R2Vtlh}X^-O;Z*!GmWT;GmdRRfa8#%)UOT~0C zy*yuEt*?Grd29RcGixNgYmdY={iB&}W)E`Ra<}}P*Y?ZEkBPoAiO~HJ!u%g2q*$?t zs$4`A>-4~_pZhod8O^g7TOJwL6l*rI-i)?I7wg?C{}St{E_^O%os~p@dRQO+IIhU} zQTFIA#XPqM_w^!G(#y*LUkCgr{`T$|Fvb}S`w6z+hh|`( z#D#x>Q387;c#l5x<q9nc@MSBwp1O6X^ye;LC^$c$0Y3{arT70UKtqxLJI;`Ev8TmwZB+e->|$4hv7` bwkhNP+B|4}11G+HPRSQk^! Date: Wed, 27 Nov 2024 14:01:47 -0800 Subject: [PATCH 333/416] Avoid negative shift count with valid BMP file Detected by undefined behavior sanitizer, on a file with 16 bpp and a color component of more than 8 bits. Fix by using a different, and more accurate, method to scale color components to 8 bits. (cherry picked from commit 05404fd3796075b10e352288481e4b40cf44ddca) --- build/cmake/tests/gui/CMakeLists.txt | 1 + src/common/imagbmp.cpp | 29 +++++---------------------- tests/Makefile.in | 2 +- tests/image/image.cpp | 8 ++++++-- tests/image/rgb16-3103.bmp | Bin 0 -> 16450 bytes tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 1 + 8 files changed, 16 insertions(+), 29 deletions(-) create mode 100644 tests/image/rgb16-3103.bmp diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index 6807aba37672..800e10e6c1bc 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -153,6 +153,7 @@ set(TEST_GUI_DATA image/32bpp_rgb.ico image/32bpp_rgb_a0.ico image/badrle4.bmp + image/rgb16-3103.bmp image/rle4-delta-320x240.bmp image/rle8-delta-320x240-expected.bmp image/rle8-delta-320x240.bmp diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index b8e75890aee2..e4b412cd6bc4 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -527,7 +527,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, wxInt32 aDword, rmask = 0, gmask = 0, bmask = 0, amask = 0; int rshift = 0, gshift = 0, bshift = 0, ashift = 0; - int rbits = 0, gbits = 0, bbits = 0; wxInt8 bbuf[4]; wxUint8 aByte; wxUint16 aWord; @@ -636,16 +635,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, if (rmask & (1 << bit)) rshift = bit; } - // Find number of bits in mask (MSB-LSB+1) - for (bit = 0; bit < bpp; bit++) - { - if (bmask & (1 << bit)) - bbits = bit-bshift+1; - if (gmask & (1 << bit)) - gbits = bit-gshift+1; - if (rmask & (1 << bit)) - rbits = bit-rshift+1; - } } else if ( bpp == 16 ) { @@ -655,9 +644,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, rshift = 10; gshift = 5; bshift = 0; - rbits = 5; - gbits = 5; - bbits = 5; } else if ( bpp == 32 ) { @@ -670,9 +656,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, rshift = 16; gshift = 8; bshift = 0; - rbits = 8; - gbits = 8; - bbits = 8; } } @@ -937,15 +920,13 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, return false; wxUINT16_SWAP_ON_BE_IN_PLACE(aWord); linepos += 2; - /* Use the masks and calculated amount of shift - to retrieve the color data out of the word. Then - shift it left by (8 - number of bits) such that - the image has the proper dynamic range */ - temp = (unsigned char)(((aWord & rmask) >> rshift) << (8-rbits)); + + // scale color components to 8 bits + temp = rmask ? (aWord & rmask) * 255 / rmask : 0; ptr[poffset] = temp; - temp = (unsigned char)(((aWord & gmask) >> gshift) << (8-gbits)); + temp = gmask ? (aWord & gmask) * 255 / gmask : 0; ptr[poffset + 1] = temp; - temp = (unsigned char)(((aWord & bmask) >> bshift) << (8-bbits)); + temp = bmask ? (aWord & bmask) * 255 / bmask : 0; ptr[poffset + 2] = temp; column++; } diff --git a/tests/Makefile.in b/tests/Makefile.in index 91dc0a8901f1..321d6b2fba4b 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 305b2a1c275e..0e47b85fdae1 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1596,10 +1596,9 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") LoadMalformedImageWithException("image/width-times-height-overflow.bmp", wxBITMAP_TYPE_BMP); } + wxImage image; SECTION("32bpp alpha") { - wxImage image; - REQUIRE(image.LoadFile("image/32bpp_rgb.bmp", wxBITMAP_TYPE_BMP)); REQUIRE_FALSE(image.GetAlpha()); @@ -1613,6 +1612,11 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") REQUIRE(image.LoadFile("image/32bpp_rgb_a0.ico", wxBITMAP_TYPE_ICO)); REQUIRE_FALSE(image.GetAlpha()); } + SECTION("bitfields") + { + REQUIRE(image.LoadFile("image/rgb16-3103.bmp", wxBITMAP_TYPE_BMP)); + REQUIRE(image.GetData()[0] == 0xff); + } } TEST_CASE_METHOD(ImageHandlersInit, "wxImage::Paste", "[image][paste]") diff --git a/tests/image/rgb16-3103.bmp b/tests/image/rgb16-3103.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6e012260292e30adfd7ff07d093e752c39b87252 GIT binary patch literal 16450 zcmbW84R}-K7008Zwt^Zfx@yV>E-F>3M6tpYTTq+@QAtIm_p$*^Rg6`!62*wASU(B{ zCGsIn1!ec5qG1yy&MKrsSF9*#nV@EZO0`q$s-o=_x9oq;``+Fp%||i6=j5FC-W%R~ z@;~R?;Dci)jxDzEYb@S}!hEn|*dZ3H3blZbFn|B}4 z{`<~{y0_p@p;xvf$0D#<1a^44q`)F5v7(Qf9?KH)HzL=R{D#L z?!7qcK5G-_KhNUD3wnu|IA!}Uuz|09~masEfPUn=tNXX%&CmfbH0 zQ4X-N+4|WL3A6VrKvVz<*$Vp=Au0m2|HIgy@_*FvCg=aS^IgvW$*K>$gKMti{DW9U$xf zXsQ1(QvYM6{>1}|2b8dt3~(ZHN|XTt*8o8!d?oO(c?S3p`M@Dk|7@xMaa{lJmYu}) z|ABXitp9wezeDOj%Fw^uS+1~^#`w~5wVc-Ro{q&^D*azCJ5=VMssD?uM2W;{6)5nE z#AOv!S_K}fz-J|r>;FNSRpy_m{}tE4qT&;V3H@u)f299>ss94>fB*8a?mE=}0Q7$y z<{#<55c7}pUxfKb`agpCS3IzIUPb$C4{S@kd2>Smi%sNkfzlHfX0rP(=^1mGO?`_QgiI{)yY&^R83e3N4nEzK|{%wyI z=Mp77ICBL`uE3RRP?;<6M(djaczNm~7@^Q!Y|*=qCri2NYH z7Jv`rX_6p(5QNx5d0|9hkXrxi+$&iBY3cR9K>Krb{U3q;)q{yziGQ#lFj%0$Ym(q# zL1?fbJeVN;@9WwBJ=TA*^F!4C6y*P@_ax~56!aeg{hyWkzX1Im(EkxLVzYYC=g~;DtZLejkwfhnIL4Yk_ z*ANNQ>_J395Mm42!-&Fw@~_43FWP^xtp63Lf6D(UuKy{Vf4)AQ^LI4QME`$_{+}iC zpXr>bFr__SMWoIwg=O-o^cVRrko})l|Dn~OR^lIO5Ev@Zh8hHi3PM8#;h{uw{YCyO zWdEnt|0X2^syt8LG?iluekEUq@Bhu*WH0e^PlF=083EXJGz)hWUS!od36D{(Xn}f47)_wE85 zb*sXt($kt^!&0wRTtoR^mGvm}KMwjYcC@1Yo#Xw^9hiTm$p0VSfX3V+3}1yQE-@pm2E^q&X)kAnX5d-neb z^REo~f95?I`mcumr$GO;8@}3jM)U2c|L=C61N|Gje~K!%r9;J8(^SOqB%Axc)C_zn$yf zRi!ZGRaj=P%InCd(tk%;j?BMz|Hs}_rdXMzOmZ=?S9&H9J|*NUiS4jQqrTzgte{AJWcLVxAucoxF0rQXae**JQ=pXIFOJw7ktW0(RTG5Bd zdnS7(``CPwN&f{g`Wx5K{(pi#=BH)^pTqnk{a?iVBmG~+{BzA#W*@w%_zW58f1RBF zQ!xK&{*__=Q~xWN|J47goc~kh{5S3?^H)GuS}d+91Vu(}o+*TnIn;8ooc|NJ{*7x+ z#{Ttj`Mc%(uafiME9SpPk*G1AVqq$LYSQUn>JG5}SEtaQGD`gt-wvI3O(iHYa`Q~} zO!cw(rl!`v4Ex7^Duw=cDtEf1sWCAfi(jj9t>SuN>YYOW$E_dY`9CFph2taEzup;P z{R371#PeT8{{O`De=6$#V?6(3?}_46FC$xRIzd+%M?%wyFhly^Z{3RLe{cQc^LL~E z_u=_ph5Fx*=f4;Ae;}&d6^n|MX)5CMq}M-v|5HZ0qSY1E6}4=&6@Em1KxfQs0~H#G zJrb%2RfO5X73uWvQ~%FV=D7N7Dy}uHVh-hhT^8wolGOiX^nbncBg{Vq^%ueX6Z+># z{RhSAzb9Hflc<&WX9{Ao)n*d0M?y1+FmssHzkh=MV*l7r3H{HM`k!m)f4A#yg(0uP zgjZv{isQ8I?M418tRHax^^Onm{7;_$AYJA9H|Iay8}hHLuB>INt@I=EGqLxrRT8mB zLY1M)Fk85i@?T(m9nb&x`tO~8IoJQW&2Fy$3)-u={#{`sd;ImlikwlWrpqDsx?P)0v9%rd7zeVlL@FEvEme{%0ig zzl-O8^8QbCPe%5UIc*ZU(m2{RhlpbOh!@TO%=K?voyxoJRqj=Ri{Ja^)9J6^_ZR7} zrqG|VN&TX`jLeP9ZIjTNt|s3#w`*<`-@SPxnf?lXe;U`M-bb9F>+nm%r}#`$WlY|* z3K^5H@EQ7liupGk&;QS){(CY1%h7*rURw?6-`0?)S782qzR{fj>FrmQ^FI&sudn?tz8%^jaG!QxtTkY5nvOW$DF10$Pg+04{F|Qt6!bp@{lD7z8RlO( z>VGfl--Y^bYp_Fq9r~Yokn_(zUl5yrU*bIIZ`MD3BHhdQ4z+m=^Mq;Ar(Wy0R^%_{ z|8zP3DSw*(lt1-9X?}hDmbiRh)zx?r@KRIx}c7FrR@DvNvV?4#eQt7|9>=dd0 zZ`11E9xe70B@(A!5Sx?BPsAQEz6YP*=kI5^1pfxa{6>s(1AFOzGxGm>mrBe^meFbJpYmZvf^bWY$eN_h@3!K7JE<1G8Zt97#Vt&`2gj=5dR9o_y&x#dF59p^grqU zHS50t`3wDjj%p8>pGE&apglm=5NEnvlaIGV{YCzL?|uG zM~wVD^*)C3ud%+Jn|Qu={U_I-K4f6~7I{U5~qJFAcL&%7tsO2W8H`Coum`c`^izLkfw{%_iP@F4yFHo1y=gsQ;Om|6j@ZzYp`zjrsSrSM>kanE#cSe;o%k z|3$9aYJ%?GxXaLLBFqT=-@)(SiE+>Wyz;4ip8xdc%Do=e`h2?w4=#v&pL#`tL*i-;C$q*A2s@{sletpXr{&9cgO?VukG2h9u#&#Nn24 z=>K<6{}c1;9Pf`Zt{W7me;@anucbkk=g1qDT>rHh``@_BOg^wqlZY#W>q6_uLhHh8 z;dSx)zdh=NvEoXz|1<4joYxj;3mSS%M?`DA$F!K3j?-G`|BTfCS@b{Yzt*|0>Gl^d|Ks``A7Pni27fN{C~~$|FQQp2bf6@O-ogbtAN&nBigEHy= zsMZH`Tw|J!SP-xO`UL%7Lj8}ZarfxI0sSAV|I6rq%NEO)Y_{wzIf!zAjm@^jj!2k& zO97$+P{>xer3g_Gh}C~tg8pkz|EHn<4gJ^k>@W1+ME$?mL`QsZM*82D^^Emf)c>sf zXC2>R{@srG{~hYT3i|Iy|KEZB|Gr^_J{$e_1LnU6{ol2_u>DT-e|OZfmB^OlY&EcL z71*~L6l@g~ZWR=5B@VY-iuu0{^?ybFLdQ|AzkSW&gj(`kVcqRR8Uk?b&SE+j9`* zNNn2$_U(cK_ySPKR=B+gQ4vU{|1#PCD_MWD|C8$fn8pO9*Wt-%ZN$mfI?hx6w`KiB z>i+`tKL`4+ckVAc2l~GV{m+H|FG>A3K>zcge@N>8GU>mA$d=^n5ZK^t68jE8!45&; z4nffl;t1&fpwxd6^gj{$FLUlLI}!S?g#N#V{%fTE>!ANxJ^SC=xry{&k_=rQC2yLJ zI37d)Z+QN%cYG`7Kh^(D?w63i=>P9|{!{*<|GRkpQ~t%fig%T;mF#jNasow~3z0C_ zu1Z9ez{BR*A@KhC=r1xVo(_ocp?H{goxLl@+bX8|C9cwWzv6{ zmVhqTaHrI|}oU^#2|5e-Zg#AnX4^ng3}0jv(oOQS)rB|DtwJ zC+okbcuxsi$sQ*nCs5cFcx8`EQVCxPJZzplK14onBWwK?}#%s5UV(2f5wE}5|1|$sR(+AV{~yob^-`TT2&%b(2qQ`iOh3PS#;&_tl-zfEemG!?Pz5bomowaPW zoqj}qNuX1pbqa#;K@egKb%qgzK{EZ9OZ``|{@171KcEGIeKK8MN8T{X|E{dRT7Sgz zZ%+Ozj-N39?jGOhJb>rF*ZpeM0q+IS|FtDQi-j- ze?tEYrT!Nt=zo#azv%$c(nIS3LF9m-?SMhY0YTRRLG%D&=zlEhzg_CT3(r5H|LIcy z(-ZVRU+%B146f7|@;d14=_noV?M42tSpS3P|D60rhsgg`XYc$+>-TW|U(`I8>%XY| zUatS9Xj8O>ttHxus1-!mBJh!Do1_E219Y)<;Xi1SMWdAeBi1c={$H8D+#&K`D!|K~T~%JpA_zkgBx1y^aS(wi>Nlh;?RgPGo9`9HS8o`e7Z literal 0 HcmV?d00001 diff --git a/tests/makefile.gcc b/tests/makefile.gcc index ea0269689392..5641cdb652e1 100644 --- a/tests/makefile.gcc +++ b/tests/makefile.gcc @@ -560,7 +560,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image + for %%f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%%f copy .\image\%%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/makefile.vc b/tests/makefile.vc index fd09c9a1fae3..fba34273953f 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -858,7 +858,7 @@ data-image-sample: data-images: if not exist image mkdir image - for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image + for %f in (bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif) do if not exist image\%f copy .\image\%f image en_GB: if not exist $(OBJS)\intl\en_GB mkdir $(OBJS)\intl\en_GB diff --git a/tests/test.bkl b/tests/test.bkl index 89192dd88ba4..affdaca0bc86 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -360,6 +360,7 @@ 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp + rgb16-3103.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp From b30bb76293b6d06361c3f5eb00677033d26bd5d4 Mon Sep 17 00:00:00 2001 From: Brian Nixon Date: Fri, 2 Jun 2023 19:23:11 +0100 Subject: [PATCH 334/416] Correct delta-RLE bitmap background colour Use black instead of the first palette colour for the implicit background for RLE bitmaps for consistency with Windows itself. See #23599. (cherry picked from commit b473163da20c1f36caaf2e4db512bb8fb4d73a93) --- docs/changes.txt | 1 + src/common/imagbmp.cpp | 25 ++++++-------------- tests/image/image.cpp | 2 ++ tests/image/rle8-delta-320x240-expected.bmp | Bin 77962 -> 77878 bytes 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index aa94d364ef11..b1ccb4d7e9e3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All: All (GUI): - Fix wxCaret position in scrolled windows (#26282). +- Correct delta-RLE bitmap background colour (Brian Nixon, #23599). - Correct loading of `BI_BITFIELDS` bitmaps (Brian Nixon, #23601). - Fix loading 32bpp BMP files without valid alpha (#24219). - Fix buffer overwrite when loading malformed BMPs with invalid RLE data. diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index e4b412cd6bc4..7fd059e4fa4b 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -544,7 +544,13 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, // destroy existing here instead of: image->Destroy(); - image->Create(width, height); + // RLE-compressed bitmaps do not necessarily specify every pixel explicitly, + // as the delta escape sequence allows offsetting the current pixel position. + // They have an implicit black background, which we get by clearing the image + // on creation. Otherwise there is no point clearing, because we are going to + // set every pixel from the source data anyway. + bool clear = desc.comp == BI_RLE4 || desc.comp == BI_RLE8; + image->Create(width, height, clear); unsigned char *ptr = image->GetData(); @@ -659,23 +665,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } } - /* - * Reading the image data - */ - unsigned char *data = ptr; - - /* set the whole image to the background color */ - if ( bpp < 16 && (desc.comp == BI_RLE4 || desc.comp == BI_RLE8) ) - { - for (int i = 0; i < width * height; i++) - { - *ptr++ = cmap[0].r; - *ptr++ = cmap[0].g; - *ptr++ = cmap[0].b; - } - ptr = data; - } - int linesize = ((width * bpp + 31) / 32) * 4; // flag used to detect fully transparent alpha channels, as diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 0e47b85fdae1..a215d5bf5d81 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1380,6 +1380,8 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMPLoadMethod", "[image][bmp]") CompareBMPImageLoad("image/horse_grey.bmp"); CompareBMPImageLoad("image/horse_rle8.bmp"); CompareBMPImageLoad("image/horse_rle4.bmp"); + CompareBMPImageLoad("image/rle8-delta-320x240.bmp"); + CompareBMPImageLoad("image/rle4-delta-320x240.bmp"); } #endif // CAN_LOAD_BITMAP_DIRECTLY diff --git a/tests/image/rle8-delta-320x240-expected.bmp b/tests/image/rle8-delta-320x240-expected.bmp index a7e520ca0c83bdcf213fee35c123def21f03c17e..7ea2b88ea79b1373ab57c328c0120d4d204ae78e 100644 GIT binary patch literal 77878 zcmeIzF>Yfw0EA&0Ns(i)Opzkh))X1Z?_4#@I%dek)ekjN7)AyzPsI#d)>U=0a91oZB(?j|5yK>F>z{|%`ir&i@ z=b?|fTh>}-{jtj9@4uB&o6;41qE2NgTVJFoRneW+m7z>!DZ7+jl&UmEr4MB)OWC)t zTXi<2D?^#eQg$i2TV_?7(v_i1Whq!Df@hBwd!n2SB5f`rR?)%x2m%#T^Y($maP3g)|rm~cMUM8#RY)V&#GL@z5>m@XH)!CG;3}q@y*=6bVuTqt!bY&=0 zIo|epY1OK;DP0-LRF<;O%dSPODVOVexm=EWir$Wgjt|@r_+JH{ zKIrywFY@`rZpUl-AigL3-Y1P8e*PZ=zrQY$b^J0fU*qQ@S;sH)@-==gl6CwtFJI&5 zB3Z{T^YS%*E|PWpGB01_=OS6hFZ1#>elC)A{4y_JelC)A{4y_JelC)A{4y_JelC)A{4y_JelC)A{4y_J zelC)A{4y_JelC)A{4y_JelC)A{4y_JelC)A z{4y_JelC)A{4y_JelC)A{4y_JelC)A{4y_J zelC)A{4y_JelC*r!|z*fPvPxbzfS(V%-}ui{Cj(SM#%T{ z`pp0O-g`u{=f1v@%k}Q%a-8S=;{kP*+sEtT_0#x0KfjRN%x-vZ{H}wu-ygl*!4JRe zxAn{QSFXSF*ZBUcdRBX|aQ*$$_4oF7_U-*UDt@{gzjFQEk>1MP{@c6%dExrI`yGE^ tb-VthJ?yUc58IpH%jeF;?bG<({SK=5h97=k{zc6mi7z^yfWW^h@HaJF%+de= literal 77962 zcmeI!L2lDv00m(uq!Nc=!4Xh5tk`fBww$16%RyLjgW%sunkt$uCKg6QV?h&7UR(8( z-Sqj}%jexRj+etU{hS}a%%{KS$KCXC}&tJd)Se}Rv z`@8LFe9h&!eeKifG#!t}{%6oN@Sk4;cfSrgO<-ez{YJ-jKh|NhWBg1T@!kL7@E18Z z5d^^dv-^Olymz5~u)5mu^`#miWPfz3V{CtG@d_K8+To$*N^E({w{4RKJ z{1&tG`D?vA$uB=~tK#&X>+gIUzuv0n)4SO3zghGhznfh5FJ5=onBP_6vB!(wc!Qmf v<(+n1d&~22>0RDAuCJXJmzR70czgdYH>&!OUw)6>wYSe2_isl6|4!f! Date: Tue, 20 Jun 2023 11:38:51 +0100 Subject: [PATCH 335/416] Restore old delta-RLE bitmap background setting Revert the change introduced in parent commit c7378c6aa3 (Correct delta-RLE bitmap background colour, 2023-06-02) cherry-picked from master as is, and restore the setting of the background of delta-RLE bitmaps to the first entry in the colour table. This retains earlier wxWidgets behaviour and matches Windows `LoadImage()` with `LR_CREATEDIBSECTION`. See #23638, #23657. (cherry picked from commit e1e2e982e30cfcc8d07e1ee4d4e5ce6964fc619d) --- src/common/imagbmp.cpp | 27 +++++++++++---- tests/image/image.cpp | 35 ++++++++++++++++---- tests/image/rle8-delta-320x240-expected.bmp | Bin 77878 -> 77962 bytes 3 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 7fd059e4fa4b..3d2ad46345d2 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -544,12 +544,9 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, // destroy existing here instead of: image->Destroy(); - // RLE-compressed bitmaps do not necessarily specify every pixel explicitly, - // as the delta escape sequence allows offsetting the current pixel position. - // They have an implicit black background, which we get by clearing the image - // on creation. Otherwise there is no point clearing, because we are going to - // set every pixel from the source data anyway. - bool clear = desc.comp == BI_RLE4 || desc.comp == BI_RLE8; + // In most cases we will set every pixel explicitly, so there + // is no point clearing (but see exception for RLE below) + bool clear = false; image->Create(width, height, clear); unsigned char *ptr = image->GetData(); @@ -665,6 +662,24 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } } + // RLE-compressed bitmaps do not necessarily specify every pixel explicitly, + // as the delta escape sequence allows offsetting the current pixel position. + // They therefore have an implicit background, which is either: + // 1. The colour of the first entry in the colour table + // (as done by LoadImage() with LR_CREATEDIBSECTION) + // 2. Black (as done by functions like LoadBitmap() and CreateDIBitmap()) + // wxWidgets has historically implemented (1). See #23638 + if ( desc.comp == BI_RLE4 || desc.comp == BI_RLE8 ) + { + unsigned char* pPix = ptr; + while ( pPix < ptr + width * height * 3 ) + { + *pPix++ = cmap[0].r; + *pPix++ = cmap[0].g; + *pPix++ = cmap[0].b; + } + } + int linesize = ((width * bpp + 31) / 32) * 4; // flag used to detect fully transparent alpha channels, as diff --git a/tests/image/image.cpp b/tests/image/image.cpp index a215d5bf5d81..0d42b65a3c7d 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -840,7 +840,8 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::CompareLoadedImage", "[image]") enum { wxIMAGE_HAVE_ALPHA = (1 << 0), - wxIMAGE_HAVE_PALETTE = (1 << 1) + wxIMAGE_HAVE_PALETTE = (1 << 1), + wxIMAGE_HAVE_DELTA_RLE_BITMAP = (1 << 2) }; static @@ -1355,19 +1356,37 @@ static wxImage ImageFromBMPFile(const wxString& filename) return dib.ConvertToImage(); } -// Compare the results of loading a BMP via wxBMPHandler -// and via Windows' own conversion (CreateDIBitmap()) +// Compare the results of loading a BMP using: +// 1. Windows' own conversion (GDI CreateDIBitmap() via wxDIB::ConvertToBitmap()) +// 2. wxBMPHandler via wxImage::LoadFile() +// 3. wxBMPFileHandler via wxBitmap::LoadFile() static void CompareBMPImageLoad(const wxString& filename, int properties = 0) { + INFO("Comparing loading methods for " << filename); + wxImage image1 = ImageFromBMPFile(filename); REQUIRE( image1.IsOk() ); wxImage image2(filename); REQUIRE( image2.IsOk() ); - INFO("Comparing loading methods for " << filename); + wxBitmap bitmap3(filename, wxBITMAP_TYPE_BMP); + REQUIRE( bitmap3.IsOk() ); + wxImage image3(bitmap3.ConvertToImage()); + REQUIRE( image3.IsOk() ); + + // It is impossible (in general) for both of these + // tests to pass on delta-RLE bitmaps. See #23638 + if ( !(properties & wxIMAGE_HAVE_DELTA_RLE_BITMAP) ) + { + INFO("wxDIB::ConvertToBitmap vs wxImage::LoadFile"); + CompareImage(*wxImage::FindHandler(wxBITMAP_TYPE_BMP), + image1, properties, &image2); + } + + INFO("wxBitmap::LoadFile vs wxImage::LoadFile"); CompareImage(*wxImage::FindHandler(wxBITMAP_TYPE_BMP), - image1, properties, &image2); + image3, properties, &image2); } TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMPLoadMethod", "[image][bmp]") @@ -1380,8 +1399,10 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMPLoadMethod", "[image][bmp]") CompareBMPImageLoad("image/horse_grey.bmp"); CompareBMPImageLoad("image/horse_rle8.bmp"); CompareBMPImageLoad("image/horse_rle4.bmp"); - CompareBMPImageLoad("image/rle8-delta-320x240.bmp"); - CompareBMPImageLoad("image/rle4-delta-320x240.bmp"); + CompareBMPImageLoad("image/rle8-delta-320x240.bmp", + wxIMAGE_HAVE_DELTA_RLE_BITMAP); + CompareBMPImageLoad("image/rle4-delta-320x240.bmp", + wxIMAGE_HAVE_DELTA_RLE_BITMAP); } #endif // CAN_LOAD_BITMAP_DIRECTLY diff --git a/tests/image/rle8-delta-320x240-expected.bmp b/tests/image/rle8-delta-320x240-expected.bmp index 7ea2b88ea79b1373ab57c328c0120d4d204ae78e..a7e520ca0c83bdcf213fee35c123def21f03c17e 100644 GIT binary patch literal 77962 zcmeI!L2lDv00m(uq!Nc=!4Xh5tk`fBww$16%RyLjgW%sunkt$uCKg6QV?h&7UR(8( z-Sqj}%jexRj+etU{hS}a%%{KS$KCXC}&tJd)Se}Rv z`@8LFe9h&!eeKifG#!t}{%6oN@Sk4;cfSrgO<-ez{YJ-jKh|NhWBg1T@!kL7@E18Z z5d^^dv-^Olymz5~u)5mu^`#miWPfz3V{CtG@d_K8+To$*N^E({w{4RKJ z{1&tG`D?vA$uB=~tK#&X>+gIUzuv0n)4SO3zghGhznfh5FJ5=onBP_6vB!(wc!Qmf v<(+n1d&~22>0RDAuCJXJmzR70czgdYH>&!OUw)6>wYSe2_isl6|4!f!Yfw0EA&0Ns(i)Opzkh))X1Z?_4#@I%dek)ekjN7)AyzPsI#d)>U=0a91oZB(?j|5yK>F>z{|%`ir&i@ z=b?|fTh>}-{jtj9@4uB&o6;41qE2NgTVJFoRneW+m7z>!DZ7+jl&UmEr4MB)OWC)t zTXi<2D?^#eQg$i2TV_?7(v_i1Whq!Df@hBwd!n2SB5f`rR?)%x2m%#T^Y($maP3g)|rm~cMUM8#RY)V&#GL@z5>m@XH)!CG;3}q@y*=6bVuTqt!bY&=0 zIo|epY1OK;DP0-LRF<;O%dSPODVOVexm=EWir$Wgjt|@r_+JH{ zKIrywFY@`rZpUl-AigL3-Y1P8e*PZ=zrQY$b^J0fU*qQ@S;sH)@-==gl6CwtFJI&5 zB3Z{T^YS%*E|PWpGB01_=OS6hFZ1#>elC)A{4y_JelC)A{4y_JelC)A{4y_JelC)A{4y_JelC)A{4y_J zelC)A{4y_JelC)A{4y_JelC)A{4y_JelC)A z{4y_JelC)A{4y_JelC)A{4y_JelC)A{4y_J zelC)A{4y_JelC*r!|z*fPvPxbzfS(V%-}ui{Cj(SM#%T{ z`pp0O-g`u{=f1v@%k}Q%a-8S=;{kP*+sEtT_0#x0KfjRN%x-vZ{H}wu-ygl*!4JRe zxAn{QSFXSF*ZBUcdRBX|aQ*$$_4oF7_U-*UDt@{gzjFQEk>1MP{@c6%dExrI`yGE^ tb-VthJ?yUc58IpH%jeF;?bG<({SK=5h97=k{zc6mi7z^yfWW^h@HaJF%+de= From c83ef3189b89854c369f0e3dd533a0a30293daf6 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 27 Nov 2024 14:06:35 -0800 Subject: [PATCH 336/416] Avoid assertion failure on BMP file with invalid or too-large size (cherry picked from commit 5ff83b400c96a12adb2222adce1391c9bd7f6503) --- src/common/imagbmp.cpp | 9 +++++---- tests/image/image.cpp | 4 +--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 3d2ad46345d2..0f03358c67dc 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -547,11 +547,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, // In most cases we will set every pixel explicitly, so there // is no point clearing (but see exception for RLE below) bool clear = false; - image->Create(width, height, clear); - unsigned char *ptr = image->GetData(); - - if ( !ptr ) + if (!image->Create(width, height, clear)) { if ( verbose ) { @@ -560,6 +557,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, return false; } + unsigned char* ptr = image->GetData(); + unsigned char* alpha = NULL; if (bpp == 32 && (!isBmp || desc.comp == BI_BITFIELDS)) { @@ -1055,6 +1054,8 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, } return false; } + if (desc.width <= 0 || desc.height == 0) + return false; if ( !stream.ReadAll(&aWord, 2) ) return false; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 0d42b65a3c7d..43e5949e5620 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1615,9 +1615,7 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") LoadMalformedImage("image/8bpp-colorsused-large.bmp", wxBITMAP_TYPE_BMP); LoadMalformedImage("image/badrle4.bmp", wxBITMAP_TYPE_BMP); - - LoadMalformedImageWithException("image/width-times-height-overflow.bmp", - wxBITMAP_TYPE_BMP); + LoadMalformedImage("image/width-times-height-overflow.bmp", wxBITMAP_TYPE_BMP); } wxImage image; SECTION("32bpp alpha") From 4b9915d9462c77c3696448d433feacc5b3e77463 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sat, 22 Feb 2025 12:51:10 -0800 Subject: [PATCH 337/416] Reduce the scope of some local variables And switch to unsigned types for things which are not signed. (cherry picked from commit b8199fa9ceae805189ddd325c982e52cc8bd4757) --- src/common/imagbmp.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 0f03358c67dc..0c2b02517ce1 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -525,11 +525,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, const int bpp = desc.bpp; const int ncolors = desc.ncolors; - wxInt32 aDword, rmask = 0, gmask = 0, bmask = 0, amask = 0; - int rshift = 0, gshift = 0, bshift = 0, ashift = 0; - wxInt8 bbuf[4]; - wxUint8 aByte; - wxUint16 aWord; + wxUint32 rmask = 0, gmask = 0, bmask = 0, amask = 0; + unsigned rshift = 0, gshift = 0, bshift = 0, ashift = 0; BMPPalette cmapMono[2]; BMPPalette* cmap = NULL; @@ -687,6 +684,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, for ( int row = 0; row < height; row++ ) { + wxUint8 aByte; int line = isUpsideDown ? height - 1 - row : row; int linepos = 0; @@ -908,17 +906,19 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } else if ( bpp == 24 ) { + wxUint8 bbuf[4]; if ( !stream.ReadAll(bbuf, 3) ) return false; linepos += 3; - ptr[poffset ] = (unsigned char)bbuf[2]; - ptr[poffset + 1] = (unsigned char)bbuf[1]; - ptr[poffset + 2] = (unsigned char)bbuf[0]; + ptr[poffset ] = bbuf[2]; + ptr[poffset + 1] = bbuf[1]; + ptr[poffset + 2] = bbuf[0]; column++; } else if ( bpp == 16 ) { unsigned char temp; + wxUint16 aWord; if ( !stream.ReadAll(&aWord, 2) ) return false; wxUINT16_SWAP_ON_BE_IN_PLACE(aWord); @@ -936,10 +936,11 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, else { unsigned char temp; + wxUint32 aDword; if ( !stream.ReadAll(&aDword, 4) ) return false; - wxINT32_SWAP_ON_BE_IN_PLACE(aDword); + wxUINT32_SWAP_ON_BE_IN_PLACE(aDword); linepos += 4; temp = (unsigned char)((aDword & rmask) >> rshift); ptr[poffset] = temp; From 1c677c7c5872afb4883b0f40e00bb698ca5e773e Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sat, 22 Feb 2025 13:01:52 -0800 Subject: [PATCH 338/416] Up-scale BMP color components using Windows-compatible method This allows tests to compare against native behavior under Windows (cherry picked from commit 45a7efd6425c2eb0dc6e7cab5d813b9847e165bf) --- build/cmake/tests/gui/CMakeLists.txt | 1 + src/common/imagbmp.cpp | 71 ++++++++++++++------------- tests/Makefile.in | 2 +- tests/image/image.cpp | 7 +-- tests/image/rgb32-7187.bmp | Bin 0 -> 32578 bytes tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 1 + 8 files changed, 44 insertions(+), 42 deletions(-) create mode 100644 tests/image/rgb32-7187.bmp diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index 800e10e6c1bc..2d86842b3888 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -154,6 +154,7 @@ set(TEST_GUI_DATA image/32bpp_rgb_a0.ico image/badrle4.bmp image/rgb16-3103.bmp + image/rgb32-7187.bmp image/rle4-delta-320x240.bmp image/rle8-delta-320x240-expected.bmp image/rle8-delta-320x240.bmp diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 0c2b02517ce1..ba95fe004c6e 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -512,6 +512,19 @@ struct BMPDesc int rmask, gmask, bmask; }; +// This seems to be the method Windows uses for up-scaling color components. +// It works well with 4 bits or more, not so well with less. But using it +// allows tests to compare against native behavior under Windows. +inline wxUint8 UpscaleTo8Bits(wxUint8 x, unsigned nbits) +{ + if (nbits < 8) + { + x <<= (8 - nbits); + x |= x >> nbits; + } + return x; +} + // Read the data in BMP format into the given image. // // The stream must be positioned at the start of the bitmap data @@ -527,6 +540,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, wxUint32 rmask = 0, gmask = 0, bmask = 0, amask = 0; unsigned rshift = 0, gshift = 0, bshift = 0, ashift = 0; + unsigned rbits = 0, gbits = 0, bbits = 0; BMPPalette cmapMono[2]; BMPPalette* cmap = NULL; @@ -606,8 +620,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { if ( desc.comp == BI_BITFIELDS ) { - int bit; - rmask = desc.rmask; gmask = desc.gmask; bmask = desc.bmask; @@ -623,28 +635,14 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, amask = 0xFF000000; ashift = 24; } - - // find shift amount (Least significant bit of mask) - for (bit = bpp-1; bit>=0; bit--) - { - if (bmask & (1 << bit)) - bshift = bit; - if (gmask & (1 << bit)) - gshift = bit; - if (rmask & (1 << bit)) - rshift = bit; - } } else if ( bpp == 16 ) { rmask = 0x7C00; gmask = 0x03E0; bmask = 0x001F; - rshift = 10; - gshift = 5; - bshift = 0; } - else if ( bpp == 32 ) + else // bpp == 32 { rmask = 0x00FF0000; gmask = 0x0000FF00; @@ -652,10 +650,23 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, amask = 0xFF000000; ashift = 24; - rshift = 16; - gshift = 8; - bshift = 0; } + + // Determine shift counts and move masks to low byte, + // discarding lowest bits of any mask with more than 8 bits + for (; rmask && ((rmask & 1) == 0 || rmask > 0xff); rmask >>= 1) + rshift++; + for (; gmask && ((gmask & 1) == 0 || gmask > 0xff); gmask >>= 1) + gshift++; + for (; bmask && ((bmask & 1) == 0 || bmask > 0xff); bmask >>= 1) + bshift++; + // Count mask bits + for (; rmask; rmask >>= 1) + rbits++; + for (; gmask; gmask >>= 1) + gbits++; + for (; bmask; bmask >>= 1) + bbits++; } // RLE-compressed bitmaps do not necessarily specify every pixel explicitly, @@ -917,20 +928,15 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } else if ( bpp == 16 ) { - unsigned char temp; wxUint16 aWord; if ( !stream.ReadAll(&aWord, 2) ) return false; wxUINT16_SWAP_ON_BE_IN_PLACE(aWord); linepos += 2; - // scale color components to 8 bits - temp = rmask ? (aWord & rmask) * 255 / rmask : 0; - ptr[poffset] = temp; - temp = gmask ? (aWord & gmask) * 255 / gmask : 0; - ptr[poffset + 1] = temp; - temp = bmask ? (aWord & bmask) * 255 / bmask : 0; - ptr[poffset + 2] = temp; + ptr[poffset ] = UpscaleTo8Bits(aWord >> rshift, rbits); + ptr[poffset + 1] = UpscaleTo8Bits(aWord >> gshift, gbits); + ptr[poffset + 2] = UpscaleTo8Bits(aWord >> bshift, bbits); column++; } else @@ -942,12 +948,9 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, wxUINT32_SWAP_ON_BE_IN_PLACE(aDword); linepos += 4; - temp = (unsigned char)((aDword & rmask) >> rshift); - ptr[poffset] = temp; - temp = (unsigned char)((aDword & gmask) >> gshift); - ptr[poffset + 1] = temp; - temp = (unsigned char)((aDword & bmask) >> bshift); - ptr[poffset + 2] = temp; + ptr[poffset ] = UpscaleTo8Bits(aDword >> rshift, rbits); + ptr[poffset + 1] = UpscaleTo8Bits(aDword >> gshift, gbits); + ptr[poffset + 2] = UpscaleTo8Bits(aDword >> bshift, bbits); if ( alpha ) { temp = (unsigned char)((aDword & amask) >> ashift); diff --git a/tests/Makefile.in b/tests/Makefile.in index 321d6b2fba4b..ec87315296c3 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rgb32-7187.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 43e5949e5620..abfe06d4e2a6 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1399,6 +1399,8 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMPLoadMethod", "[image][bmp]") CompareBMPImageLoad("image/horse_grey.bmp"); CompareBMPImageLoad("image/horse_rle8.bmp"); CompareBMPImageLoad("image/horse_rle4.bmp"); + CompareBMPImageLoad("image/rgb16-3103.bmp"); + CompareBMPImageLoad("image/rgb32-7187.bmp"); CompareBMPImageLoad("image/rle8-delta-320x240.bmp", wxIMAGE_HAVE_DELTA_RLE_BITMAP); CompareBMPImageLoad("image/rle4-delta-320x240.bmp", @@ -1633,11 +1635,6 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") REQUIRE(image.LoadFile("image/32bpp_rgb_a0.ico", wxBITMAP_TYPE_ICO)); REQUIRE_FALSE(image.GetAlpha()); } - SECTION("bitfields") - { - REQUIRE(image.LoadFile("image/rgb16-3103.bmp", wxBITMAP_TYPE_BMP)); - REQUIRE(image.GetData()[0] == 0xff); - } } TEST_CASE_METHOD(ImageHandlersInit, "wxImage::Paste", "[image][paste]") diff --git a/tests/image/rgb32-7187.bmp b/tests/image/rgb32-7187.bmp new file mode 100644 index 0000000000000000000000000000000000000000..887ba52c917a48aa17b7ca1e40d00cc01d947cb5 GIT binary patch literal 32578 zcmcKD4_wptqTm16n|86IUF@Y@=&%bNo`o|!L&dYG_*lVW4G8i_tU<8_i!D+{kun-- zhD$MZ6seaYtyFRu1%(~iAv>~?RaUZ=m8@kYYqOHy>vQ|z{yOi` z$IiLu`gpwVyPzcbe4k#9QG*F736+Y!{+7W1)scAf30kDkD*l2M@A%7q_(S4N`EC9{ zFt|v5s6tt#R;W}Fikg}giX-X-MSXpS;+ST)Vrf&UA|j$nv8<(D5f#;iA8}5-=ZLoK|CI%g1c8J)FBFmMy*h2Lpe&ALa}nGLa{bN zp-5P!P$Weu6dB7EitH5%Mc!(KV(%J-V&8g&Vn64u+Ne;}BqDz!?XiclY@S)n|Uv8DqX9Hs7g?@)F&yTS~3)Eo!JLg4CEc?9NT+fjd$OH9{+wtg6g1R zKy#Q!cvLaGrs+UNQp^2&{$A|w#r|IG@5TOJ?C-_?UhMD1{$A|w z#r|IG@5TOJ?C<61_a4xy6jfT4>X25YuF;(5ezzw5p^J zw5p6Ytt$JpR+ZPORqZ{mRqgB1s`mG4RaFC8Rn4GQRX?m%9lxPfogCAuPTkb1&P-@k z-M6%=D^pt4wP~$t%%@dN%xYCreywUIpjFKUwW|4hxB&NHe-HK+>@C<^u(x1;5BB$9 ze-HNeV1Ezx7VIt9Td=oae-HNeV1Ezx_h4_q-h#aadkgj!?C-(;9_;VI{vPZt*juo- z2>agNXHUyISkXtaGpwjn=3qr=$Fd z82iQ8FXrfr74d3?GM@X7SF1zf)f#oYS{oX#)`i8ZS1yfLuZ@UTCoGFsCq>1pGnU7z zvsc8c^H#^J_pXUo?^_?Q-k%V!uG$!{u1Shl*Qds-k7vZIPi~7>pURF`pV<|!?#_!> zU)d9{zE&8o9xIMlPn5>1r^@5iGZpdbxypF;JfCyK=RK7Y`zq|Ku&=_t3VS8?O6--` zE3sE%Uxj@Y_Ep$dVXwqqiM&Apar6+*9)f)c_957ZU>|~g z2=*b^hhQIqeF*j;*oR;rf_(_~A=p2F{R7xPfc*p5KY;xM*gt^%1K2-+{R7xPfc*p5 zKY;xM*gwG0A2^V!QB>t>REKgk>Y7}Q=18taTc4}Z9n00MY|7QFJ&~(PXvx(ieUPik zXv@`PpU&0fb>?dJp3l|n>&eyZ@6FXz4diNS26Hv_!?~K{H*z&6$8t5NZsuyvOyp|1 zZ{=#POyz2>P3LOHe7Ty5*<8((KUXso$kogRb2an#aRKhb{yyxj*jur;VsFL%KJ4$q z{yyyQ!~Q<(t=La_Ezkz*x!f!ec0cJ{e9S5vA1Gx z74`!Ic^$HkSkW0-Co6Ku&a$F&vh%E{OLl=3b<28KkyCb&6ZsDwGyJ>07kw5Q|o$wrI7X7OgJKqFuSvqFozd(IzajXp^EW+KlBE zZT1R_HgB~>yLXL6yKlWkyFbCAt=eeO)+AZ9^{E!^@eGUhV0WAHx0+_A2aE*sHKt zVXwme5cY?#KZN}u>{ZySuvcNP!u}BUhp<0{{UPiRVXwkog}n-U750a)KZN}uE^UhVnr8Z-K?lb=43?|WtUjdW#Z_e*oR^tihU^dq1cCF zABue__MzB^VjqfqDE6V)hhiU!eJJ)1WB)Mr4`cr@_77wKF!m2)|1kCsWB)Mr4`cr@ z_77wKF!m2~^oI{L>l9VZI@O_Oow}x3r#aHB)7CfZbjO-?E1Q~iYfm)m5?Y#dNgp)p zGTNGT*{7Rzd7aI=z2}>C`+Ayn`+J*pRRhhsn!#pW{cyAH_>E@W$+2eLshiEZGZW3a z?pw{eD^tz7YtzlTF<-N8VzyZ~_6`_XA8F(M8!MR&-g$(KXm>u-9O( z!Cr&C273+m8tgULYp~Z~ufbk}y#{*?_8RQNun)sN4Er$b!>|v-J`DRX?8C4R!#)iA zFzmyy55qo;qlYQ_Vid~07?r9oMjg@@qfz(8XhZvAbYXolE0^}gtc~c4Nm$kwlN8k# zld-%nCVNF+Oy26gn7wQIV)m`?i`k#h7gM#dFQz7`FQz`VFXnhgU(CsEeKDu9`(n=Q z>Wk^l>x;Rvr!VGOVPDKxabL_tX|~g2=*b^hhSfWeGT?C*w&9(K*?9R@5cCz>2zMJ*>znyU2T*?GO5?rPwI8YCiN?uCiQDiOzIO_ zCiO`lOzJb*CiU5;C-r%qllr~qC-wV!CiVM!C-qeWllq#$NqznBr2hDgN&U&ON&Tst zlln6glltykllm)Dllp7Zlln2=q<&&{Qa|ON)XxMa^>e{V{rrPmfCsUE5c^tw?$=^p zi+wHj4`Tly_77tJAodSpUyFS$_O;m8V*eoa4`Tly_77rTi+wHjwb<8UUyJ>N*guH< zgV;ZaeJ%F2*w+gC;o&`JWSy+YAv?>8&dJWRqAuA5R@5!)VMR{aMOJi4c9|9R$~d|f zd;SMELW{i?doA`_?6ufyvDad+#a@fO7JDuBTI{vhYq5{OJ_7p)>?5#`z&--|2<#)U zkH9_x`v~kKu#dn#0{aM#9>Fj2d6F5gQt^xZ5M{hZt&G=(D&uuw%J`K_mGNsMl<^76 zl<`SX%J_`s%J}RR%J{t1%J{u&l=1u4E93VkDC4U(D&uRCl=1bc%J}0M%J`Gpl<}vs zmGNhGDdW5Il<`;gDC4gcD&xnBmGKj$%J`{rW&BKqGJdX789&eOCn(g|tFb@w!{=Zk=RFKABlY=_L0~}VjqcpB=(WmM`9m|eI)jg*hgX?iTyI{mtnsQ`(@ZK!+sg| z%dlUD{W9#AVZRLfW!Nvnei`=5IQp^!kp@Loq(OBk(x9%1G-!@Q8npG12Hmkp!^);e z!`c&(hJ=<#L(&J4hK#mIL-y%NLtba3Vek1!!@izK!~Wh#L)Ac}p=L1BP(K`LIDRA2 zaB?itaO!5H;mky&q5D>(;mTB`;o5YhVayk4n3#<;O!*@XGl59MTrkow{}318A?zQ* zz7G33e(u-RXXxs%e+c`Buzv{qhp>ML`#S9Fu&=|u4*Q3&e+c`Buzv{qI_&GPufx6$ z`#S6&!u}!bAHx12?CY?v!@f?~-?;HYr_8~M&dScQqVuvYR&+tu&5C+tPF8eLc8L{T zmi4ltJ{d>XVXwnphrJGa9rilxb=d2$*I}>2UWdI7dmZ*V>~+}du#dt%3i~MRqp**{ zJ_`FN?4z)c!afT7DD0!KkHS6*`zVecrASOyC==6Fs>F14NMgE1otUl-O-$E?C8n=j znwY*eA~8K-Sz>xpRAPF@^2GG)6^ZG2s}s}ru1QSaw>~j_e?nq<)yBm1nxw?^`qaeq z;~9zRC$}Z0pUO^5KeH<_y*n>4{mP!i^lOEQ>0`x-=@X@i=~Ly2=`$6H>2sBd>GS*^ zq9PRgQ0(imum9omo~|DIQ0zmo55+zd`%vubv9HIz9{YOiL$MFVJ{0> zdhF}555+zd`%vsdv9HIz9{YMOK<9t@PkTiU*;!U}PIjIZb;&NUqHb9aD{{&%vZ70} z%dDtZ*2jvj5J!*3J{tRI?4z-d#y%SRXzZi0kH$V4`)KT=v5&?+8vAJMqp@F({c`M= zW4|2x<=8LBemVBbv0sk;a_pC5za0DJ*e}O^IY(c9Am6B{$~USG5s5Z(P}wZ(MsK-$=~H`Wa1 z8|#PjjmK}~8&8hq8&BQLH=dcuH+J93H(r^_H(s00H;(!8jT5u^#wmZkaVC&&oD1d~ z=O5t$Jc9ir*f(I`fPDi$_ZzT(1p7y@e+2tSuzv*m2J9QKZ@|6*`$w>U1p7y@e+2sm z>>IFez`gF&a$F&vh%E{OLl=3b<28KkyCb& z6}2h4E8bD$6z0WeGK+7*vDYM z0{a!%ufTo<_A9Vof&B{XS75&a`xV%)z zYi>=FHMc(1ntMFMntO7aHTP7uHTTReYi@U*HTTLMYwoo|YwlRFHFu)anmbi)&7G;R z=FU}GbLTZ&0Dd!1rNRCk?BBuu9qix1UW2^`dkyv)>^0cGgZ(?$zk~fd*lV!YV6VYm zgZ(?$zk~fd*uR7QJJ@Tm*I=)~UW5HR*uR7QJ6r(AfBw%eiq6W;v7+;`E>?6w*3F7~ zWKLFeQFe(HU6%E-qCVLbR@6@%Jr?^|>|?Qy#Xc7MSnOl5kHtO~`&jH_v5&<*7W-K2 zW3i9Lel_;1v0sh-YV22IzZ(11*ssQZHTJ8qUyc20>{nyI8vE58ef0r*fuhP@pgLqP zP}kTCG)L?O+Io9|?wGw`Ws|*N?FoB9LW{j1=>vN~Mw`7L`?S3vuhU+z_q@GeUyr?D zf3LluYQSDlGiWcUAGQ}9zhN&pIc6_7b<#^5kug6}Gy&ii#_Im8~*z2*^ zW3R_vkNq0#*I>T}`!(3F!F~<)Yp`E~{Tl4oV7~_YHQ2Agehv0(IQklet3;u6m8ev% z5_O2HM5A_ zZdng2a>_2UqD!*Ntf*Jk$BM4V`dQHcar8Ls#<*t{d(-zbM*BGye37J z*Q7e+HK}X7Ce0DANn7tV>5h3#E1SHgwI{r$gch$U=>xARqs?o|KJ7K-b$U&E&wEY# zdc3Cny#YZ~);O%tHrZP-7C z{bSfahW%sM+pxD`Z^Pb(y$$=vuzw8u$FP44dmHvP>}|q+V&dPNlbvTpU9t>ACG-J_VL)qV;_%wJofR}$73JQ(c={=i$bZg z@aKpY{y@p1QS%%7p(=|mOl4WQRApHkp|T__Q(2OtRF;h8DogeXl_hVr%CdKj%Cc|0 z%CbK}WvSYzveYE0EcK}>%kd1A<>WS%nha8!%^d)U8+{d?HIhy8olYq8g2uf<-A{d?HIhy8n8fOG%#zrG|oFY97O7i8V6 zs7K~xMHgk4SkYx!FDvSkU13H2vH@1)B98tf_D^E}B=%2Y|0MQLV*e!ePh$Th_D^E} zB=%2Y|0MQLV*e!ePhy{leIoXW*e7D2hQzNM?aGNr4&Hm$23 z^XaN5W_8t5eqHrUKvz8%)K$+v&INcJ`^T|w#=aT*X6&1>e;oVAv40%<$FYAL`)2H$ zv2Vt{8T-eve;oVAv40%Z^phE`)2GP$Nq8bAIJW2?3=M~#=cqD-@5hEd07`L zx*+RjMLjYnE4nDV#ELGo3P)6{U+=;VZRCcP1tY3 zeiQbau-}CJChRw1zX|(I*c-4nU~jJ&;tol0e>Q->JpG-^YgHq=n33p3QMTxzIW8)2wRSZ1i>*6T8s8|t!G80zv?8|wD1 zG1To_Z>Za!V5qCwXsD}6GStXKbx zMcuL^Eb-8T-xHZ^nKz z_M5TajQwWpH)FpU`_0&I#y$o66zo&5Pr*I~`xNX`uus80h5Puke(Nk~+HCQ#5g7c6L;{|O)P6YPJ2 zy&Zcy_IB*=bUSwJ?bzF~zvGX=-j2N;dpq_&!Tu-M{{;J=U~k9Xj=f#jPfhLXl3id$ z-Lf85pN4%J_G#FsW1o(FI`-+UveLD8(*r(s=8vR}0zrMP8e?oP0)yC@P znxyLH`qb*?JK7gkH;)xpH&2vSH&2yUH_ud5H_ug8H_r=X9rilx-^c!a?BBnO{rlLz zkNx|1v40=?_pyH;`}eWeVXwnphrJH__pyH;`}eW$`tSe!Wzhv$H!JFqIa$#~*(FwV zS=P&n`eavFQNL_}6}e;|v!biS(YIp175lB&Z^eEq_FJ*viv3pXw_?8)`>oh-#eOUH zTe07Y{Z{O=u+PFi3;QhWv#`&?J`4LS?6Ve(IqIL~+rsUM?QLzX8fa~;8EkE>A8u{^ z8~cSjTKKWkt*v9e*4ByH*48P1YwJv)wRJAo+B*MJe!x$$|0(vZ*tcTe`Xl?>Z>JUe zR_t4UWdFB*4EC+qw_@Ll{ZFy~DfU0b{-@ZtV&95=D<9bP#TPGMkae@79+{IBU6fs7 zMVDp0tf)_Rg%$P723V0x_Ax8ED&y$evEPpUcI>xfza9JS*l)*vJNDbL-;Vuu?6+gT z9sBLrZ^wQ+_D1ZD*c-7oVsFIWh`kYeBlgCH>%VY~{v5k-n_@Q(b<`vcb=0R0b==Xu zaHwOfc&KBdbf{yhe5hllVyI)Ta;RfInvajhJ{tQ|*q_4w)LraPVSftyQ+KgHh5ae) zPho!w`)KT=v5&?+8v9e&pThnW7vjSI_#gjP)Gg~_MNZj8R&+^rnHBZQ`dHBwSwAZp zkhxgV$Fi%eXplJiPV9GLzZ3hN*zd%CC-ytB---QB>~~_n6Z@Um@5Fv5_B*lPiG2?C zIoRi5pM!l4_Bq(+V4s71j_?uR7R-Nm>reZ?3%4P5;T8s_yJ`lfyXuFhyY6T|J>50t zo9>#Jo$i|QPj}4(rn}~X(_QmF<3@gl{m-y($G#o=_Pf}(W8aQ_`(5nYv2Vw|9s73d ze}?_fu>TqMKf}Hq`*!TxIm3mSnSa|Y>tRJs*+o`#Np_hP^~(BK(G^)gD;kiwSkcF_ ztE^~H#?ha}{#opw#r|3BpT+)J?4QN{S?r(1{#opw#r|3BpT+)J?4QN{S?qJM&&56$ z`&{gEvCqXm7yDf7a~F&j+!o&cQ}_1U*%;DSlN8cdpBmD4NBhE%zOmwvzKPP1zNzw% zzL|=UzPZYfzWEp)L=5&Z*nf!qhuD937yA#f{}B5R?_&QU_8(&ZA@(0)AA@}i_A%JU zVE-ZZA7cL@2kHKw|ML}5kIc!6F3K*kqRX;gR@5iE!ixH31FXm;`!!I zVgDTV&td-@_RnGe9QMy){~Y$uVgDTV&td-@_RnGe9QMy){~Y%D*ym%Pk9|J&`Pk=U zpO1Y$_W29Ox0~^H{(QMBMx+Z!^b0m65TOU27I~F~(vMG9K?TP52gqG+b zUV8EWf4lv52BL>*2BU}Shogt?Xg?i2H0FyQnwX6qn({{v%><%{=7P~f^DDX8mDsPu zz61LX>^tsa-+_Gx_8oVz@4&tT`wr|ouwRM&O6*r+zY_Zn>^rdU5cXex{YsC_$%-z@ zF0rD^vR+oyC%eLm`eg&G$R+!j6(OB$bu|I?T8SKy8#r_QTXRtqW7yC2VpTYhN z_Ghq<#Xc7MSnOl5KZE@l?9Xrkdj8k{+Ang-F0!IavdgTfSJuahuE_dX(SXdwiawTI zWkrLsAy#yaIQom&zli;d*uRMVi`c)2{fpSYi2aM$zli;d*uRMVi`c)2{fpSYht~*vVzOt!k zeC>&%@r0J5@uUxm#_wo9P&8gMSTtTgTr_@1`{|>YQpcVO?p-fCDPO3v{CpGHYNo{EDq%N#>a^=$6$+Z!+lL^aeC-3?>e`D=rO;YV-eQNFG9qkKi zC&!9wCnrj4C#TA5Cub^ZC+8|_C+GD%I6d}y?9X9;4*PR=u|J3XIqc8f#r_=j=deGA z{W|e(IW$a(Z{$=c6#{OmOU&j7r>|e(IW$a(Zz6|>^ z?8~q(!@dmrGVIH+FT=jAUY<68)*~hHts%(%I4au&tqU$mq-z(U^g8eJlzk>ZM*uR4PE7-q+{VUkN zg8eJlzk>ZM*uR4PE7-q+y$O30_9pC2*qg97VQ<3TguQ9u8r<%-@c#eTz5V0YkIe2* z7@4iwI5Jz4G%{PCIx>4l`@)ggvEq^0iPDkTsq&H8ncMF(4*PEGyRq-Si+wlt-Pm{k zJ=iZirpy25|NOgNSsyF9BI{>G12PvY`dD_A6%ERUSkX1vbyhS?+~2F%zl!~<*uRSX ztJuGa{j1o&iv6qDzl!~<*uRSXtJuGa{j1o&ioF?oGxlce&Dfi4Eh4~!@j^B?WcW#F`q9mG3yIVE!@V!<5+mxiM)5}J{p;Ajj{WP{zrJvu+pqJ&`~P3}_K)w0390Cf2{||r6LNSkCgkXFOvoMW zr(;6g3-@#T?cDx$-(BqcugOTV&i%HTKomS7Tp|eKq#g*jHm;jeRxt)!0{KUyXe=_SM)|V_%K^ z8`!^r{TtZ7f&ClUzk&T5*uR1O8w+PyIN!qCf6Cr|8wu&52REjN9!^RRJ(`*xdPn<( z`?~$(|Je8UW8aT`|DV}jJdWER+mrX+`&y!GBP)7Jwuu!PWJ#tZ1_=g%zdBwy>f!8TVa>J%4c~q7M5y?CY?v!@dstI_&GPufx6$`#S9Fu&=|u z4*NRn-@^Va?BBxvE$rXI{w?g^!u~Dn-|?bnvK-%`{?E>hM-E>_h=E(xiN3{%%d zMugTyMupWyu3B0bxh|qEa>KH^$mFQH$jm$4&c?dP!%20KM^oz}?`VJfeOJ^)`YY=q z`HMpeg@NaIce?G{Kkh2_SFyi(7yGN&U&a0^_E)htU~j!Gq9p0Su!iyEK6ZUsj@AsC{32ma=#7OH(=j@eFOFl*f(I`fPDk@ z4cIqe-++As_6^uKVBdg!1NLuY|2Fn-WB)exZ)5*9_HSeVHui7d>1-VR?E@Xri>f-J z7a!_~UQ*K$9d@K6I-*xH9 zqp^pRMq`hrj>i5i``hhGM`OL^qp`k<(O7@wXlzjYg|ZavQ?S3zbG+Lh>+K(Z9sBFp zU%!j}b?mQWe;xbl*r#Bhf_)11DcE1f{yO&8x$%Yj6MOr8ZG7N?*PoJYVnqg75-UoU zZDvI&vQ$>IMV7{j(q$PecWJ}khP@4Y8}>HrZP?qew_$I?-iEymdmHvP>}}ZFu(x6V z3+#V^{V%Zp1@^zd{ukK)0{dTJ|BHq5-F~)(_y4hb`|S+O#vLA_@O4;W^&Ik6*YSu?z1T!F~k$k-OM0{MbKs z7w&K2{+HPQ68m3b|4ZzDxp0=-&$jUX zKV}zhL+rxGZ46C3oD`aPG&MBwZ`m*Wn8MIRcX4QSB54A#a|{& z$37kV-(vq;?0TeIzry}k3)lb0=li?<_rh(89f(aiJQ$mDbT~HU|FU2BF;lTA*QaAs+`iZp z&unap*B_hW3&f`QgRv<=@r#H|>@%?+#eNj~QS3+gJK75$FCOc{e~)56iv8#xu>ZTB z>BsjY?r+my{^frV8DvSUC|S0d6{W~hS-->-J_N~~rV&95=EB39}w_^Wm?0=2@ud)9%_P@sd*Vz9W`(I=K>xJv~=eRbv zU!R1mtb-e~vJNL@WgSh;%K97oh5O9Q%Ie>fm36%^E6ZJ+mE|eT%JP^rdUz`g_f4(vOy@4&tT`wr|ou_5W(BkVuI{v+%^!u})dKl*cAk00O0>W2KnH4XWt>l^Yb5*qRkZfwXuoYatiG_@iB zZ|t)h@;i4m>b!UuyDXR+rcrWI$gKg(;f&hnb9v%DtjEU(Er%WJaE@|vu(eEvRrz)`fQ%2BlV zkfUfxjiV^+h@&W?-cb~F%u%$e$x*cKgrjIfi=!y{14mJ2o1?y{&bciF0??y_|e z?y?Qb+-1p8?y}6~?y?;#+-190yUPmKxXVh{yUQvP++_zhy2}nHxyz2Gy33j}++{7> z++}Uq?y}BZ?y{adcUk`)ciHtqcbU7`UFIoumwC(GWxfh`nZMFq7R=!SXNKu%cAi7FLudOJ_wHvP@RARhGqy zwh>2nV(-M>iMA@MeHwPe-V4W?esj|e zzqw`1Z*IHkH+N3>%{{mL=Kd+a`TDfq?DqN1o>{-y>-U>|0l(QF^qYgvZ~>md{u%5& z*n6<|VDG{H8SJ0I{u%6_!TuTSJ=lA&_h9eA{u%6_!TuTSpTXXPy$5>__8#m#*gu2) zGuS_a{WI8mu=il^5%&M|pT4FZO-d_hH|MeINFGIiKu4 z?0MOLMIZKk*!N-IhkYORec1P5-^bDW6dLOyrN+8grLisv(OARO8f!$T#u^o-v94OG zv962IST`)wSd*hP*39J^>khu!@$S_cYvCG=wRFA4T9Kf!9^9z09!}C&kEUv@O&J<% z%QlU*En8#l+@-PhiBe>#tZ0jj7fk+@C|#DpiZW%q zsP3;sS+Z@c=xO5U1K1B>KY;xJ_5;`tU_XHU0QLje4`4rl{Q&j@*biVofc*gWF6>>{ zyRdg*@50`Ny$gF6_AcyQ*t@WIVei7;g}wM=EY|^j?V>7u?cziF+9fsm+OQ+~+K766 zZPYP+?W!hy?Ya~C+6^uG+T;)PwV7@D+8w9$wYxj@wT0*PwWU4!+KOI%?ZE+k?cqUv z?a^U_gZ*RQYj1@yK4puRS^ zn+vcT``y@2Vn2!fB=(co@5X*N_Pep)js0%yC$XQzeiHjh>~~|o8~feZ@5X)-`$_C4 zv7f|#68qiQ@5X*N_Pep4#C{U{Nn!ub{@Gs{WJ#<6(Q#C{O_LF@;yAH;qT`$6mnu^+^K5c@&w2eBW-eh~X1?1!)) z!hQ(*A?$~+AHseJ`yuRyuph#H2>T)Ihp-oalrf|*HY`#a8y2gK4NF3d4Pk0yLqw>t zAu7z+uxhEXVO@l=VZ$vn9p(oGS(7(snaJ|sj;4U^ccuI{8-g0Auufo{iuQWCU z#S2IBvCqf;GweUZ{xj@9!#*GTeC+eF&&NI=`_Hid4ExWp{|x(l?DMhD$37qX&#?at z`_Hid4ExWp&&NI=`+V&4vHuMF&#?cD3t(8b>@87}ESVK;mZh+wRM{3*lqO4OMH#Y8 zRX^y4s>x(qcfw@b&|=dpht`{%LuV(-P?EA0RIKYuGpmduJa%TicTs%#4@N|U9tq6}FkE7~f{ zVny3zPqU)!GLC)&`y1Hb!2SmIH?Y5f{SEAIV1EPq8`$5#{s#6pu)l%*4eW1VKZ^Y* z_M_O3Vn2%gDE6b+k77TH{V4XM*pFgAiv1||qa1xy(P&?!Y_u;{HQJYiG}^<|jrNGp zMtf9PqkYxVM*F&mM*D_kjrQcIMtkP+M*EHxjrQHE8|{T_8ttX)8|@VdjrM~Z8|{aa z8tq3@8|_UQjrNvpjrO+eMtkS3Mte_QqrHDmqy2hequpKHX!n#h+P&qCc3(xK-Cx;g z=Y>HEMFI8&*nf`w=h%Oa{pZ*hU|)cJ0rmyh7hwN6_Mc<_Irg7pUx0l9_667%VE;Mx zpJV?y_Mc<_IratE7hqq2eF65LWB)n!pK}5Da->H^$uhpk#Zgg;ER_{)k@1BPj*8M{ z8LTK%#*5{Tin3(eSkcomUQm5hWF(G0hW!}!W7v;jKZgAn_G8$OVLyib81`e>k6}NC z{TTLR*pFfF#@>y+8+$kQZtUIIyRmm;@5bJZy&HQs_HOLm*twP&_bhWpPb+xzM>}v0v=xXn|)z#iV)zyA|x~tvo>uUGR zcC~x`UG2U=SGzyh)gCP50u*9ji2XG7)7VdAKaG7M_J!CNVqb`TA@&DXp1b3 z6{X8ESW%{ID=W&9ZDU1G%eJ#3ql}~9#QrAsH?hBo{Y~s|Vt*6+o7msP{wDS}vA>D^ zP3&)Ce-rzg*pFjBj{P|H$FU#BejNL8?8R?wj4Q?+i?OYFbI{!8q? z#J&joBJ7K>FT(yy?7zhROYFbI{!8qOurI>C2>T-Jzr_Aa?7!p!Brjk7wrH~~g%zdB zwy>f!Svo7qkY%!>t+Fguv`zLjE7~qIvZ8F_=o8paU_XKV1ojiyPhdZR{RH+C*iT?T zf&B#b6WC8+KY{%O_8#m#*n6<|VDG`+gS`iP5B47HJ=lA&_h9eA-h;h|qk9enoQtXg z&c%lU&LuSgXV{T|Gon7=j5-!@u4)Q6*PRGBH?#zt$sYuqnQZ~*j?)3>?#_U-@O;2o z+7obA^ah*<2LjH+g8}E!;efO0M!?xJ7I3!R3^+R{0?wXW0cZbIz z>GcPkzCgg~4+fmUVlF^2_Qlxyu=io_!`_E|G4{pS7h_+HeKGbv?0wk#u=inKjD0co z#n=~P@5A1Qy$^dI_CD;3u`mAN^PZ;|dmr{b?0v%iU;fLtH_K93QL1bUD@v24v!V=H zCM()1%VI^_WKXlA?J^@P%9e5TTiD;i{ucJPu)l@~CRz3;RjzC$XQzeiHjh>?g6G#C{U{N$e-FpTvF=`$_C4u@_HqCKchXMapp3VpX_n zNl3UWOdalu2n}~dg@wCTEe&_AiwJjZSQhR|jtX~WE)RF@SP|~py*k`gxF+0Hx<1@h zkr3`WxG~&yI4Rt9G&S7Slo9S~*%t0<%MN#S?h1GHCKne&5CvqN1wue3i~PSr?8*GehT|3?5D7w!hQ<- zDeR}PpTd3$`zh?Fu=ir`#omj(7ke-EUhKWtd$IRo@5SDWy%&3aUv0vRz4&FW_dwjp zqN=!&#fRcXmejZHvZ^U=WZj9lkqs?zBgr4cjbygPjqErbH?q4k zZlv&h+(>Cp+(<=l+{nR!xRJwyaU(~E<3^fp#ErC!#f`Mxj2r2kh#Tp-6*tm96*qEy zI&Q@6iyQIG#*KLWaU;G!+=xFIHxex60+eFUzXqqC#eNq1S?p)AFU7tT`%>&nu`k7b z7W-N3XR)8fz7+dX>`Srd%f&X$Vn2)hEcUb5&thMSeJS>(KYZTv&SF1{{j9KGwdz=k zER_{)k)^SsbXf)~%9L$oMOm_KtmtXkc2;DRWwW9kGLHTQ_FrKC1@>QH{{{A6VE+a7 zUts?Q_FrKC1@>QH{{{A6VE+a7Utm9t{WSK|*iU0Wjr}zC)7VdAKaKq~_S4u;V?T}k zH1^_`I@5|A_abGEd$B6Vy(A>Z9j4B4M}+3Mqr!6BtCr@t*G1&GH!RC>Cr9PDGnePM zcdW>9?_QnbE?kr2E?uAFu1LsnAKaMZKAe=}KAM{2Zpz4Uw`|LCw`J$JJ9p){d-8JJ z{d;oU*9&vp?&2J`r!>dyE$5GOD{|ca${cr4yil|Z`!ejm!TuZUzrp?+?8~q(!@dmr zGVIH+{|5VSu>S`8Z?G@Jz6|>^?8~tK2K#TY{|5VSu>S`8GVIH+FT=i!pZnin{|)xv zZ~;KJ0zi`>^+6 z@5A1Qz4)Iy-vP5{QI*-V_>kGNq{i$CJ7V@k)SEp~$IPBpO=i!!6K2nb7PBY$1G6Wy z&FtB6+U(igY4#MJH+xEZ%$|x~v*+M|*>iZ%>^VAY_B7ovds@cKp0=B2Pv?Z$({s!0 z>7O!tu1}jiZlBrXnKgU7{I2u33s8=IIre_+`B&exe(e3&mt$X!eL42! z*q3AP$KH>N#{O&UzsCM+?7znTYwW+qeir*#>}Ro`#eNq1S?p)ApT&L_`&sN~v7g0$ z7W-N3#izVkh0VK2Y4a{t*}O|aY~C=n%^MMF^G1c)ysMVlyz3%t-VMua-sC8oH*>ko zyJLmTyL+|GTe!yNEnRQ(RwUTG2RGWhhm&mHqp3D;Q-;mkvd!jg%eHwtciFr>c{XqV z9-H@iq0Q?qws}3JHm|qb=Ji$ZTRfFEZ&18Q*o3_a`){%T7W;3p{}y`__9pC2*qg97 zVgD`m-(vqQ_TOS}!rp|v340Uv-(vqQ_TOUvE%x7HZ^GV$y$O30_TTbz|6A<8aM>9Pz~lquWFin3(eSkcq6?X1Ws%VtG8WII_=4srB3?B}qb!+s9?Iqc`K zpTm9*`#J3Au%E+z4*NOm=dho{ehzy-_I~XB*!!{fWADe_kG&szKlXm?{n-1l_hawJ zUi`H8A8`5>RXKf&4>^5HYMj2XBTipLz0((U%;{Uz8t2<`VI~_eTN5~zN5oVU(*ezuVu{XYrE<6bxt^aJ-3{`{wb&L z`n1#M_Bnl?S*OqIck+r{C-?941uM7!71&o`AHY6+ZBlx4G`9kQLQC`ZQ8zr+4J?7zeQJM6#1{yXfy!~Q$$zr+4J z?7zeQJM6#1{yXfy!~Q$$1K0;u>bun%A#z&?O|0DE!tfWqTn zr1ba~t33WCAs&C2+T)K1_4uR0JpNTnJ^pnO9{+}A9)EI_$Dg^}%-EZ;{~r7AvHu?X@3A*yZ^qt?y%~Em_TOXwJ@(&Y|2_6* z?9JGlu{UG?J@(&Y|2_8KWB)z&X6((_o3S@z|2_8K^K<`uF2I)c>wh6ilclqw3|S^C z+A7OpMcZUgv!d-XBP+_5?O;VaWjU;97jg7??B}tc$9^9BdFVjsjlh Date: Sat, 22 Feb 2025 13:48:16 -0800 Subject: [PATCH 339/416] Handle BMP alpha the same way Windows does Windows ignores alpha unless the format is 8-bit ARGB, and alpha is not all zeros. (cherry picked from commit e7e352d5f4315116656e21a996c08864021ff80b) --- build/cmake/tests/gui/CMakeLists.txt | 2 + src/common/imagbmp.cpp | 87 ++++++++++++--------------- tests/Makefile.in | 2 +- tests/image/image.cpp | 7 +++ tests/image/rgb32bf.bmp | Bin 0 -> 1218 bytes tests/image/rgba32.bmp | Bin 0 -> 1274 bytes tests/makefile.gcc | 2 +- tests/makefile.vc | 2 +- tests/test.bkl | 2 + 9 files changed, 54 insertions(+), 50 deletions(-) create mode 100644 tests/image/rgb32bf.bmp create mode 100644 tests/image/rgba32.bmp diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index 2d86842b3888..dc721059a22d 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -155,6 +155,8 @@ set(TEST_GUI_DATA image/badrle4.bmp image/rgb16-3103.bmp image/rgb32-7187.bmp + image/rgb32bf.bmp + image/rgba32.bmp image/rle4-delta-320x240.bmp image/rle8-delta-320x240-expected.bmp image/rle8-delta-320x240.bmp diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index ba95fe004c6e..8a4546560941 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -510,6 +510,7 @@ struct BMPDesc wxScopedArray paletteData; int rmask, gmask, bmask; + int amask; }; // This seems to be the method Windows uses for up-scaling color components. @@ -538,8 +539,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, const int bpp = desc.bpp; const int ncolors = desc.ncolors; - wxUint32 rmask = 0, gmask = 0, bmask = 0, amask = 0; - unsigned rshift = 0, gshift = 0, bshift = 0, ashift = 0; + unsigned rshift = 0, gshift = 0, bshift = 0; unsigned rbits = 0, gbits = 0, bbits = 0; BMPPalette cmapMono[2]; @@ -553,13 +553,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, height = -height; } - // destroy existing here instead of: - image->Destroy(); - // In most cases we will set every pixel explicitly, so there - // is no point clearing (but see exception for RLE below) - bool clear = false; - - if (!image->Create(width, height, clear)) + if (!image->Create(width, height, false /* clear */)) { if ( verbose ) { @@ -569,21 +563,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } unsigned char* ptr = image->GetData(); - unsigned char* alpha = NULL; - if (bpp == 32 && (!isBmp || desc.comp == BI_BITFIELDS)) - { - image->SetAlpha(); - alpha = image->GetAlpha(); - if (!alpha) - { - if (verbose) - { - wxLogError(_("BMP: Couldn't allocate memory.")); - } - return false; - } - } // Reading the palette, if it exists: if ( bpp < 16 && ncolors != 0 ) @@ -618,22 +598,21 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } else if ( bpp == 16 || bpp == 32 ) { + wxUint32 rmask, gmask, bmask; + wxUint32 amask = 0; + if ( desc.comp == BI_BITFIELDS ) { rmask = desc.rmask; gmask = desc.gmask; bmask = desc.bmask; - // Mimic Windows behaviour: alpha is applied only in 32bpp - // and if the colour masks are the same as for BI_RGB. - // Any alpha mask in the header is ignored. - if ( bpp == 32 && - rmask == 0x00FF0000 && + // Windows ignores alpha unless the format is 8-bit ARGB + if ( rmask == 0x00FF0000 && gmask == 0x0000FF00 && bmask == 0x000000FF ) { - amask = 0xFF000000; - ashift = 24; + amask = desc.amask; } } else if ( bpp == 16 ) @@ -647,9 +626,22 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, rmask = 0x00FF0000; gmask = 0x0000FF00; bmask = 0x000000FF; - amask = 0xFF000000; + if (!isBmp) + amask = 0xFF000000; + } - ashift = 24; + if (amask == 0xFF000000) + { + image->SetAlpha(); + alpha = image->GetAlpha(); + if (!alpha) + { + if (verbose) + { + wxLogError(_("BMP: Couldn't allocate memory.")); + } + return false; + } } // Determine shift counts and move masks to low byte, @@ -690,7 +682,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, int linesize = ((width * bpp + 31) / 32) * 4; // flag used to detect fully transparent alpha channels, as - // Windows behavior for ICO is to ignore alpha in that case + // the alpha will be discarded in that case bool hasNonTransparentAlpha = false; for ( int row = 0; row < height; row++ ) @@ -941,7 +933,6 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } else { - unsigned char temp; wxUint32 aDword; if ( !stream.ReadAll(&aDword, 4) ) return false; @@ -953,7 +944,7 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, ptr[poffset + 2] = UpscaleTo8Bits(aDword >> bshift, bbits); if ( alpha ) { - temp = (unsigned char)((aDword & amask) >> ashift); + wxUint8 temp = aDword >> 24; alpha[line * width + column] = temp; if (temp != wxALPHA_TRANSPARENT) @@ -972,9 +963,9 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, image->SetMask(false); - if (alpha && !isBmp && !hasNonTransparentAlpha) + if (alpha && !hasNonTransparentAlpha) { - // alpha is ignored for ICO if it is all zeros + // discard alpha if it is all zeros image->ClearAlpha(); } @@ -1023,6 +1014,7 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, const bool usesV1 = hdrSize == 12; BMPDesc desc; + desc.amask = 0; if ( usesV1 ) { wxInt16 buf[2]; @@ -1122,6 +1114,7 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, bool m_valid; } res; + int hdrBytesRead = 0; if ( usesV1 ) { // The only possible format is BI_RGB and colours count is not used. @@ -1197,12 +1190,12 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, // // Note: hardcode its size as struct BITMAPINFOHEADER is not defined on // non-MSW platforms. - wxInt32 hdrBytesRead = 40 /* sizeof(BITMAPINFOHEADER) */; + hdrBytesRead = 40 /* sizeof(BITMAPINFOHEADER) */; if ( desc.comp == BI_BITFIELDS ) { // Read the mask values from the header. - if ( !stream.ReadAll(dbuf, 4 * 3) ) + if ( !stream.ReadAll(dbuf, hdrSize >= 56 ? 4 * 4 : 4 * 3) ) return false; hdrBytesRead += 4 * 3; @@ -1211,9 +1204,11 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, desc.gmask = wxINT32_SWAP_ON_BE(dbuf[1]); desc.bmask = wxINT32_SWAP_ON_BE(dbuf[2]); - // There will also be an alpha mask if (and only if) the header is - // V4 or V5, so we mustn't try to read it if we don't have one of - // those. But it's not used anywhere in any case. + if (hdrSize >= 56) + { + hdrBytesRead += 4; + desc.amask = wxINT32_SWAP_ON_BE(dbuf[3]); + } } // Now that we've read everything we needed from the header, advance @@ -1227,11 +1222,8 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, // We must have read the header entirely by now and we also read the 14 // bytes preceding it: "BM" signature and 3 other DWORDs. - wxFileOffset bytesRead = 14 + hdrSize; - - // We might have read colour masks. - if ( desc.comp == BI_BITFIELDS ) - bytesRead += 12; + // And possibly component masks. + wxFileOffset bytesRead = 14 + wxMax(hdrSize, hdrBytesRead); // We must have a palette for 1bpp, 4bpp and 8bpp bitmaps. if (desc.ncolors == 0 && desc.bpp < 16) @@ -1293,6 +1285,7 @@ bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, descMask.bpp = 1; descMask.ncolors = 2; descMask.comp = BI_RGB; + descMask.amask = 0; //there is no palette, so we will create one wxImage mask; diff --git a/tests/Makefile.in b/tests/Makefile.in index ec87315296c3..c9afc6542614 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -578,7 +578,7 @@ data-image-sample: data-images: @mkdir -p image - @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rgb32-7187.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ + @for f in bitfields.bmp bitfields-alpha.bmp 8bpp-colorsused-large.bmp 8bpp-colorsused-negative.bmp 32bpp_rgb.bmp 32bpp_rgb.ico 32bpp_rgb_a0.ico badrle4.bmp rgb16-3103.bmp rgb32-7187.bmp rgb32bf.bmp rgba32.bmp rle4-delta-320x240.bmp rle8-delta-320x240.bmp rle8-delta-320x240-expected.bmp horse_grey.bmp horse_grey_flipped.bmp horse_rle4.bmp horse_rle4_flipped.bmp horse_rle8.bmp horse_rle8_flipped.bmp horse_bicubic_50x50.png horse_bicubic_100x100.png horse_bicubic_150x150.png horse_bicubic_300x300.png horse_bilinear_50x50.png horse_bilinear_100x100.png horse_bilinear_150x150.png horse_bilinear_300x300.png horse_box_average_50x50.png horse_box_average_100x100.png horse_box_average_150x150.png horse_box_average_300x300.png cross_bicubic_256x256.png cross_bilinear_256x256.png cross_box_average_256x256.png cross_nearest_neighb_256x256.png paste_input_background.png paste_input_black.png paste_input_overlay_transparent_border_opaque_square.png paste_input_overlay_transparent_border_semitransparent_circle.png paste_input_overlay_transparent_border_semitransparent_square.png paste_result_background_plus_circle_plus_square.png paste_result_background_plus_overlay_transparent_border_opaque_square.png paste_result_background_plus_overlay_transparent_border_semitransparent_square.png paste_result_no_background_square_over_circle.png wx.png toucan.png toucan_hue_0.538.png toucan_sat_-0.41.png toucan_bright_-0.259.png toucan_hsv_0.538_-0.41_-0.259.png toucan_light_46.png toucan_dis_240.png toucan_grey.png toucan_mono_255_255_255.png width-times-height-overflow.bmp width_height_32_bit_overflow.pgm bad_truncated.gif; do \ if test ! -f image/$$f -a ! -d image/$$f ; \ then x=yep ; \ else x=`find $(srcdir)/image/$$f -newer image/$$f -print` ; \ diff --git a/tests/image/image.cpp b/tests/image/image.cpp index abfe06d4e2a6..9fc25efa9c5d 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1634,6 +1634,13 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") // alpha is ignored for ICO if it is fully transparent REQUIRE(image.LoadFile("image/32bpp_rgb_a0.ico", wxBITMAP_TYPE_ICO)); REQUIRE_FALSE(image.GetAlpha()); + + REQUIRE(image.LoadFile("image/rgb32bf.bmp", wxBITMAP_TYPE_BMP)); + REQUIRE_FALSE(image.GetAlpha()); + REQUIRE(image.LoadFile("image/rgba32.bmp", wxBITMAP_TYPE_BMP)); + alpha = image.GetAlpha(); + REQUIRE(alpha); + REQUIRE(alpha[0] == 0x80); } } diff --git a/tests/image/rgb32bf.bmp b/tests/image/rgb32bf.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ef5f9bde7d8197e0926743c455aab897a45090b1 GIT binary patch literal 1218 zcmeH^!3}^Q5CqR?0mce^S_gl7y4tKu)H(5C!ZttxVSp?!2}jzG$=;S2H&|eX!B!iY z{o7~xYqweHWEU$z=7iwnrb0TxD;$w2M`Ybo>fTU&oIk6{=KOO7?{bB7gjYBsQ;x{G Jr_{Wa`aGS>`KAB> literal 0 HcmV?d00001 diff --git a/tests/image/rgba32.bmp b/tests/image/rgba32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..da54b26062b3240e6cc10b2093ae3d528d591de0 GIT binary patch literal 1274 zcmZ?r{l&rn230^Z2Z)7$SOAC_859_pfph~@9>_!j{}~t{2qgC3$vvnTNs>tBKcER% z@L! Date: Sat, 22 Feb 2025 15:10:03 -0800 Subject: [PATCH 340/416] Fix BMP test under Wine Apparently Wine does not handle BMP exactly like Windows (cherry picked from commit 4d5fbf5afa276ebec0fed95c8feb5d6ec485622d) --- tests/image/image.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 9fc25efa9c5d..f69cbe66c6d7 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1399,7 +1399,8 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMPLoadMethod", "[image][bmp]") CompareBMPImageLoad("image/horse_grey.bmp"); CompareBMPImageLoad("image/horse_rle8.bmp"); CompareBMPImageLoad("image/horse_rle4.bmp"); - CompareBMPImageLoad("image/rgb16-3103.bmp"); + if (!wxIsRunningUnderWine()) + CompareBMPImageLoad("image/rgb16-3103.bmp"); CompareBMPImageLoad("image/rgb32-7187.bmp"); CompareBMPImageLoad("image/rle8-delta-320x240.bmp", wxIMAGE_HAVE_DELTA_RLE_BITMAP); From 94462af4093c4692ddc7b8653a8c2cbb880e9113 Mon Sep 17 00:00:00 2001 From: MarkLee131 Date: Mon, 11 May 2026 01:54:54 +0800 Subject: [PATCH 341/416] Avoid out-of-bounds palette read in 8bpp BMP decoder The non-RLE 8bpp branch at imagbmp.cpp:903, plus the RLE absolute and RLE encoded branches a few lines above, all index cmap[aByte] without checking aByte against the palette colour count. A BMP that pairs a small palette with a colour-index byte >= ncolors reads past the palette and the value flows into the decoded pixel. Reject the file (return false) at each site, matching the surrounding "return false on malformed input" pattern. See #26438, #26439. (cherry picked from commit b305cb4e4de77fb37807aa89e02643c4b0240d8f) --- docs/changes.txt | 1 + src/common/imagbmp.cpp | 6 ++++++ tests/image/image.cpp | 20 ++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index b1ccb4d7e9e3..5f062ff1c8ef 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -266,6 +266,7 @@ All (GUI): - Correct loading of `BI_BITFIELDS` bitmaps (Brian Nixon, #23601). - Fix loading 32bpp BMP files without valid alpha (#24219). - Fix buffer overwrite when loading malformed BMPs with invalid RLE data. +- Avoid out-of-bounds palette read in 8bpp BMP decoder (MarkLee131, #26438). wxGTK: diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 8a4546560941..d9b79a8529de 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -872,6 +872,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, aByte = stream.GetC(); if ( !stream.IsOk() ) return false; + if ( aByte >= ncolors ) + return false; ptr[poffset ] = cmap[aByte].r; ptr[poffset + 1] = cmap[aByte].g; ptr[poffset + 2] = cmap[aByte].b; @@ -888,6 +890,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, else { // encoded mode (repeat aByte first times) + if ( aByte >= ncolors ) + return false; for ( int l = 0; l < first && column < width; l++ ) { ptr[poffset ] = cmap[aByte].r; @@ -899,6 +903,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, } else { + if ( aByte >= ncolors ) + return false; ptr[poffset ] = cmap[aByte].r; ptr[poffset + 1] = cmap[aByte].g; ptr[poffset + 2] = cmap[aByte].b; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index f69cbe66c6d7..183d88b3ad02 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1620,6 +1620,26 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") LoadMalformedImage("image/badrle4.bmp", wxBITMAP_TYPE_BMP); LoadMalformedImage("image/width-times-height-overflow.bmp", wxBITMAP_TYPE_BMP); } + SECTION("8bpp colour index past end of palette") + { + // An 8bpp BMP whose pixel stream contains a colour index larger + // than the palette colour count. Used to read past the palette + // buffer in the decode loops. + static const unsigned char data[] = + { + 0x42,0x4d,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00, + 0x00,0x00,0x28,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x42,0x4d,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x01,0x00,0x00, + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_BMP) ); + } wxImage image; SECTION("32bpp alpha") { From ca1c3f756714b6004f1cd10f911098b30de48361 Mon Sep 17 00:00:00 2001 From: MarkLee131 Date: Mon, 11 May 2026 01:55:38 +0800 Subject: [PATCH 342/416] Avoid out-of-bounds line-buffer read in wxPCXHandler::LoadFile The PCX header's width and bytesperline are independent fields, never cross-validated. A header with width > bytesperline produces a small per-line buffer p and then reads p[i] for i < width past the buffer end (the 24-bit branch additionally reads p[i + 2 * bytesperline]). Reject the file when width exceeds bytesperline, or when either is non-positive. See #26441, #26443. (cherry picked from commit edae38f44a22bd7a37339bbfdadbb408db08c796) --- docs/changes.txt | 1 + src/common/imagpcx.cpp | 7 +++++++ tests/image/image.cpp | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 5f062ff1c8ef..8d1eaf8158e4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -267,6 +267,7 @@ All (GUI): - Fix loading 32bpp BMP files without valid alpha (#24219). - Fix buffer overwrite when loading malformed BMPs with invalid RLE data. - Avoid out-of-bounds palette read in 8bpp BMP decoder (MarkLee131, #26438). +- Avoid out-of-bounds read in wxPCXHandler (MarkLee131, #26441). wxGTK: diff --git a/src/common/imagpcx.cpp b/src/common/imagpcx.cpp index 4bab4b637553..436a95768179 100644 --- a/src/common/imagpcx.cpp +++ b/src/common/imagpcx.cpp @@ -199,6 +199,13 @@ int ReadPCX(wxImage *image, wxInputStream& stream) else return wxPCX_INVFORMAT; + // Sanity-check the dimensions. The decode loops below read width + // bytes per plane out of a buffer sized bytesperline * nplanes, and + // for 24-bit images additionally read p[i + 2 * bytesperline], so + // bytesperline must not be smaller than width. + if (width <= 0 || height <= 0 || bytesperline <= 0 || width > bytesperline) + return wxPCX_INVFORMAT; + // If the image is of type wxPCX_8BIT, then there is // a palette at the end of the image data. If we were // working with a file, we could seek at the end to the diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 183d88b3ad02..e7b96279c9e3 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1258,6 +1258,34 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIF", "[image][gif][error]") #endif // wxUSE_GIF +#if wxUSE_PCX + +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadPCX", "[image][pcx][error]") +{ + // A PCX header where width (read from xmin/xmax) exceeds + // bytesperline*nplanes (the per-line buffer size). The decode loop + // used to read past the buffer end. + static const unsigned char data[] = + { + 0x0a,0x05,0x01,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x48,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x02,0x00,0x01,0x00,0x00,0x0a,0x97,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0a,0x97,0x00,0x00,0x00,0x04,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc1,0x00,0x00, + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_PCX) ); +} + +#endif // wxUSE_PCX + TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") { /* From 1a488980a8b038b583ff34040785137d1c4a6bef Mon Sep 17 00:00:00 2001 From: MarkLee131 Date: Mon, 11 May 2026 01:52:55 +0800 Subject: [PATCH 343/416] Avoid out-of-bounds read in wxXPMDecoder::ReadFile on unterminated comment When the inner loop scanning for the '*/' that closes a '/*' comment exits because *q == '\0' (no closing marker before end-of-buffer), the subsequent strlen(q + 2) reads past the allocated wxCharBuffer. Bail out of the outer loop in that case. See #26442, #26444. (cherry picked from commit f4296791320ac13ba2ddf1e6db91ab3e8b7b0285) --- docs/changes.txt | 1 + src/common/xpmdecod.cpp | 5 +++++ tests/image/image.cpp | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 8d1eaf8158e4..b24e5445ca6b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -268,6 +268,7 @@ All (GUI): - Fix buffer overwrite when loading malformed BMPs with invalid RLE data. - Avoid out-of-bounds palette read in 8bpp BMP decoder (MarkLee131, #26438). - Avoid out-of-bounds read in wxPCXHandler (MarkLee131, #26441). +- Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). wxGTK: diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index 9d3f83e29dca..d9b19430a89d 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -168,6 +168,11 @@ wxImage wxXPMDecoder::ReadFile(wxInputStream& stream) break; } + // unterminated /*-comment: stop processing rather than reading past + // the end of the buffer in strlen() below. + if (*q == '\0') + break; + // memmove allows overlaps (unlike strcpy): size_t cpylen = strlen(q + 2) + 1; memmove(p, q + 2, cpylen); diff --git a/tests/image/image.cpp b/tests/image/image.cpp index e7b96279c9e3..3a00ee9a9c23 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1286,6 +1286,29 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadPCX", "[image][pcx][error]") #endif // wxUSE_PCX +#if wxUSE_XPM + +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPM", "[image][xpm][error]") +{ + // An XPM-like payload that opens a /* comment without ever closing + // it. The comment-stripping loop used to call strlen() past the end + // of the wxCharBuffer once it ran off the end without finding '*/'. + static const unsigned char data[] = + { + 0x2f,0x2a,0x20,0xa8,0xaf,0xb2,0xdf,0xd5,0xd0,0xdf,0xce,0x2f, + 0x0a,0x74,0x61,0x74,0x69,0x63,0x20,0x63,0x68,0x61,0x74,0x5b, + 0x5d,0x3d,0x7b,0x7b,0x0a,0x20,0x31,0x20,0x31,0x20,0x31,0x22, + 0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x61,0x22,0x61,0x22,0x7d,0x3b, + 0x0a, + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); +} + +#endif // wxUSE_XPM + TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") { /* From e9c086f8acfb49153e33aa2037d0cc45feef054a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 15 Oct 2022 20:37:40 +0200 Subject: [PATCH 344/416] Avoid another warning triggered by the last warning workaround Initialize a variable to avoid -Wmaybe-uninitialized triggered by using wxUnusedVar() with it now. (cherry picked from commit f2cfcd3d2faaedfbae9b4ed7de866a15d24c4a3f) --- tests/strings/vararg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/strings/vararg.cpp b/tests/strings/vararg.cpp index 6da082fde9dc..b91917c46f0c 100644 --- a/tests/strings/vararg.cpp +++ b/tests/strings/vararg.cpp @@ -199,7 +199,7 @@ TEST_CASE("ArgsValidation", "[wxString][vararg][error]") { int written; void *ptr = &written; - short int swritten; + short int swritten = 0; wxUnusedVar(swritten); // We're not really going to use it. // these are valid: From 5c6413d412271a7d079c680d8906be622e969357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Fri, 15 May 2026 16:35:34 +0200 Subject: [PATCH 345/416] wxGTK: Fix wxTextCtrl crash with GSpell attached The logic in wxTextCtrl::DoFreeze() for deleting leaked anonymous marks when detaching the buffer kept raw pointers to GtkTextMark objects without managing their reference count. This worked for the specific internal mark targeted by this code, but broke with other marks that may have become invalid in the meantime. Specifically, GSpell uses such marks internally too, causing a use-after-free crash. Fixed by ref-counting the objects kept in m_anonymousMarkList. See #26464. (cherry picked from commit 7a7ab636e36cd01540c038bef2430ffcfa048681) --- docs/changes.txt | 1 + src/gtk/textctrl.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index b24e5445ca6b..b27dcb53c4b2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -274,6 +274,7 @@ wxGTK: - Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). - Fix crash with EGL-based wxGLCanvas in wxNotebook (Florian Larysch, #26340). +- Fix possible wxTextCtrl crash with GSpell attached (#26464). - Fix memory leak in wxDataViewChoiceRenderer. - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). - Fix showing title bar under Wayland with wxBORDER_NONE (#26357). diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 00e7958c29ee..b82f4338948e 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -632,7 +632,7 @@ extern "C" { static void mark_set(GtkTextBuffer*, GtkTextIter*, GtkTextMark* mark, GSList** markList) { if (gtk_text_mark_get_name(mark) == NULL) - *markList = g_slist_prepend(*markList, mark); + *markList = g_slist_prepend(*markList, g_object_ref(mark)); } } @@ -708,7 +708,7 @@ wxTextCtrl::~wxTextCtrl() Thaw(); if (m_anonymousMarkList) - g_slist_free(m_anonymousMarkList); + g_slist_free_full(m_anonymousMarkList, g_object_unref); if (m_afterLayoutId) g_source_remove(m_afterLayoutId); } @@ -2228,7 +2228,7 @@ void wxTextCtrl::DoFreeze() if (GTK_IS_TEXT_MARK(mark) && !gtk_text_mark_get_deleted(mark)) gtk_text_buffer_delete_mark(m_buffer, mark); } - g_slist_free(m_anonymousMarkList); + g_slist_free_full(m_anonymousMarkList, g_object_unref); m_anonymousMarkList = NULL; } } From 1eb48abb92cb2921a18427e13bfa2cf14ea4cc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Fri, 15 May 2026 16:25:20 +0200 Subject: [PATCH 346/416] Update Poedit links Update links to Poedit in the docs, plus adjacent things things such as the name or current path to xgettext. See #26465. (cherry picked from commit 63331c31f4f04ab2ce4d255fd4d1753d143ca83a) --- docs/contributing/translators-guide.md | 4 ++-- docs/doxygen/mainpages/translations.h | 2 +- docs/doxygen/overviews/internationalization.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/contributing/translators-guide.md b/docs/contributing/translators-guide.md index d48e0d66f718..4d29dc61e180 100644 --- a/docs/contributing/translators-guide.md +++ b/docs/contributing/translators-guide.md @@ -10,8 +10,8 @@ First of all, here is what you will need: - For Unix systems you can download gettext-0.xx.yy.tar.gz from any GNU mirror (RPMs and DEBs are also available from the usual places) - For Windows you can download the precompiled binaries from - www.wxwidgets.org or install [Poedit](https://poedit.net/) and add - `/poEdit/bin` to your path (so it can find xgettext). + www.wxwidgets.org or install [Poedit](https://poedit.com/) and add + `/Poedit/GettextTools/bin` to your path (so it can find xgettext). 2. A way to run a program recursively on an entire directory from the command line: diff --git a/docs/doxygen/mainpages/translations.h b/docs/doxygen/mainpages/translations.h index f4d7aad76607..8d23f8aa8c12 100644 --- a/docs/doxygen/mainpages/translations.h +++ b/docs/doxygen/mainpages/translations.h @@ -459,7 +459,7 @@ Here are the steps you should follow: for your language. Initialization can be also done using e.g. Poedit (see next item). -# Translate the strings in this file using either your favourite text editor or a specialized tool such as Vaclav Slavik's excellent - poEdit utility. + Poedit utility. -# Verify that your translations can at least be compiled (even if they are yet incomplete) by running msgfmt -vc XY.po command: please note that you must use the -c option. In diff --git a/docs/doxygen/overviews/internationalization.h b/docs/doxygen/overviews/internationalization.h index 1994f64b14c6..4c3837858978 100644 --- a/docs/doxygen/overviews/internationalization.h +++ b/docs/doxygen/overviews/internationalization.h @@ -26,7 +26,7 @@ The wxWidgets approach to i18n closely follows the GNU gettext package. wxWidgets uses the message catalogs which are binary compatible with gettext catalogs and this allows to use all of the programs in this package to work with them as well as using any of the tools working with message catalogs in -this format such as Poedit. +this format such as Poedit. Because of this, you will need to use the gettext package to work with the translations during the program development. However no additional libraries From 191768e30b763c3efd994af0c7f1f5cac48637f9 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 15 May 2026 23:43:53 +0200 Subject: [PATCH 347/416] Fix computing wait end time in pthreads wxCondition implementation The old code didn't work for the dates after 2038 due to the use of GetLo() which discarded the high part of 64 bit time value. Simply stop doing it to fix the bug both for wxCondition and for wxSemaphore which uses it internally. See #26466. (cherry picked from commit 24e72ef30e87377c1ec7158f11f79b58dcbb3b61) --- docs/changes.txt | 1 + src/unix/threadpsx.cpp | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index b27dcb53c4b2..e7bc72ccaf92 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -258,6 +258,7 @@ Changes in behaviour which may result in build errors All: - Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307). +- Fix wxCondition and wxSemaphore::WaitTimeout() after 2038 under Unix (#26466). All (GUI): diff --git a/src/unix/threadpsx.cpp b/src/unix/threadpsx.cpp index 7f920f76e211..cd8c9d641e53 100644 --- a/src/unix/threadpsx.cpp +++ b/src/unix/threadpsx.cpp @@ -518,13 +518,10 @@ wxCondError wxConditionInternal::Wait() wxCondError wxConditionInternal::WaitTimeout(unsigned long milliseconds) { - wxLongLong curtime = wxGetUTCTimeMillis(); + wxLongLong_t curtime = wxGetUTCTimeMillis().GetValue(); curtime += milliseconds; - wxLongLong temp = curtime / 1000; - int sec = temp.GetLo(); - temp *= 1000; - temp = curtime - temp; - int millis = temp.GetLo(); + const wxLongLong_t sec = curtime / 1000; + const int millis = curtime - sec * 1000; timespec tspec; From bfdfaa0b8b799ce434f426996b77085f5ebde8d5 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Tue, 12 May 2026 21:44:02 -0700 Subject: [PATCH 348/416] Make GTK3 dashed line appearance similar to MSW Scale the segment lengths to the pen width properly, and match the MSW lengths. Apparently MSW doesn't have a long dash, so use twice the short dash for that. See #26449. (cherry picked from commit ec0149a9320549efd41e02c24a1b744b217d04f1) --- docs/changes.txt | 1 + src/generic/graphicc.cpp | 81 ++++++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index e7bc72ccaf92..918d96d8c9ac 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -280,6 +280,7 @@ wxGTK: - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). - Fix showing title bar under Wayland with wxBORDER_NONE (#26357). - Remove wrong maximum text length limitation in "picker" controls (#26314). +- Fix appearance of dashed lines drawn by wxDC::DrawLine() (#26449). wxMSW: diff --git a/src/generic/graphicc.cpp b/src/generic/graphicc.cpp index f117b285a250..244233027298 100644 --- a/src/generic/graphicc.cpp +++ b/src/generic/graphicc.cpp @@ -310,8 +310,7 @@ private : cairo_line_join_t m_join; int m_count; - const double *m_lengths; - double *m_userLengths; + double* m_lengths; wxDECLARE_NO_COPY_CLASS(wxCairoPenData); }; @@ -837,14 +836,13 @@ wxCairoPenBrushBaseData::CreateRadialGradientPattern(wxDouble startX, wxDouble s wxCairoPenData::~wxCairoPenData() { - delete[] m_userLengths; + delete[] m_lengths; } void wxCairoPenData::Init() { m_pattern = NULL; m_lengths = NULL; - m_userLengths = NULL; m_width = 0; m_count = 0; } @@ -893,24 +891,6 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxGraphicsPe break; } - const double dashUnit = m_width < 1.0 ? 1.0 : m_width; - const double dotted[] = - { - dashUnit , dashUnit + 2.0 - }; - static const double short_dashed[] = - { - 9.0 , 6.0 - }; - static const double dashed[] = - { - 19.0 , 9.0 - }; - static const double dotted_dashed[] = - { - 9.0 , 6.0 , 3.0 , 3.0 - }; - switch ( info.GetStyle() ) { case wxPENSTYLE_SOLID : @@ -936,25 +916,33 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxGraphicsPe break; case wxPENSTYLE_DOT : - m_count = WXSIZEOF(dotted); - m_userLengths = new double[ m_count ] ; - memcpy( m_userLengths, dotted, sizeof(dotted) ); - m_lengths = m_userLengths; + m_count = 2; + m_lengths = new double[m_count]; + m_lengths[0] = 1; + m_lengths[1] = 1; break; case wxPENSTYLE_LONG_DASH : - m_lengths = dashed ; - m_count = WXSIZEOF(dashed); + m_count = 2; + m_lengths = new double[m_count]; + m_lengths[0] = 6; + m_lengths[1] = 1; break; case wxPENSTYLE_SHORT_DASH : - m_lengths = short_dashed ; - m_count = WXSIZEOF(short_dashed); + m_count = 2; + m_lengths = new double[m_count]; + m_lengths[0] = 3; + m_lengths[1] = 1; break; case wxPENSTYLE_DOT_DASH : - m_lengths = dotted_dashed ; - m_count = WXSIZEOF(dotted_dashed); + m_count = 4; + m_lengths = new double[m_count]; + m_lengths[0] = 1; + m_lengths[1] = 1; + m_lengths[2] = 3; + m_lengths[3] = 1; break; case wxPENSTYLE_USER_DASH : @@ -963,18 +951,12 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxGraphicsPe m_count = info.GetDashes( &wxdashes ) ; if ((wxdashes != NULL) && (m_count > 0)) { - m_userLengths = new double[m_count] ; + m_lengths = new double[m_count]; for ( int i = 0 ; i < m_count ; ++i ) { - m_userLengths[i] = wxdashes[i] * dashUnit ; - - if ( i % 2 == 1 && m_userLengths[i] < dashUnit + 2.0 ) - m_userLengths[i] = dashUnit + 2.0 ; - else if ( i % 2 == 0 && m_userLengths[i] < dashUnit ) - m_userLengths[i] = dashUnit ; + m_lengths[i] = wxdashes[i]; } } - m_lengths = m_userLengths ; } break; @@ -998,6 +980,19 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxGraphicsPe break; } + const double dashUnit = wxMax(m_width, 1.0); + for (int i = 0; i < m_count; i++) + { + if (m_cap != CAIRO_LINE_CAP_BUTT) + { + // Rounded/projecting cap will extend 0.5 on either side of "on" segment, + // increase "off" length, decrease "on" to account for this. + // Note that 0-length "on" is valid. + m_lengths[i] += (i & 1) ? 1 : -1; + } + m_lengths[i] *= dashUnit; + } + switch ( info.GetGradientType() ) { case wxGRADIENT_NONE: @@ -1039,7 +1034,11 @@ void wxCairoPenData::Apply( wxGraphicsContext* context ) cairo_set_line_width(ctext, width); cairo_set_line_cap(ctext,m_cap); cairo_set_line_join(ctext,m_join); - cairo_set_dash(ctext, m_lengths, m_count, 0); + + double dashOffset = 0; + if (m_count && m_cap == CAIRO_LINE_CAP_BUTT && context->ShouldOffset()) + dashOffset = 0.5; + cairo_set_dash(ctext, m_lengths, m_count, dashOffset); } //----------------------------------------------------------------------------- From 268d8d5beec1b5ea2614a48270d519e9f80f4e3a Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 13 May 2026 14:19:21 -0700 Subject: [PATCH 349/416] Make GTK2 dashed line appearance similar to MSW See #26449. (cherry picked from commit c968631837d74af60a8c454d2253d8f0b550949c) --- src/gtk/dcclient.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index bb65558b453f..07dad6aa5238 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -1581,9 +1581,9 @@ void wxWindowDCImpl::SetPen( const wxPen &pen ) } static const wxDash dotted[] = {1, 1}; - static const wxDash short_dashed[] = {2, 2}; - static const wxDash wxCoord_dashed[] = {2, 4}; - static const wxDash dotted_dashed[] = {3, 3, 1, 3}; + static const wxDash short_dashed[] = { 3, 1 }; + static const wxDash long_dashed[] = { 6, 1 }; + static const wxDash dotted_dashed[] = { 3, 1, 1, 1 }; // We express dash pattern in pen width unit, so we are // independent of zoom factor and so on... @@ -1603,7 +1603,7 @@ void wxWindowDCImpl::SetPen( const wxPen &pen ) break; case wxPENSTYLE_LONG_DASH: req_nb_dash = 2; - req_dash = wxCoord_dashed; + req_dash = long_dashed; break; case wxPENSTYLE_SHORT_DASH: req_nb_dash = 2; @@ -1630,8 +1630,17 @@ void wxWindowDCImpl::SetPen( const wxPen &pen ) wxScopedArray real_req_dash(req_nb_dash); if (real_req_dash) { + const bool isCapButt = m_pen.GetCap() == wxCAP_BUTT; for (int i = 0; i < req_nb_dash; i++) - real_req_dash[i] = req_dash[i] * width; + { + wxDash dash = req_dash[i]; + if ((i & 1) && !isCapButt) + { + // the caps intrude into "off" length by 0.5 at each end + dash++; + } + real_req_dash[i] = dash * width; + } gdk_gc_set_dashes( m_penGC, 0, real_req_dash.get(), req_nb_dash ); } else @@ -1648,7 +1657,7 @@ void wxWindowDCImpl::SetPen( const wxPen &pen ) case wxCAP_BUTT: { capStyle = GDK_CAP_BUTT; break; } case wxCAP_ROUND: default: - if (width <= 1) + if (width <= 1 && lineStyle == GDK_LINE_SOLID) { width = 0; capStyle = GDK_CAP_NOT_LAST; From 3b2774a614763c6df066b81fc6597e68e9cd6d1d Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Tue, 19 May 2026 11:29:58 -0700 Subject: [PATCH 350/416] Fix non-resizable TLW size on GTK when client size is set to initial size See #26480. (cherry picked from commit af199c40f9511663f2ae6b1dff6bda296c356c5e) --- docs/changes.txt | 1 + src/gtk/toplevel.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 918d96d8c9ac..b542ff46bfe4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -281,6 +281,7 @@ wxGTK: - Fix showing title bar under Wayland with wxBORDER_NONE (#26357). - Remove wrong maximum text length limitation in "picker" controls (#26314). - Fix appearance of dashed lines drawn by wxDC::DrawLine() (#26449). +- Fix non-resizable TLW size when client size is set to initial size (#26480). wxMSW: diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index b82803820533..2dcb7663ba27 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -1362,6 +1362,8 @@ void wxTopLevelWindowGTK::DoSetClientSize(int width, int height) if (m_wxwindow) { + DoGetClientSize(&width, &height); + // If window is not resizable or not yet shown, set size request on // client widget, to make it more likely window will get correct size // even if our decorations size cache is incorrect (as it will be before @@ -1369,11 +1371,11 @@ void wxTopLevelWindowGTK::DoSetClientSize(int width, int height) if (!gtk_window_get_resizable(GTK_WINDOW(m_widget))) { gtk_widget_set_size_request(m_widget, -1, -1); - gtk_widget_set_size_request(m_wxwindow, m_clientWidth, m_clientHeight); + gtk_widget_set_size_request(m_wxwindow, width, height); } else if (!IsShown()) { - gtk_widget_set_size_request(m_wxwindow, m_clientWidth, m_clientHeight); + gtk_widget_set_size_request(m_wxwindow, width, height); // Cancel size request at next idle to allow resizing g_idle_add_full(G_PRIORITY_LOW - 1, reset_size_request, m_wxwindow, NULL); g_object_ref(m_wxwindow); From fb9fc75925e8ac3c8b98d9dcf3a486ab53702792 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Wed, 20 May 2026 07:32:36 +0200 Subject: [PATCH 351/416] OSX 10.10 compatibility for compositing operators * Add defines for macOS < 10.12 in private header See #26472, #26476. (cherry picked from commit e15db260b28951bee492307961c7690d60fa443f) --- include/wx/osx/core/private.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/wx/osx/core/private.h b/include/wx/osx/core/private.h index 8f5e833b87c0..2c9acaf7576d 100644 --- a/include/wx/osx/core/private.h +++ b/include/wx/osx/core/private.h @@ -71,6 +71,24 @@ WXDLLIMPEXP_BASE CFURLRef wxOSXCreateURLFromFileSystemPath( const wxString& path #if !wxOSX_USE_IPHONE #include + +#if __MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12 + #define NSCompositingOperationClear NSCompositeClear + #define NSCompositingOperationCopy NSCompositeCopy + #define NSCompositingOperationSourceOver NSCompositeSourceOver + #define NSCompositingOperationSourceIn NSCompositeSourceIn + #define NSCompositingOperationSourceOut NSCompositeSourceOut + #define NSCompositingOperationSourceAtop NSCompositeSourceAtop + #define NSCompositingOperationDestinationOver NSCompositeDestinationOver + #define NSCompositingOperationDestinationIn NSCompositeDestinationIn + #define NSCompositingOperationDestinationOut NSCompositeDestinationOut + #define NSCompositingOperationDestinationAtop NSCompositeDestinationAtop + #define NSCompositingOperationExclusion NSCompositeExclusion + #define NSCompositingOperationPlusLighter NSCompositePlusLighter + #define NSCompositingOperationDifference NSCompositeDifference + #define NSCompositingOperationSourceOver NSCompositeSourceOver +#endif + #endif #include "wx/bmpbndl.h" From 0022c8ef919231f49f85e6074e73b0f750e345f2 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 21 May 2026 22:40:25 +0200 Subject: [PATCH 352/416] Avoid out-of-bounds palette write in wxIFFDecoder::ConvertToImage() See #26440. (cherry picked from commit d4188f68378ddb275257d765f9b6b765a893751e) --- docs/changes.txt | 1 + src/common/imagiff.cpp | 3 +++ tests/image/image.cpp | 26 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index b542ff46bfe4..91294afe3807 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -268,6 +268,7 @@ All (GUI): - Fix loading 32bpp BMP files without valid alpha (#24219). - Fix buffer overwrite when loading malformed BMPs with invalid RLE data. - Avoid out-of-bounds palette read in 8bpp BMP decoder (MarkLee131, #26438). +- Avoid out-of-bounds palette write in wxIFFDecoder (MarkLee131, #26440). - Avoid out-of-bounds read in wxPCXHandler (MarkLee131, #26441). - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). diff --git a/src/common/imagiff.cpp b/src/common/imagiff.cpp index 9cac7d73438e..193e84cbdccb 100644 --- a/src/common/imagiff.cpp +++ b/src/common/imagiff.cpp @@ -148,6 +148,9 @@ bool wxIFFDecoder::ConvertToImage(wxImage *image) const // set transparent colour mask if (transparent != -1) { + if (transparent < 0 || transparent >= colors) + return false; + for (i = 0; i < colors; i++) { if ((pal[3 * i + 0] == 255) && diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 3a00ee9a9c23..f37ba4f5dade 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1309,6 +1309,32 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPM", "[image][xpm][error]") #endif // wxUSE_XPM +#if wxUSE_IFF + +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFF", "[image][iff][error]") +{ + // A FORM/ILBM file whose BMHD transparent-colour field is 0x4000 while + // the palette only has 2 entries (1 bitplane and no CMAP chunk). The + // transparent index used to be applied to the palette without a bounds + // check, writing past the end of the palette buffer; loading such a file + // must now be rejected. + static const unsigned char data[] = + { + 0x46,0x4f,0x52,0x4d,0x00,0x00,0x00,0x2e, + 0x49,0x4c,0x42,0x4d,0x42,0x4d,0x48,0x44, + 0x00,0x00,0x00,0x14,0x00,0x01,0x00,0x01, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0x00,0x01,0x00,0x01, + 0x42,0x4f,0x44,0x59,0x00,0x00,0x00,0x02, + 0x00,0x00, + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); +} + +#endif // wxUSE_IFF + TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") { /* From 38da54b4c47fe2100f80992689b5c2a63ad55001 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 3 Jul 2023 20:20:52 +0200 Subject: [PATCH 353/416] Add new test GIF image to CMake builds too This should have been done in c2e5749443 (Fix crash when reading truncated GIF image, 2023-07-02), but was forgotten there -- so do it now, and add a comment reminding not to forget it the next time. See #23409. (cherry picked from commit aa77eb91b0111fdd3bce9d0b2833e43923e93705) --- build/cmake/tests/gui/CMakeLists.txt | 1 + tests/test.bkl | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index dc721059a22d..4f4ec5a33956 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -203,6 +203,7 @@ set(TEST_GUI_DATA image/toucan_mono_255_255_255.png image/width-times-height-overflow.bmp image/width_height_32_bit_overflow.pgm + image/bad_truncated.gif intl/ja/internat.mo intl/ja/internat.po ) diff --git a/tests/test.bkl b/tests/test.bkl index 36e14286cf7f..8eb651c7830d 100644 --- a/tests/test.bkl +++ b/tests/test.bkl @@ -351,6 +351,10 @@ $(SRCDIR)/image image + bitfields.bmp bitfields-alpha.bmp From 60017126800df20f39d94c7f6fb1a8b8519bc85e Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 22 May 2026 09:34:51 +0530 Subject: [PATCH 354/416] Reject BMP RLE absolute runs that overrun the current scanline In src/common/imagbmp.cpp::LoadBMPData() the absolute-mode branches of both the BI_RLE4 (around line 763) and BI_RLE8 (around line 870) decode loops increment 'column' for each pixel without checking it against 'width'. The image buffer is sized width * height * 3 and 'poffset' is computed as line * width * 3 + column * 3, so an absolute escape with a count larger than (width - column) keeps writing through the rest of the row and into adjacent rows or past the end of the buffer entirely on the last decoded scanline. The neighbouring encoded-mode branches at lines 798 and 896 already use "&& column < width" to clamp runs to the row width, and the delta-mode branch at lines 758 and 863 rejects out-of-range row offsets, so the absolute branches are the only RLE paths left without bounds checking. Reject the file with return false when the absolute run would extend past the right edge of the current row, matching the existing "return false on malformed input" pattern in the same function. Add a regression test that loads a 4x4 8bpp RLE BMP with an absolute escape claiming 100 pixels on the first row and expects the loader to fail rather than write past the image buffer. See #26496. (cherry picked from commit d1d6605e93961e3afe5778c14f951956db55fe1e) --- docs/changes.txt | 1 + src/common/imagbmp.cpp | 14 ++++++++++++++ tests/image/image.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 91294afe3807..2a3fa2f43494 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -271,6 +271,7 @@ All (GUI): - Avoid out-of-bounds palette write in wxIFFDecoder (MarkLee131, #26440). - Avoid out-of-bounds read in wxPCXHandler (MarkLee131, #26441). - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). +- Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). wxGTK: diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index d9b79a8529de..713cfef218b4 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -762,6 +762,13 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { // absolute mode (pixels not runs) int absolute = aByte; + // RLE runs do not span scanlines; reject a + // file whose absolute run would advance past + // the right edge of the row and write into + // adjacent rows or past the end of the image + // buffer. + if ( column + absolute > width ) + return false; wxUint8 nibble[2] ; int readBytes = 0 ; for (int k = 0; k < absolute; k++) @@ -867,6 +874,13 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, { // absolute mode (pixels not runs) int absolute = aByte; + // RLE runs do not span scanlines; reject a + // file whose absolute run would advance past + // the right edge of the row and write into + // adjacent rows or past the end of the image + // buffer. + if ( column + absolute > width ) + return false; for (int k = 0; k < absolute; k++) { aByte = stream.GetC(); diff --git a/tests/image/image.cpp b/tests/image/image.cpp index f37ba4f5dade..503ca03473fa 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1717,6 +1717,33 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") wxImage img; REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_BMP) ); } + SECTION("RLE absolute run past right edge") + { + // A 4x4 8bpp RLE BMP whose absolute-mode escape claims 100 pixels + // for a 4-pixel-wide row. The decode loop used to write past the + // current scanline, overrunning the image buffer on the last row. + static const unsigned char data[] = + { + 0x42,0x4d,0xa6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00, + 0x00,0x00,0x28,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00, + 0x00,0x00,0x01,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0x00,0x64, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x01, + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_BMP) ); + } wxImage image; SECTION("32bpp alpha") { From 597c0ab32252622fb4fe641febcefcb00d734a17 Mon Sep 17 00:00:00 2001 From: jmestwa-coder Date: Fri, 22 May 2026 11:12:14 +0530 Subject: [PATCH 355/416] Validate IFF BMHD fields to prevent pixel-buffer overflow wxIFFDecoder::ReadIFF() in src/common/imagiff.cpp parses the BMHD chunk without bounding the width, height or bitplane count. The subsequent pixel buffer is allocated with m_image->p = new byte[bmhd_width * bmhd_height * 3]; using signed-int multiplication. With bmhd_width = 21849 and bmhd_height = 65535 (both legal 16-bit BMHD values) the product 4,295,622,645 overflows int and wraps down to 655,349, so only ~640 KiB is actually allocated. The BODY decode loop then writes 3 * bmhd_width bytes per row, so a BODY chunk supplying just 10 lineskips of zeros (lineskip = 2732 for this width, total 27,320 bytes) is enough to overrun the allocation. A bmhd_bitplanes or bmhd_width of zero also makes lineskip * bmhd_bitplanes zero and causes a divide-by-zero in the height computation a few lines later. Reject malformed BMHD chunks at parse time: require positive width, height and bitplane count, cap the bitplane count at 32 (the largest format the decoder handles is 24-bit ILBM), and cap bmhd_width * bmhd_height so that the product multiplied by 3 stays within INT_MAX. This makes the existing int-typed buffer size computation safe and keeps the patch local to the BMHD parsing branch. A unit test in tests/image/image.cpp builds the malformed IFF described above in memory, registers the IFF handler and asserts that LoadFile() rejects it; without the fix the test triggers a heap-buffer-overflow during BODY decoding. See #26497. (cherry picked from commit d22a91e95268d2748fcf6656d70158f2c43ae234) --- docs/changes.txt | 1 + src/common/imagiff.cpp | 18 +++++++++++ tests/image/image.cpp | 68 +++++++++++++++++++++++++----------------- 3 files changed, 60 insertions(+), 27 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 2a3fa2f43494..3b88d8db3d14 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -272,6 +272,7 @@ All (GUI): - Avoid out-of-bounds read in wxPCXHandler (MarkLee131, #26441). - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). - Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). +- Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). wxGTK: diff --git a/src/common/imagiff.cpp b/src/common/imagiff.cpp index 193e84cbdccb..1f209f4e4fc9 100644 --- a/src/common/imagiff.cpp +++ b/src/common/imagiff.cpp @@ -29,6 +29,7 @@ #include "wx/palette.h" #endif // wxUSE_PALETTE +#include // for INT_MAX #include #include @@ -404,6 +405,23 @@ int wxIFFDecoder::ReadIFF() // bmhd_masking = *(dataptr + 8 + 9); -- unused currently bmhd_compression = *(dataptr + 8 + 10); // get compression bmhd_transcol = iff_getword(dataptr + 8 + 12); + + // Reject malformed BMHD chunks: zero width/height or bitplanes + // would later cause a divide-by-zero when computing the lineskip + // and row count for the BODY chunk; oversized dimensions would + // overflow the signed-int product used to size the pixel buffer + // (new byte[bmhd_width * bmhd_height * 3] below), leaving an + // undersized allocation behind for the BODY decode loop to + // overrun. Cap bmhd_width * bmhd_height so that the same product + // multiplied by 3 stays within INT_MAX. + if (bmhd_width <= 0 || bmhd_height <= 0 + || bmhd_bitplanes <= 0 || bmhd_bitplanes > 32 + || static_cast(bmhd_width) + * static_cast(bmhd_height) + > static_cast(INT_MAX) / 3) { + break; + } + BMHDok = true; // got BMHD dataptr += 8 + chunkLen; // to next chunk } diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 503ca03473fa..485b38717472 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1333,6 +1333,47 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFF", "[image][iff][error]") REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFFBmhdOverflow", + "[image][iff][error]") +{ + // BMHD width = 21849, height = 65535 gives bmhd_width * bmhd_height * 3 + // = 4 295 622 645, which overflows the 32-bit signed int product used by + // wxIFFDecoder::ReadIFF() to size the pixel buffer and wraps down to + // 655 349. The subsequent BODY decode loop writes 3 * bmhd_width bytes + // per scanline, so a BODY chunk containing 10 lineskips' worth of zeros + // (lineskip = 2732 for this width, total 27320 bytes) is enough to + // overrun the undersized heap allocation. The fix rejects the file at + // BMHD validation time. + wxImage::AddHandler(new wxIFFHandler); + + static const unsigned char header[] = + { + 0x46,0x4f,0x52,0x4d, // "FORM" + 0x00,0x00,0x6a,0xe0, // FORM length = 27360 + 0x49,0x4c,0x42,0x4d, // "ILBM" + 0x42,0x4d,0x48,0x44, // "BMHD" + 0x00,0x00,0x00,0x14, // BMHD chunk length = 20 + 0x55,0x59, // width = 21849 + 0xff,0xff, // height = 65535 + 0x00,0x00,0x00,0x00, // x, y + 0x01, // nPlanes + 0x00, // masking + 0x00, // compression (BI_RGB, uncompressed) + 0x00, // pad + 0x00,0x00, // transparentColor + 0x00,0x00, // x/y aspect + 0x00,0x00,0x00,0x00, // page width / height + 0x42,0x4f,0x44,0x59, // "BODY" + 0x00,0x00,0x6a,0xb8, // BODY chunk length = 27320 + }; + std::vector data(header, header + WXSIZEOF(header)); + data.resize(data.size() + 27320, 0); + + wxMemoryInputStream mis(data.data(), data.size()); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); +} + #endif // wxUSE_IFF TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") @@ -1717,33 +1758,6 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BMP", "[image][bmp]") wxImage img; REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_BMP) ); } - SECTION("RLE absolute run past right edge") - { - // A 4x4 8bpp RLE BMP whose absolute-mode escape claims 100 pixels - // for a 4-pixel-wide row. The decode loop used to write past the - // current scanline, overrunning the image buffer on the last row. - static const unsigned char data[] = - { - 0x42,0x4d,0xa6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00, - 0x00,0x00,0x28,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00, - 0x00,0x00,0x01,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xff,0xff,0xff,0x00,0x00,0x64, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x01, - }; - wxMemoryInputStream mis(data, WXSIZEOF(data)); - wxImage img; - REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_BMP) ); - } wxImage image; SECTION("32bpp alpha") { From 61d185f16934c38e84b798335831c07007343639 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 23 May 2026 16:35:38 +0200 Subject: [PATCH 356/416] Fix static order initialization problem in wxCSConv wxCSConv::wxCSConv() called during global variables initialization could use the yet uninitialized global gs_nameCache. Fix this in the usual way, by wrapping the global in a function to ensure that it is always initialized before being used. (cherry picked from commit d3fb6dcaddd15994cc21213d99aa350d4e259346) --- src/common/strconv.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index ec911df76350..46d2fe4e4c97 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -2927,7 +2927,11 @@ void wxCSConv::SetName(const char *charset) WX_DECLARE_HASH_MAP( wxFontEncoding, wxString, wxIntegerHash, wxIntegerEqual, wxEncodingNameCache ); -static wxEncodingNameCache gs_nameCache; +wxEncodingNameCache& GetEncodingNameCache() +{ + static wxEncodingNameCache s_nameCache; + return s_nameCache; +} #endif wxMBConv *wxCSConv::DoCreate() const @@ -2981,8 +2985,9 @@ wxMBConv *wxCSConv::DoCreate() const } #if wxUSE_FONTMAP { - const wxEncodingNameCache::iterator it = gs_nameCache.find(encoding); - if ( it != gs_nameCache.end() ) + wxEncodingNameCache& nameCache = GetEncodingNameCache(); + const wxEncodingNameCache::iterator it = nameCache.find(encoding); + if ( it != nameCache.end() ) { if ( it->second.empty() ) return NULL; @@ -3010,14 +3015,14 @@ wxMBConv *wxCSConv::DoCreate() const wxMBConv_iconv *conv = new wxMBConv_iconv(name.ToAscii()); if ( conv->IsOk() ) { - gs_nameCache[encoding] = *names; + nameCache[encoding] = *names; return conv; } delete conv; } - gs_nameCache[encoding] = wxT(""); // cache the failure + nameCache[encoding] = wxT(""); // cache the failure } } #endif // wxUSE_FONTMAP From 2d00db9e1c8b953dc7b70022f91f3266371d395a Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Sat, 23 May 2026 12:15:21 +0530 Subject: [PATCH 357/416] Reject GIF files with LZW minimum code size > 11 The minimum code size byte that follows the local colour table in wxGIFDecoder::LoadGIF() is only checked for <= 0. dgif() sizes ab_prefix/ab_tail with allocSize = 4096 + 1, so a value of 12 starts ab_free at 4098 and the first alphabet update at gifdecod.cpp:457 writes one entry past the end of both arrays. The existing wxASSERT(ab_free < allocSize) already flagged this in debug builds. The new wxImage::BadGIFLZWMinCodeSize test feeds a 37-byte 2x1 GIF with code size 12 to LoadFile and asserts it is rejected. See #26501. (cherry picked from commit 71d58842ebc709c925ef8a28821a1656d6170181) --- docs/changes.txt | 1 + src/common/gifdecod.cpp | 6 +++++- tests/image/image.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3b88d8db3d14..9b2e14c23317 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ All (GUI): - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). - Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). - Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). +- Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). wxGTK: diff --git a/src/common/gifdecod.cpp b/src/common/gifdecod.cpp index a97ab02e1b1c..6379e14fceb4 100644 --- a/src/common/gifdecod.cpp +++ b/src/common/gifdecod.cpp @@ -862,7 +862,11 @@ wxGIFErrorCode wxGIFDecoder::LoadGIF(wxInputStream& stream) // get initial code size from first byte in raster data bits = stream.GetC(); - if (stream.Eof() || bits <= 0) + // dgif() sizes the LZW tables for codes up to 12 bits, so a + // minimum code size of 12 or more would start ab_free past the + // end of ab_prefix/ab_tail and corrupt the heap on the first + // alphabet update. + if (stream.Eof() || bits <= 0 || bits > 11) return wxGIF_INVFORMAT; // decode image diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 485b38717472..66d666c195c8 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1256,6 +1256,33 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIF", "[image][gif][error]") CHECK( image.GetSize() == wxSize(1200, 800) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFLZWMinCodeSize", + "[image][gif][error]") +{ + // The LZW minimum code size byte that follows the local colour table is + // not validated. dgif() sizes ab_prefix/ab_tail for codes up to 12 bits + // (allocSize == 4096+1), so a code size of 12 makes ab_free start at 4098 + // and the first alphabet update then writes one entry past the end of + // both arrays. The 2x1 image below is the minimum needed to exercise the + // second LZW iteration where the alphabet update happens. + static const unsigned char data[] = + { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, // "GIF89a" + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // LSDB: 2x1, no GCT + 0x2c, // image separator + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, // 2x1 frame at 0,0 + 0x80, // LCT, depth=0 (2 col) + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, // LCT entries + 0x0c, // LZW min code size=12 + 0x04, 0x00, 0x20, 0x00, 0x00, // sub-block: codes 0,1 + 0x00, // sub-block terminator + 0x3b, // trailer + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_GIF) ); +} + #endif // wxUSE_GIF #if wxUSE_PCX From 4398e72c4a0b8144883a8857e37f6bf433c1d346 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 23 May 2026 16:49:24 +0200 Subject: [PATCH 358/416] Fix memory leak when loading invalid GIF files This was already attempted back in 56ba039411 (fixed memory leaks when reading invalid GIFs, 2007-03-30) but the cleanup guard added there didn't really fix anything as we need to free memory in GIFImage, not wxGIFDecoder itself. Really fix this now by calling the newly added GIFImage::Free() and not wxGIFDecoder::Destroy(), which will be called by the dtor anyhow, on error. See #26501. (cherry picked from commit 5bc58ae3d1a844dae30e77be3812d95c566c14f5) --- src/common/gifdecod.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/common/gifdecod.cpp b/src/common/gifdecod.cpp index 6379e14fceb4..3fb59c6e90ec 100644 --- a/src/common/gifdecod.cpp +++ b/src/common/gifdecod.cpp @@ -50,6 +50,15 @@ class GIFImage // def ctor GIFImage(); + // Normally this class does _not_ free its memory as it is owned by + // wxGIFDecoder, but this function can be used to do it if an error happens + // before the image is added to the decoder. + void Free() + { + free(p); + free(pal); + } + unsigned int w; // width unsigned int h; // height unsigned int left; // x coord (in logical screen) @@ -783,11 +792,11 @@ wxGIFErrorCode wxGIFDecoder::LoadGIF(wxInputStream& stream) // allocate memory for IMAGEN struct GIFImagePtr pimg(new GIFImage()); - wxScopeGuard guardDestroy = wxMakeObjGuard(*this, &wxGIFDecoder::Destroy); - if ( !pimg.get() ) return wxGIF_MEMERR; + wxScopeGuard guardDestroy = wxMakeObjGuard(*pimg, &GIFImage::Free); + // fill in the data static const unsigned int idbSize = (2 + 2 + 2 + 2 + 1); stream.Read(buf, idbSize); From d8dd2ac4dfe34e87f5cbd0bc471fc2e0b9d040d6 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 22 May 2026 22:56:52 +0530 Subject: [PATCH 359/416] Stop reading past wxCharBuffer end on unterminated XPM quote The quote-stripping loop in wxXPMDecoder::ReadFile() sets p = q + 1 after strncpy(). If the closing " was missing, q stopped at the buffer terminator, so p ended up one past it and the outer for-loop's p++ then dereferenced two bytes off the end of the wxCharBuffer. Mirror the already-existing /*-comment treatment and break out of the loop when *q == '\0'. See #26499. (cherry picked from commit 49a4dbee56bca3737a26f91ae32b6a6d6cca6f8a) --- docs/changes.txt | 1 + src/common/xpmdecod.cpp | 6 ++++++ tests/image/image.cpp | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 9b2e14c23317..c8f97da1f1a6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ All (GUI): - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). - Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). - Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). +- Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). wxGTK: diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index d9b19430a89d..7f567d643962 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -189,6 +189,12 @@ wxImage wxXPMDecoder::ReadFile(wxInputStream& stream) for (q = p + 1; *q != '\0'; q++) if (*q == '"') break; + + // unterminated quoted string: stop processing rather than reading + // past the end of the buffer when the outer loop next advances p. + if (*q == '\0') + break; + strncpy(xpm_buffer + i, p + 1, q - p - 1); i += q - p - 1; xpm_buffer[i++] = '\n'; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 66d666c195c8..8d5461e510c8 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1334,6 +1334,22 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPM", "[image][xpm][error]") REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPMUnterminatedQuote", + "[image][xpm][error]") +{ + // A payload whose final " is never closed: the quote-stripping loop in + // wxXPMDecoder::ReadFile() advanced p past the buffer terminator after + // strncpy() and then dereferenced one byte further on the next outer + // for-loop iteration, reading past the end of the wxCharBuffer. + static const unsigned char data[] = + { + 0x22,0x61,0x62,0x63, + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); +} + #endif // wxUSE_XPM #if wxUSE_IFF From f70412d148b20a94f44b8471c74432a86b669714 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 22 May 2026 00:41:00 +0530 Subject: [PATCH 360/416] Reject TGA files with non-zero colour map origin ReadTGA() in src/common/imagtga.cpp allocates the palette buffer as paletteLength * palEntrySize bytes (palette indices 0..paletteLength-1) but the loop that fills it writes each entry at index paletteStart + i. The paletteStart and paletteLength values come straight from the TGA header (bytes 3-7 of the colour map specification) and aren't bounded against each other. For any file with paletteStart > 0, the calls to Palette_SetRGB()/Palette_SetRGBA() write past the end of the buffer: e.g. paletteStart=100, paletteLength=10, palettebpp=24 allocates 30 bytes but writes at offsets 100..129. The subsequent image->SetPalette(wxPalette((int) paletteLength, &palette[0], ...)) also reads from index 0 onward, so the rest of the loader was already implicitly assuming paletteStart == 0. Add an explicit early-return wxTGA_INVFORMAT in the colour-mapped branch when paletteStart is non-zero, which is the assumption the existing code makes anyway. See #26493. (cherry picked from commit b2d7c29f299e295637c05c5d6438ddf6eba5528b) --- docs/changes.txt | 1 + src/common/imagtga.cpp | 12 ++++++++++++ tests/image/image.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index c8f97da1f1a6..0005a3fd2ca7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ All (GUI): - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). - Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). - Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). +- Fix write overflow in TGA files with invalid colour map (dxbjavid, #26493). - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). diff --git a/src/common/imagtga.cpp b/src/common/imagtga.cpp index da436c04bd15..b597d8d8566c 100644 --- a/src/common/imagtga.cpp +++ b/src/common/imagtga.cpp @@ -294,6 +294,18 @@ int ReadTGA(wxImage* image, wxInputStream& stream) // Load a palette if we have one. if (colorType == wxTGA_MAPPED) { + // The palette buffer below is sized for paletteLength entries + // indexed 0..paletteLength-1, and the wxPalette built from it + // later (see SetPalette() below) is constructed starting at + // index 0 as well. The loop writes entries at indices + // [paletteStart, paletteStart+paletteLength), so any non-zero + // paletteStart would cause Palette_SetRGB()/Palette_SetRGBA() + // to write past the end of the buffer. + if (paletteStart != 0) + { + return wxTGA_INVFORMAT; + } + { int palEntrySize = (palettebpp == 15 || palettebpp == 24) ? 3 : 4; wxScopedArray paletteTmp(paletteLength*palEntrySize); diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 8d5461e510c8..ae2c2d62268a 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1133,6 +1133,48 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::ReadCorruptedTGA", "[image]") */ corruptTGA[18] = 0x7f; REQUIRE( !tgaImage.LoadFile(memIn) ); + + /* + A colour-mapped TGA with a non-zero colour-map origin. + Older code allocated the palette using paletteLength only, but + indexed it using paletteStart + i, leading to OOB writes. + */ + static const unsigned char badPaletteTGA[] = + { + 0, // ID length + 1, // Color map type + 1, // Image type = color mapped + + 1, 0, // Color map origin (paletteStart = 1) + 1, 0, // Color map length = 1 entry + 24, // Color map entry size + + 0, 0, // X-origin + 0, 0, // Y-origin + + 1, 0, // Width = 1 + 1, 0, // Height = 1 + + 8, // Bits per pixel + 0, // Image descriptor + + // One palette entry (BGR) + 0xff, 0x00, 0x00, + + // One pixel index + 0x00 + }; + + wxMemoryInputStream badPaletteStream( + badPaletteTGA, + WXSIZEOF(badPaletteTGA) + ); + + REQUIRE( badPaletteStream.IsOk() ); + + REQUIRE( + !tgaImage.LoadFile(badPaletteStream, wxBITMAP_TYPE_TGA) + ); } #if wxUSE_GIF From cb63e1caa07cef38eef5a2922e6a24dd65424552 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Sun, 24 May 2026 21:18:15 +0530 Subject: [PATCH 361/416] Stop reading past data end in truncated IFF BODY decode Fix iff body truncation over-read in wxIFFDecoder::ReadIFF: wxIFFDecoder::ReadIFF() sets chunkLen = dataend - dataptr on the truncated BODY path, which is 8 too large because bodyptr lives 8 bytes after dataptr. The non-RLE decode loop below then reads up to 8 bytes past the end of databuf; clamp chunkLen to dataend - bodyptr instead. See #26505. (cherry picked from commit c8c1ca9bb8d9e7e7335d80c97e39917b39e22b79) --- docs/changes.txt | 1 + src/common/imagiff.cpp | 6 +++++- tests/image/image.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 0005a3fd2ca7..06a6c32dccb1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -276,6 +276,7 @@ All (GUI): - Fix write overflow in TGA files with invalid colour map (dxbjavid, #26493). - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). +- Fix buffer overflow for truncated data in wxIFFDecoder (dxbjavid, #26505). wxGTK: diff --git a/src/common/imagiff.cpp b/src/common/imagiff.cpp index 1f209f4e4fc9..54ff4014a12c 100644 --- a/src/common/imagiff.cpp +++ b/src/common/imagiff.cpp @@ -468,7 +468,11 @@ int wxIFFDecoder::ReadIFF() const byte *bodyptr = dataptr + 8; // -> BODY data if (truncated) { - chunkLen = dataend - dataptr; + // Clamp the declared chunk length to the number of bytes actually + // present after the BODY chunk header; otherwise the subsequent + // decompression/decode loops would read up to 8 bytes (the size of + // the chunk header) past the end of databuf. + chunkLen = dataend - bodyptr; } // diff --git a/tests/image/image.cpp b/tests/image/image.cpp index ae2c2d62268a..d2127c445cbd 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1459,6 +1459,46 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFFBmhdOverflow", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFFBodyTruncated", + "[image][iff][error]") +{ + // A BODY chunk that declares more data than the file actually contains: + // dataptr + 8 + chunkLen > dataend, so the truncated branch in + // wxIFFDecoder::ReadIFF() runs and used to set chunkLen = dataend - dataptr, + // which is 8 too large (the chunk header is 8 bytes). The non-RLE BODY + // decode loop then reads up to 8 bytes past the heap-allocated input + // buffer. width = 16 with 1 bitplane gives lineskip = 2, and the second + // half of the scanline (j = 8..15) reads bodyptr[1], one byte past dataend. + // transparentColor = 0x4000 ensures ConvertToImage() also rejects the + // resulting image so the test fails cleanly with the fix applied. + wxImage::AddHandler(new wxIFFHandler); + + static const unsigned char data[] = + { + 0x46,0x4f,0x52,0x4d, // "FORM" + 0x00,0x00,0x00,0x29, // FORM length (not validated) + 0x49,0x4c,0x42,0x4d, // "ILBM" + 0x42,0x4d,0x48,0x44, // "BMHD" + 0x00,0x00,0x00,0x14, // BMHD chunk length = 20 + 0x00,0x10, // width = 16 + 0x00,0x01, // height = 1 + 0x00,0x00,0x00,0x00, // x, y + 0x01, // nPlanes + 0x00, // masking + 0x00, // compression (uncompressed) + 0x00, // pad + 0x40,0x00, // transparentColor = 0x4000 + 0x00,0x00, // x/y aspect + 0x00,0x00,0x00,0x00, // page width / height + 0x42,0x4f,0x44,0x59, // "BODY" + 0x00,0x00,0x00,0x64, // BODY chunk length = 100 (lie) + 0xff, // 1 byte of body data + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); +} + #endif // wxUSE_IFF TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") From 86ff82377b8190a1d8bdb7bd100ca9a775e10a5b Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Sun, 24 May 2026 22:36:31 +0530 Subject: [PATCH 362/416] Validate data chunk header room in wxSound::LoadWAV() Don't read beyond the end of the buffer as could happen in case of a 44-byte WAV file with a 0-sized LIST chunk. See #26506. (cherry picked from commit 6069ea92b392948e61d1250fc24e192e8c39cea4) --- docs/changes.txt | 1 + src/unix/sound.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 06a6c32dccb1..96467c63a08e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -277,6 +277,7 @@ All (GUI): - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). - Fix buffer overflow for truncated data in wxIFFDecoder (dxbjavid, #26505). +- Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). wxGTK: diff --git a/src/unix/sound.cpp b/src/unix/sound.cpp index 2df18e58b9e2..1dd57a0d3af7 100644 --- a/src/unix/sound.cpp +++ b/src/unix/sound.cpp @@ -673,6 +673,11 @@ bool wxSound::LoadWAV(const void* data_, size_t length, bool copyData) data_offset += (list_chunk_length + 8u); } + // After skipping any LIST chunk we must still have room for the + // 8-byte "data" chunk header that follows. + if (length - data_offset < 8u) + return false; + if (memcmp(&data[data_offset], "data", 4) != 0) return false; From 9093f4c73d7aa143c4b17d04f15bf4f98f2768f3 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Mon, 25 May 2026 12:49:20 +0530 Subject: [PATCH 363/416] Reject too-short ZIP64 extra field in wxZipEntry::LoadExtraInfo() wxZipEntry::LoadExtraInfo() calls wxZipHeader::Read64() up to three times on a wxZipHeader of length min(fieldLen, 28). Read64() doesn't bounds-check m_pos against m_size, so a short ZIP64 extra field returns uninitialised bytes from the header's 64-byte stack-allocated m_data and they end up in the entry's m_Size / m_CompressedSize / m_Offset. Reject the entry when fieldLen is below the requested 64-bit total. See #26507. (cherry picked from commit b29393b32796e543db335bfebd5045af2744c0c5) --- docs/changes.txt | 1 + src/common/zipstrm.cpp | 23 ++++++++++++++++++- tests/archive/ziptest.cpp | 48 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 96467c63a08e..37c6c850831b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -278,6 +278,7 @@ All (GUI): - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). - Fix buffer overflow for truncated data in wxIFFDecoder (dxbjavid, #26505). - Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). +- Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). wxGTK: diff --git a/src/common/zipstrm.cpp b/src/common/zipstrm.cpp index 15b324c3b5b9..5778d595ce1c 100644 --- a/src/common/zipstrm.cpp +++ b/src/common/zipstrm.cpp @@ -1041,7 +1041,28 @@ bool wxZipEntry::LoadExtraInfo(const char* extraData, wxUint16 extraLen, bool lo } // Data block for extra field with Header ID = 1 (ZIP64) - // can have length up to 28 bytes. + // can have length up to 28 bytes. A ZIP64 extra field is only + // required to contain a 64-bit value for each of the size, + // compressed size and offset fields whose 32-bit value in the + // surrounding header was set to the ZIP64 sentinel 0xffffffff. + // Reject the entry if fieldLen is too small to cover those + // values, otherwise wxZipHeader::Read64() would walk past the + // end of its initialised data and yield uninitialised bytes + // from the stack-allocated header buffer. + size_t z64Required = 0; + if ( m_Size == 0xffffffff ) + z64Required += 8; + if ( m_CompressedSize == 0xffffffff ) + z64Required += 8; + if ( !localInfo && m_Offset == 0xffffffff ) + z64Required += 8; + if ( fieldLen < z64Required ) + { + wxLogWarning(_("Ignoring malformed extra data record, " + "ZIP file may be corrupted")); + return false; + } + wxZipHeader ds(extraData+4, wxMin(fieldLen, 28)); // A file may contain larger size, compressed size or offset // in a zip64 extra data block. Use the 64 bit values if available diff --git a/tests/archive/ziptest.cpp b/tests/archive/ziptest.cpp index d3e0317a586f..82958304658a 100644 --- a/tests/archive/ziptest.cpp +++ b/tests/archive/ziptest.cpp @@ -15,6 +15,7 @@ #if wxUSE_STREAMS && wxUSE_ZIPSTREAM #include "archivetest.h" +#include "wx/mstream.h" #include "wx/zipstrm.h" using std::string; @@ -248,4 +249,51 @@ CppUnit::Test *ziptest::makeTest( CPPUNIT_TEST_SUITE_REGISTRATION(ziptest); CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(ziptest, "archive/zip"); +TEST_CASE("Zip::BadZip64ExtraField", "[zip][error]") +{ + // wxZipEntry::LoadExtraInfo() used to handle a ZIP64 extra field (Header + // ID = 1) that was too short to provide the 64-bit values the surrounding + // header had asked for by calling wxZipHeader::Read64() anyway. Read64() + // does not bounds-check against m_size, so it returned uninitialised + // bytes from the wxZipHeader stack object's 64-byte m_data array, which + // then ended up in m_Size, m_CompressedSize or m_Offset and was exposed + // to callers through GetSize() / GetCompressedSize() / GetOffset(). + // + // The central directory entry below sets compressed size and uncompressed + // size to the ZIP64 sentinel 0xffffffff but pairs them with a zero-length + // ZIP64 extra field. After the fix the size fields are left at the + // sentinel value rather than overwritten with whatever Read64() happened + // to scrape off the stack. + static const unsigned char data[] = { + // Local file header for entry "a" + 'P','K',0x03,0x04, 0x14,0x00, 0x00,0x00, 0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x01,0x00, 0x00,0x00, 'a', + // Central directory entry + 'P','K',0x01,0x02, 0x14,0x00, 0x14,0x00, 0x00,0x00, 0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, + 0x01,0x00, 0x04,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 'a', + // Extra field: ID=1 (ZIP64), fieldLen=0 + 0x01,0x00, 0x00,0x00, + // End of central directory record + 'P','K',0x05,0x06, 0x00,0x00, 0x00,0x00, 0x01,0x00, 0x01,0x00, + 0x33,0x00,0x00,0x00, 0x1f,0x00,0x00,0x00, + 0x00,0x00, + }; + + wxMemoryInputStream mis(data, sizeof(data)); + wxZipInputStream zip(mis); + wxScopedPtr entry(zip.GetNextEntry()); + REQUIRE( entry ); + // Without the validation in LoadExtraInfo() the eight bytes returned by + // Read64() are uninitialised: assert the ZIP64 sentinel is left alone so + // that the malformed extra field cannot poison the entry's size fields. + CHECK( entry->GetSize() == wxFileOffset(0xffffffff) ); + CHECK( entry->GetCompressedSize() == wxFileOffset(0xffffffff) ); +} + #endif // wxUSE_STREAMS && wxUSE_ZIPSTREAM From 30135386e3fd20b85c17b390871df905cbcc1bd2 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Mon, 25 May 2026 06:08:59 -0400 Subject: [PATCH 364/416] Fix off-by-one buffer overflow in wxWebViewIE wcscpy calling wasn't leaving space for the nul terminator See #26508. (cherry picked from commit 313fbb08b448b92000e8136bf5f278b968eda888) --- src/msw/webview_ie.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/msw/webview_ie.cpp b/src/msw/webview_ie.cpp index 02043b2fb27a..0e240b396d45 100644 --- a/src/msw/webview_ie.cpp +++ b/src/msw/webview_ie.cpp @@ -1770,7 +1770,7 @@ HRESULT STDMETHODCALLTYPE VirtualProtocol::ParseUrl( case wxPARSE_SECURITY_URL: case wxPARSE_SECURITY_DOMAIN: { - if ( cchResult < secLen ) + if ( cchResult <= secLen ) return S_FALSE; wcscpy(pwzResult, m_handler->GetSecurityURL().wc_str()); *pcchResult = secLen; From fbec26062b768e1e5ca642621a7c1377c60d6e9e Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Mon, 25 May 2026 06:26:45 -0400 Subject: [PATCH 365/416] Fix typo in UuidToCForm format string and use bounded wxSnprintf See #26508. (cherry picked from commit b6bfeaac4978f08057c12b099224a01907e702bf) --- src/msw/ole/uuid.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/msw/ole/uuid.cpp b/src/msw/ole/uuid.cpp index 16795c8bb960..89b63e0ff56c 100644 --- a/src/msw/ole/uuid.cpp +++ b/src/msw/ole/uuid.cpp @@ -19,6 +19,7 @@ #ifndef WX_PRECOMP #include "wx/msw/wrapwin.h" + #include "wx/wxcrtvararg.h" #endif #include // UUID related functions @@ -164,7 +165,7 @@ void Uuid::UuidToCForm() if ( m_pszCForm == NULL ) m_pszCForm = new wxChar[UUID_CSTRLEN]; - wsprintf(m_pszCForm, wxT("0x%8.8X,0x%4.4X,0x%4.4X,0x%2.2X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X"), + wxSnprintf(m_pszCForm, UUID_CSTRLEN, wxT("0x%8.8X,0x%4.4X,0x%4.4X,0x%2.2X,0x%2.2X,0x%2.2X,0x%2.2X,0x%2.2X,0x%2.2X,0x%2.2X,0x%2.2X"), m_uuid.Data1, m_uuid.Data2, m_uuid.Data3, m_uuid.Data4[0], m_uuid.Data4[1], m_uuid.Data4[2], m_uuid.Data4[3], m_uuid.Data4[4], m_uuid.Data4[5], m_uuid.Data4[6], m_uuid.Data4[7]); From a76b6c8efed24eb0c22269e868254959f6662ce3 Mon Sep 17 00:00:00 2001 From: Blake-Madden <66873089+Blake-Madden@users.noreply.github.com> Date: Mon, 25 May 2026 06:47:33 -0400 Subject: [PATCH 366/416] Get charset from CHARFORMAT in wxTextCtrl instead of hardcoding ANSI_CHARSET See #26508. (cherry picked from commit b1722286466ffdea9f0f9a5caeb79150f019d398) --- src/msw/textctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index dfbd3d144cb9..1daa4c26f3e0 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -3675,7 +3675,7 @@ bool wxTextCtrl::GetStyle(long position, wxTextAttr& style) LOGFONT lf; lf.lfWidth = 0; - lf.lfCharSet = ANSI_CHARSET; // FIXME: how to get correct charset? + lf.lfCharSet = (cf.dwMask & CFM_CHARSET) ? cf.bCharSet : DEFAULT_CHARSET; lf.lfClipPrecision = 0; lf.lfEscapement = 0; wxStrcpy(lf.lfFaceName, cf.szFaceName); From c60dbd15ff19072ea520f47102679e01eaf329f1 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Thu, 21 May 2026 22:56:50 +0530 Subject: [PATCH 367/416] Validate ANI frame indices against loaded icon count The SEQ chunk of an ANI file gives a 32-bit image index per animation step. These values were stored into wxANIFrameInfo::m_imageIndex verbatim, without any check against the number of icon chunks actually loaded into m_images. wxANIDecoder::ConvertToImage() and GetTransparentColour() then used the value as an index into m_images directly, so a malformed ANI file could trigger an out-of-bounds vector access when the file is displayed. Reject the file in Load() if any of the indices is negative or points past the end of m_images, and also reject files that produced no icon chunks at all so the subsequent m_images[0] reference is safe. See #26492. (cherry picked from commit a676a0f1f51f5c94036d64df3863664586937aa6) --- docs/changes.txt | 1 + src/common/anidecod.cpp | 14 ++++++++++ tests/image/image.cpp | 61 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 37c6c850831b..1e91b5880eea 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -271,6 +271,7 @@ All (GUI): - Avoid out-of-bounds palette write in wxIFFDecoder (MarkLee131, #26440). - Avoid out-of-bounds read in wxPCXHandler (MarkLee131, #26441). - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). +- Fix reading ANI images with invalid frame count (dxbjavid, #26492). - Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). - Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). - Fix write overflow in TGA files with invalid colour map (dxbjavid, #26493). diff --git a/src/common/anidecod.cpp b/src/common/anidecod.cpp index e160e591c629..d5c7a4ff7ff5 100644 --- a/src/common/anidecod.cpp +++ b/src/common/anidecod.cpp @@ -338,6 +338,11 @@ bool wxANIDecoder::Load( wxInputStream& stream ) if (m_nFrames==0) return false; + // Without any loaded icon, m_images[0] below and the public accessors + // would index into an empty vector. + if (m_images.empty()) + return false; + if (m_nFrames==m_images.GetCount()) { // if no SEQ chunk is available, display the frames in the order @@ -347,6 +352,15 @@ bool wxANIDecoder::Load( wxInputStream& stream ) m_info[i].m_imageIndex = i; } + // SEQ chunk indices come straight from the input, so reject the file if + // any of them would index m_images out of range. + for (unsigned int i=0; i(m_info[i].m_imageIndex) >= m_images.size()) + return false; + } + // if some frame has an invalid delay, use the global delay given in the // ANI header for (unsigned int i=0; i Date: Tue, 26 May 2026 12:31:35 +0530 Subject: [PATCH 368/416] Validate 4-bit BMP palette index against number of colors Fix out-of-bounds read when decoding 4bpp BMP with invalid palette indices. See #26511. (cherry picked from commit b47e2bb3527862397cafc7d200637db2ec0194f8) --- docs/changes.txt | 1 + src/common/imagbmp.cpp | 8 ++++++-- tests/image/image.cpp | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 1e91b5880eea..68d5bee1c521 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -273,6 +273,7 @@ All (GUI): - Avoid out-of-bounds read in wxXPMDecoder (MarkLee131, #26442). - Fix reading ANI images with invalid frame count (dxbjavid, #26492). - Avoid out-of-bounds write for invalid BMP RLE runs (dxbjavid, #26496). +- Fix out-of-bounds read when loading invalid 4bpp BMPs (dxbjavid, #26511). - Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). - Fix write overflow in TGA files with invalid colour map (dxbjavid, #26493). - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 713cfef218b4..50484d38dd50 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -782,6 +782,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, nibble[0] = (wxUint8)( (aByte & 0xF0) >> 4 ) ; nibble[1] = (wxUint8)( aByte & 0x0F ) ; } + if ( nibble[k%2] >= ncolors ) + return false; ptr[poffset ] = cmap[nibble[k%2]].r; ptr[poffset + 1] = cmap[nibble[k%2]].g; ptr[poffset + 2] = cmap[nibble[k%2]].b; @@ -803,6 +805,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, for ( int l = 0; l < first && column < width; l++ ) { + if ( nibble[l%2] >= ncolors ) + return false; ptr[poffset ] = cmap[nibble[l%2]].r; ptr[poffset + 1] = cmap[nibble[l%2]].g; ptr[poffset + 2] = cmap[nibble[l%2]].b; @@ -815,8 +819,8 @@ bool LoadBMPData(wxImage * image, const BMPDesc& desc, for (int nibble = 0; nibble < 2 && column < width; nibble++) { int index = ((aByte & (0xF0 >> (nibble * 4))) >> (!nibble * 4)); - if ( index >= 16 ) - index = 15; + if ( index >= ncolors ) + return false; ptr[poffset] = cmap[index].r; ptr[poffset + 1] = cmap[index].g; ptr[poffset + 2] = cmap[index].b; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 5b9b19ccd1f4..0fa469eb701e 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1177,6 +1177,41 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::ReadCorruptedTGA", "[image]") ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadBMPPaletteIndex", "[image][bmp][error]") +{ + // A 4-bit BMP that declares only a single palette entry (biClrUsed = 1) + // but uses a higher nibble value as the pixel index. The 8-bit decode + // path rejects indices >= ncolors, but the 4-bit path used to read + // cmap[index] for any 0..15 nibble, running past the palette array. + static const unsigned char data[] = + { + 'B','M', + 0x3e,0,0,0, // file size = 62 + 0,0,0,0, // reserved + 0x3a,0,0,0, // pixel data offset = 58 + + 0x28,0,0,0, // DIB header size = 40 + 1,0,0,0, // width = 1 + 1,0,0,0, // height = 1 + 1,0, // planes + 4,0, // bpp = 4 + 0,0,0,0, // compression = BI_RGB + 0,0,0,0, // image size + 0,0,0,0, // x ppm + 0,0,0,0, // y ppm + 1,0,0,0, // biClrUsed = 1 + 0,0,0,0, // biClrImportant + + 0,0,0,0, // single palette entry (BGRA) + + 0xf0,0,0,0 // one scanline, high nibble = 15 + }; + + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_BMP) ); +} + #if wxUSE_GIF TEST_CASE_METHOD(ImageHandlersInit, "wxImage::SaveAnimatedGIF", "[image]") From d41256470b96c2f9c63c0c0b9c658c92831c5c53 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Wed, 27 May 2026 17:16:06 +0530 Subject: [PATCH 369/416] Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() In wxMBConvUTF7::ToWChar() the value of the byte after '+' was cast to "unsigned", which meant that on the platforms with signed bytes values greater than 0x80 were sign-extended to a ~4GiB index which was (way) out of bounds for a 256-entry table. Fix the code by casting to "unsigned char", like the cc lookup just above already does. See #26517. (cherry picked from commit f5c81bc5de564eb2b27414179b7902559dc6a115) --- docs/changes.txt | 1 + src/common/strconv.cpp | 2 +- tests/mbconv/mbconvtest.cpp | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 68d5bee1c521..a3c99a7cbbf3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -281,6 +281,7 @@ All (GUI): - Fix buffer overflow for truncated data in wxIFFDecoder (dxbjavid, #26505). - Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). +- Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() (dxbjavid, #26517). wxGTK: diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index 46d2fe4e4c97..4fc3cb1568f6 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -712,7 +712,7 @@ size_t wxMBConvUTF7::ToWChar(wchar_t *dst, size_t dstLen, len++; src++; } - else if ( utf7unb64[(unsigned)*src] == 0xff ) + else if ( utf7unb64[(unsigned char)*src] == 0xff ) { // empty encoded chunks are not allowed if ( !len ) diff --git a/tests/mbconv/mbconvtest.cpp b/tests/mbconv/mbconvtest.cpp index 53309c4b60af..8d67b705fa7f 100644 --- a/tests/mbconv/mbconvtest.cpp +++ b/tests/mbconv/mbconvtest.cpp @@ -1507,4 +1507,9 @@ TEST_CASE("wxMBConv::cMB2WC", "[mbconv][mb2wc]") CHECK( wxConvUTF7.cMB2WC("").length() == 0 ); CHECK( wxConvUTF7.cMB2WC(wxCharBuffer()).length() == 0 ); CHECK( wxConvUTF7.cMB2WC("+AKM-").length() == 1 ); + + // A non-ASCII byte right after the shift character used to be read past + // the end of the base-64 decoding table (signed char index), now it's + // just rejected as an invalid encoded chunk. + CHECK( wxConvUTF7.cMB2WC("+\xc3").length() == 0 ); } From 1175aa020c6023b9c7030d8793de8c20cdd84c00 Mon Sep 17 00:00:00 2001 From: ryancog <170381220+ryancog@users.noreply.github.com> Date: Wed, 27 May 2026 15:49:00 -0400 Subject: [PATCH 370/416] Fix wxURI::IsReference() description The documentation described the inverse of the name of the function and what it actually did, fix it to describe the actual function behaviour. See #26520. (cherry picked from commit 41969e24dc95c54f900f1fe9c48ac0771ff29246) --- interface/wx/uri.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/wx/uri.h b/interface/wx/uri.h index a9b8a70214d6..ed0df1bffbbb 100644 --- a/interface/wx/uri.h +++ b/interface/wx/uri.h @@ -244,8 +244,8 @@ class wxURI : public wxObject bool HasUserInfo() const; /** - Returns @true if a valid [absolute] URI, otherwise this URI is a URI - reference and not a full URI, and this function returns @false. + Returns @false if a valid [absolute] URI, otherwise this URI is a URI + reference and not a full URI, and this function returns @true. */ bool IsReference() const; From 3bc57e47369ef9996e91568491dc9c975c984f1c Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Wed, 27 May 2026 20:14:55 +0530 Subject: [PATCH 371/416] Fix one-byte over-read in IFF decomprle replicate packet The replicate-run branch reads the packet's data byte after only checking that one source byte remains, but it consumes two (the control byte plus the data byte). A BODY ending in a lone replicate control byte then reads one byte past the input buffer. Require two bytes left, matching the literal-run check above. See #26518. (cherry picked from commit 83d55d0a9027e3798c5444554586b85cfba06015) --- docs/changes.txt | 2 +- src/common/imagiff.cpp | 2 +- tests/image/image.cpp | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index a3c99a7cbbf3..8c906539ef84 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -278,7 +278,7 @@ All (GUI): - Fix write overflow in TGA files with invalid colour map (dxbjavid, #26493). - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). -- Fix buffer overflow for truncated data in wxIFFDecoder (dxbjavid, #26505). +- Fix multiple buffer overflows in wxIFFDecoder (dxbjavid, #26505, #26518). - Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). - Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() (dxbjavid, #26517). diff --git a/src/common/imagiff.cpp b/src/common/imagiff.cpp index 54ff4014a12c..9a826645372a 100644 --- a/src/common/imagiff.cpp +++ b/src/common/imagiff.cpp @@ -276,7 +276,7 @@ static void decomprle(const byte *sptr, byte *dptr, long slen, long dlen) else if (codeByte > 0x80) { codeByte = 0x81 - (codeByte & 0x7f); - if ((slen > (long) 0) && (dlen >= (long) codeByte)) { + if ((slen > (long) 1) && (dlen >= (long) codeByte)) { dataByte = *sptr++; slen -= 2; dlen -= codeByte; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 0fa469eb701e..7b2c3a432f94 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1595,6 +1595,43 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFFBodyTruncated", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadIFFRLEBody", + "[image][iff][error]") +{ + // A run-length encoded (compression == 1) BODY whose data is a single + // replicate control byte (0xFF) with no following data byte. decomprle() + // only checked that one source byte remained before reading the replicate + // packet's data byte, so it read bodyptr[1], one byte past the end of the + // heap-allocated input buffer. transparentColor = 0x4000 makes + // ConvertToImage() reject the result so the load fails with the fix. + wxImage::AddHandler(new wxIFFHandler); + + static const unsigned char data[] = + { + 0x46,0x4f,0x52,0x4d, // "FORM" + 0x00,0x00,0x00,0x29, // FORM length (not validated) + 0x49,0x4c,0x42,0x4d, // "ILBM" + 0x42,0x4d,0x48,0x44, // "BMHD" + 0x00,0x00,0x00,0x14, // BMHD chunk length = 20 + 0x00,0x08, // width = 8 + 0x00,0x01, // height = 1 + 0x00,0x00,0x00,0x00, // x, y + 0x01, // nPlanes + 0x00, // masking + 0x01, // compression = 1 (RLE) + 0x00, // pad + 0x40,0x00, // transparentColor = 0x4000 + 0x00,0x00, // x/y aspect + 0x00,0x00,0x00,0x00, // page width / height + 0x42,0x4f,0x44,0x59, // "BODY" + 0x00,0x00,0x00,0x64, // BODY chunk length = 100 (lie) + 0xff, // lone replicate control byte + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_IFF) ); +} + #endif // wxUSE_IFF TEST_CASE_METHOD(ImageHandlersInit, "wxImage::DibPadding", "[image]") From 92bbcac5b71910395522b91306e281558ff095e3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 31 May 2026 16:59:09 +0200 Subject: [PATCH 372/416] Always define wxMsgCatalog dtor in the library Objects of this class previously couldn't be used when using shared wx libraries because their default, compiler-generated, dtor referenced dtor of wxPluralFormsCalculatorPtr which was not exported from the library. Fix this by defining wxMsgCatalog dtor inside the library too. --- include/wx/translation.h | 2 -- src/common/translation.cpp | 4 ++-- version-script.in | 7 +++++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/wx/translation.h b/include/wx/translation.h index 9d82cbd2592b..363f86bb02cd 100644 --- a/include/wx/translation.h +++ b/include/wx/translation.h @@ -86,9 +86,7 @@ class WXDLLIMPEXP_BASE wxMsgCatalog public: // Ctor is protected, because CreateFromXXX functions must be used, // but destruction should be unrestricted -#if !wxUSE_UNICODE ~wxMsgCatalog(); -#endif // load the catalog from disk or from data; caller is responsible for // deleting them if not NULL diff --git a/src/common/translation.cpp b/src/common/translation.cpp index 4dec2da659e0..9719d03a437c 100644 --- a/src/common/translation.cpp +++ b/src/common/translation.cpp @@ -1225,9 +1225,9 @@ bool wxMsgCatalogFile::FillHash(wxStringToStringHashMap& hash, // wxMsgCatalog class // ---------------------------------------------------------------------------- -#if !wxUSE_UNICODE wxMsgCatalog::~wxMsgCatalog() { +#if !wxUSE_UNICODE if ( m_conv ) { if ( wxConvUI == m_conv ) @@ -1239,8 +1239,8 @@ wxMsgCatalog::~wxMsgCatalog() delete m_conv; } -} #endif // !wxUSE_UNICODE +} /* static */ wxMsgCatalog *wxMsgCatalog::CreateFromFile(const wxString& filename, diff --git a/version-script.in b/version-script.in index 03c39237c5e7..696179e93904 100644 --- a/version-script.in +++ b/version-script.in @@ -27,6 +27,13 @@ # build/bakefiles/version.bkl to indicate that new APIs have been added and # rebake! +# public symbols added in 3.2.10 (please keep in alphabetical order): +@WX_VERSION_TAG@.10 { + extern "C++" { + "wxMsgCatalog::~wxMsgCatalog()"; + }; +}; + # public symbols added in 3.2.7 (please keep in alphabetical order): @WX_VERSION_TAG@.7 { extern "C++" { From 4864782d8714120a8c2e3035080a6d38e4142ee8 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 29 May 2026 00:48:19 +0530 Subject: [PATCH 373/416] Fix buffer overflow when loading invalid message catalogs Avoid integer overflow in message catalog StringAtOfs() bounds check: StringAtOfs() read ofsString and nLen from the .mo file and checked ofsString + nLen against the data length, but both are 32-bit so the sum wraps and a translated entry declaring nLen 0xffffffff passes the check; FillHash() then scans past the end of the catalog. Compute the offset as a 64-bit value so the addition can't overflow and result in an invalid index into the buffer. Add a test feeding such a catalog through wxMsgCatalog::CreateFromData(). See #26513. (cherry picked from commit 2647c0806ff1d1caac4056e6760b996d72a409b1) --- docs/changes.txt | 1 + src/common/translation.cpp | 2 +- tests/intl/intltest.cpp | 41 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8c906539ef84..9f7afdbf99d1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -282,6 +282,7 @@ All (GUI): - Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). - Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() (dxbjavid, #26517). +- Fix buffer overflow reading corrupted message catalogs (dxbjavid, #26513). wxGTK: diff --git a/src/common/translation.cpp b/src/common/translation.cpp index 9719d03a437c..1bd086b20519 100644 --- a/src/common/translation.cpp +++ b/src/common/translation.cpp @@ -964,7 +964,7 @@ class wxMsgCatalogFile const wxMsgTableEntry * const ent = pTable + n; // this check could fail for a corrupt message catalog - size_t32 ofsString = Swap(ent->ofsString); + wxULongLong_t ofsString = Swap(ent->ofsString); if ( ofsString + Swap(ent->nLen) > m_data.length()) { return NULL; diff --git a/tests/intl/intltest.cpp b/tests/intl/intltest.cpp index 46960a87b241..7628133f014e 100644 --- a/tests/intl/intltest.cpp +++ b/tests/intl/intltest.cpp @@ -18,6 +18,7 @@ #endif // WX_PRECOMP #include "wx/intl.h" +#include "wx/translation.h" #include "wx/uilocale.h" #include "wx/scopeguard.h" @@ -290,6 +291,46 @@ TEST_CASE("wxTranslations::AddCatalog", "[translations]") } } +static void put32(unsigned char* p, wxUint32 v) +{ + p[0] = (unsigned char)(v & 0xff); + p[1] = (unsigned char)((v >> 8) & 0xff); + p[2] = (unsigned char)((v >> 16) & 0xff); + p[3] = (unsigned char)((v >> 24) & 0xff); +} + +TEST_CASE("wxTranslations::CorruptCatalog", "[translations]") +{ + // Build a minimal MO catalog with two strings whose second translated + // entry declares a length of 0xffffffff. Adding this to the (valid) string + // offset wraps around in 32-bit arithmetic and used to defeat the bounds + // check in StringAtOfs(), letting FillHash() read past the end of the data. + // + // The catalog is 64 bytes; the backing array has one extra byte because + // wxCharTypeBuffer copies len+1 bytes (it assumes a trailing NUL). + const size_t moLen = 64; + unsigned char mo[moLen + 1]; + memset(mo, 0, sizeof(mo)); + + put32(mo + 0, 0x950412de); // magic + put32(mo + 8, 2); // number of strings + put32(mo + 12, 28); // offset of original strings table + put32(mo + 16, 44); // offset of translated strings table + // original strings table + put32(mo + 28, 0); put32(mo + 32, 60); // "" + put32(mo + 36, 1); put32(mo + 40, 61); // "x" + // translated strings table + put32(mo + 44, 0); put32(mo + 48, 60); // "" + put32(mo + 52, 0xffffffff); put32(mo + 56, 63); // bogus length + mo[61] = 'x'; + mo[63] = 'A'; // unterminated string at the very end of the buffer + + wxCharTypeBuffer data(reinterpret_cast(mo), moLen); + wxMsgCatalog* const cat = wxMsgCatalog::CreateFromData(data, "corrupt"); + CHECK( cat == NULL ); + delete cat; +} + TEST_CASE("wxTranslations::GetBestTranslation", "[translations]") { wxFileTranslationsLoader::AddCatalogLookupPathPrefix("./intl"); From f77f70b1098aac8caf1255da59b271897ba52560 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Wed, 27 May 2026 23:48:10 +0530 Subject: [PATCH 374/416] Fix buffer overflow on invalid width in wxXPMDecoder Fix integer overflow in wxXPMDecoder::ReadData() when computing width*chars_per_pixel: a header with a (very) large width could result in wrapping around and result in reasonable but yet invalid value, which could let the key-reading loop run off the end of the buffer. Compute the product in 64-bits to avoid the overflow. See #26519. (cherry picked from commit 46f928d057a478bf4202f4ee381d74d9a0d7543e) --- docs/changes.txt | 1 + src/common/xpmdecod.cpp | 3 ++- tests/image/image.cpp | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 9f7afdbf99d1..b5a7e16ceebe 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -277,6 +277,7 @@ All (GUI): - Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (jmestwa, #26497). - Fix write overflow in TGA files with invalid colour map (dxbjavid, #26493). - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). +- Fix read overflow in wxXPMDecoder on invalid width (dxbjavid, #26519). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). - Fix multiple buffer overflows in wxIFFDecoder (dxbjavid, #26505, #26518). - Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index 7f567d643962..d13611345d46 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -786,7 +786,8 @@ wxImage wxXPMDecoder::ReadData(const char* const* xpm_data) for (i = 0; i < width; i++, img_data += 3) { const char *xpmImgLine = xpm_data[1 + colors_cnt + j]; - if ( !xpmImgLine || strlen(xpmImgLine) < width*chars_per_pixel ) + if ( !xpmImgLine || + strlen(xpmImgLine) < (unsigned long long)width*chars_per_pixel ) { wxLogError(_("XPM: truncated image data at line %d!"), (int)(1 + colors_cnt + j)); diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 7b2c3a432f94..26985c4d2e9b 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1488,6 +1488,27 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPMUnterminatedQuote", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPMWidthOverflow", + "[image][xpm][error]") +{ + // width * chars_per_pixel was computed in 32-bit unsigned in + // wxXPMDecoder::ReadData() and used to check that each image line is long + // enough, but the per-pixel index uses size_t arithmetic. With width = + // 68174085 and chars_per_pixel = 63 the product is 4 294 967 355, which + // wraps to 59, so a one-pixel image line passes the length check and the + // key-reading loop then runs off the end of the buffer. Loading such a + // file must be rejected. + const std::string key(63, 'a'); + const std::string xpm = + "/* XPM */\n" + "\"68174085 1 1 63\"\n" + "\"" + key + " c #ffffff\"\n" + "\"" + key + "\"\n"; + wxMemoryInputStream mis(xpm.data(), xpm.size()); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); +} + #endif // wxUSE_XPM #if wxUSE_IFF From 0d53937af2fcce3145f02e6c330c9dacab164c3d Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Thu, 28 May 2026 18:59:58 +0530 Subject: [PATCH 375/416] Fix data-size bound check past LIST chunk in wxSound::LoadWAV() The check compared ul against length minus the fixed offset FMT_INDEX + uiSize + 16, which equals data_offset + 8 only when no LIST chunk is present. When a LIST chunk is present data_offset has already been advanced past it, so a crafted WAV can pass this check with ul larger than the bytes that actually follow the data-chunk header, and the OSS/SDL playback paths then read past m_dataWithHeader. Use data_offset directly so the same constraint holds either way. See #26525. (cherry picked from commit 262cec29155eca7ff9a6fd2e1d7d7cfd4912fa0d) --- docs/changes.txt | 2 +- src/unix/sound.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index b5a7e16ceebe..ef6455e4ecf9 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -280,7 +280,7 @@ All (GUI): - Fix read overflow in wxXPMDecoder on invalid width (dxbjavid, #26519). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). - Fix multiple buffer overflows in wxIFFDecoder (dxbjavid, #26505, #26518). -- Fix out-of-bounds read in wxSound on 0-length LIST chunk (dxbjavid, #26506). +- Fix multiple buffer overflows in wxSound (dxbjavid, #26506, #26525). - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). - Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() (dxbjavid, #26517). - Fix buffer overflow reading corrupted message catalogs (dxbjavid, #26513). diff --git a/src/unix/sound.cpp b/src/unix/sound.cpp index 1dd57a0d3af7..56d61e6248a9 100644 --- a/src/unix/sound.cpp +++ b/src/unix/sound.cpp @@ -715,8 +715,10 @@ bool wxSound::LoadWAV(const void* data_, size_t length, bool copyData) memcpy(&ul, &data[data_offset + 4u], 4); ul = wxUINT32_SWAP_ON_BE(ul); - // ensure we actually have at least that much data in the input - if (ul > length - FMT_INDEX - waveformat.uiSize - 16) + // ensure we actually have at least that much data in the input; use + // data_offset rather than the fixed FMT_INDEX + uiSize + 16 expression + // so that an optional LIST chunk is accounted for here as well. + if (ul > length - data_offset - 8u) return false; m_data = new wxSoundData; From 3c5d06ab39e75490cf4d080eec0472a7b17a46b6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 30 May 2026 18:00:35 +0200 Subject: [PATCH 376/416] Avoid buffer read overflow in wxCharTypeBuffer ctor Don't assume that the data is always followed by NUL. See #26527. (cherry picked from commit cf50020259ebf5f73b00138599f3ad958ae156fe) --- include/wx/buffer.h | 8 +++++++- tests/strings/strings.cpp | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/wx/buffer.h b/include/wx/buffer.h index 1309b405700c..83cd5826630f 100644 --- a/include/wx/buffer.h +++ b/include/wx/buffer.h @@ -240,7 +240,13 @@ class wxScopedCharTypeBuffer { CharType *dst = (CharType*)malloc(sizeof(CharType) * (len + 1)); if ( dst ) - memcpy(dst, src, sizeof(CharType) * (len + 1)); + { + memcpy(dst, src, sizeof(CharType) * len); + + // Make sure the buffer is NUL-terminated, even if the source + // string isn't. + dst[len] = (CharType)0; + } return dst; } diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp index 37f13464cf16..1c7d305c466d 100644 --- a/tests/strings/strings.cpp +++ b/tests/strings/strings.cpp @@ -1259,6 +1259,9 @@ void StringTestCase::ScopedBuffers() wxCharBuffer buf5(5); buf5.extend(len); CPPUNIT_ASSERT_EQUAL('\0', buf5.data()[len]); + + const char buf8[8] = { }; + CPPUNIT_ASSERT_EQUAL( 8, wxCharTypeBuffer(buf8, sizeof(buf8)).length() ); } void StringTestCase::SupplementaryUniChar() From 15b402e625cc9626543e39dfd8c09eb7dfb22c65 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 30 May 2026 23:02:11 +0200 Subject: [PATCH 377/416] Make recently added wxXPMDecoder test case really pass We need to use memmove() and not strncpy() in wxXPMDecoder code as nothing guarantees that the source and destination regions don't overlap and they did overlap, in fact, for the test case added as part of 46f928d057 (Fix buffer overflow on invalid width in wxXPMDecoder, 2026-05-27). Also make the test itself more explicit by hard-coding the test XPM instead of constructing it dynamically. See #26519. (cherry picked from commit ccff9fe0f3ef3cc812da9b56bd56b5bc3273ddec) --- src/common/xpmdecod.cpp | 2 +- tests/image/image.cpp | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index d13611345d46..6f942a9f57c2 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -195,7 +195,7 @@ wxImage wxXPMDecoder::ReadFile(wxInputStream& stream) if (*q == '\0') break; - strncpy(xpm_buffer + i, p + 1, q - p - 1); + memmove(xpm_buffer + i, p + 1, q - p - 1); i += q - p - 1; xpm_buffer[i++] = '\n'; p = q + 1; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 26985c4d2e9b..e3e4eb165a1b 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1498,12 +1498,11 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPMWidthOverflow", // wraps to 59, so a one-pixel image line passes the length check and the // key-reading loop then runs off the end of the buffer. Loading such a // file must be rejected. - const std::string key(63, 'a'); - const std::string xpm = - "/* XPM */\n" - "\"68174085 1 1 63\"\n" - "\"" + key + " c #ffffff\"\n" - "\"" + key + "\"\n"; + const std::string xpm = "\"/* XPM */\"\n" +"\"68174085 1 1 63\"\n" +"\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c #ffffff\"\n" +"\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n" + ; wxMemoryInputStream mis(xpm.data(), xpm.size()); wxImage img; REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); From a1cac3c23f7f271e22902b3cca9df63b1b59feef Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 29 May 2026 01:45:37 +0530 Subject: [PATCH 378/416] Fix buffer overflow in deepCopyHostent() name copy This function, which is called by wxGethostby{name,addr}_r() if native implementations of these functions are not available, could overflow the input buffer by a byte if the host name was equal to the buffer size. Fix the check for length, which also makes it consistent with the check in deepCopyServent() just below. See #26528. (cherry picked from commit 7348f005b7f768634d79233a268bf42d7bee5893) --- docs/changes.txt | 1 + src/common/sckaddr.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index ef6455e4ecf9..e5c1549913aa 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -259,6 +259,7 @@ All: - Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307). - Fix wxCondition and wxSemaphore::WaitTimeout() after 2038 under Unix (#26466). +- Fix buffer overflow in wxGethostby{addr,name}_r() (dxbjavid, #26528). All (GUI): diff --git a/src/common/sckaddr.cpp b/src/common/sckaddr.cpp index 979dc4ebd410..e4b5b8e56ea9 100644 --- a/src/common/sckaddr.cpp +++ b/src/common/sckaddr.cpp @@ -194,7 +194,7 @@ hostent *deepCopyHostent(hostent *h, /* copy name */ int len = strlen(h->h_name); - if (len > size) + if (len >= size) { *err = ENOMEM; return NULL; From 9c94b432a2dfa371827d6a05f75642915b39422f Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 29 May 2026 14:53:39 +0530 Subject: [PATCH 379/416] Fix integer overflow in tar extended header bounds check recSize in wxTarInputStream::ReadExtendedHeader() comes from the record's decimal byte-count field, so a pax header declaring a length close to SIZE_MAX makes recPos + recSize wrap below len and pass the check. The following pRec[recSize - 1] then reads far past the buffer, which ASAN flags as a heap-buffer-overflow. Comparing recSize against len - recPos avoids the wrap. See #26530. (cherry picked from commit 4cf9de30097c43447bc8e71054ee3212a8f879e3) --- docs/changes.txt | 1 + src/common/tarstrm.cpp | 5 +- tests/archive/tartest.cpp | 163 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 167 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index e5c1549913aa..60bd48f485b1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -260,6 +260,7 @@ All: - Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307). - Fix wxCondition and wxSemaphore::WaitTimeout() after 2038 under Unix (#26466). - Fix buffer overflow in wxGethostby{addr,name}_r() (dxbjavid, #26528). +- Fix buffer overflow in wxTarInputStream (dxbjavid, #26530). All (GUI): diff --git a/src/common/tarstrm.cpp b/src/common/tarstrm.cpp index 7324b3ac3c9f..7c57ec1aca8a 100644 --- a/src/common/tarstrm.cpp +++ b/src/common/tarstrm.cpp @@ -947,8 +947,9 @@ bool wxTarInputStream::ReadExtendedHeader(wxTarHeaderRecords*& recs) while (isdigit((unsigned char) *p)) recSize = recSize * 10 + *p++ - '0'; - // validity checks - if (recPos + recSize > len) + // validity checks: write this carefully to avoid adding anything to + // recSize as addition could overflow + if (recSize > len - recPos) break; if (recSize < p - pRec + (size_t)3 || *p != ' ' || pRec[recSize - 1] != '\012') { diff --git a/tests/archive/tartest.cpp b/tests/archive/tartest.cpp index f28b17d7e2db..01ce14c1b5a4 100644 --- a/tests/archive/tartest.cpp +++ b/tests/archive/tartest.cpp @@ -16,6 +16,7 @@ #include "archivetest.h" #include "wx/tarstrm.h" +#include "wx/mstream.h" using std::string; @@ -69,4 +70,166 @@ CppUnit::Test *tartest::makeTest( CPPUNIT_TEST_SUITE_REGISTRATION(tartest); CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(tartest, "archive/tar"); +TEST_CASE("Tar::BadExtendedHeaderRecordLen", "[tar][error]") +{ + // wxTarInputStream::ReadExtendedHeader() parses the records of a pax + // extended header ('x' type flag) and used "recPos + recSize > len" to + // check that a record fits in the buffer. recSize is parsed from the + // record's leading decimal byte count, so a record whose length is close + // to SIZE_MAX makes recPos + recSize overflow and wrap below len, passing + // the check. The subsequent "pRec[recSize - 1]" then reads far outside the + // buffer. The header below has a first valid record followed by a record + // whose declared length is 2^64 - 6, which triggers a heap-buffer-overflow + // read under ASAN. After the fix the oversized record is rejected and the + // following regular entry is returned normally. + static const unsigned char tarData[] = { + 0x70, 0x61, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x36, 0x34, 0x34, 0x00, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x33, 0x33, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x36, 0x35, 0x36, 0x34, 0x00, 0x20, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x73, 0x74, 0x61, 0x72, 0x00, 0x30, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x20, 0x61, 0x3d, + 0x62, 0x0a, 0x31, 0x38, 0x34, 0x34, 0x36, 0x37, 0x34, 0x34, 0x30, 0x37, + 0x33, 0x37, 0x30, 0x39, 0x35, 0x35, 0x31, 0x36, 0x31, 0x30, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x2e, 0x74, 0x78, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, + 0x36, 0x34, 0x34, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x36, 0x37, + 0x31, 0x34, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x73, 0x74, + 0x61, 0x72, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + + wxMemoryInputStream mis(tarData, sizeof(tarData)); + wxTarInputStream tar(mis); + wxScopedPtr entry(tar.GetNextEntry()); + + // Without the fix this reads out of bounds while parsing the extended + // header; with it the bad record is skipped and the normal entry is read. + REQUIRE( entry ); + CHECK( entry->GetInternalName() == "a.txt" ); +} + #endif // wxUSE_STREAMS From a3b244bd5f556293a4b1e4715ee0fbee6dbb9faf Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Fri, 29 May 2026 18:14:19 +0530 Subject: [PATCH 380/416] Fix out-of-bounds read on trailing % in wxFileType::ExpandCommand() A command ending in a bare '%' made the loop advance in this function advance past the end of string. Fix this by handling only non-trailing '%' specifically See #26531. (cherry picked from commit 18582927af8bb7e0f8283f7c4c854db7377d0272) --- docs/changes.txt | 1 + src/common/mimecmn.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 60bd48f485b1..b6251a930e1f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -261,6 +261,7 @@ All: - Fix wxCondition and wxSemaphore::WaitTimeout() after 2038 under Unix (#26466). - Fix buffer overflow in wxGethostby{addr,name}_r() (dxbjavid, #26528). - Fix buffer overflow in wxTarInputStream (dxbjavid, #26530). +- Fix out-of-bounds read in wxFileType::ExpandCommand() (dxbjavid, #26531). All (GUI): diff --git a/src/common/mimecmn.cpp b/src/common/mimecmn.cpp index bc2c196ee166..0abd4f71be61 100644 --- a/src/common/mimecmn.cpp +++ b/src/common/mimecmn.cpp @@ -191,7 +191,9 @@ wxString wxFileType::ExpandCommand(const wxString& command, wxString str; for ( const wxChar *pc = command.c_str(); *pc != wxT('\0'); pc++ ) { - if ( *pc == wxT('%') ) { + // Make sure to leave any trailing '%' alone to avoid going past the + // end of string. + if ( *pc == wxT('%') && pc[1] != wxT('\0') ) { switch ( *++pc ) { case wxT('s'): // don't quote the file name if it's already quoted: notice From bb347b7dc6660e9d2087b00fcf98253e21f66a2f Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Thu, 28 May 2026 13:46:17 +0530 Subject: [PATCH 381/416] Validate decoded pixel indices in wxGIFDecoder::ConvertToImage() Avoid reading uninitialized memory if any of the pixels in the input data reference entries beyond the end of the palette. See #26521. (cherry picked from commit 86bc0762efcee173963d8002934d592141a0e1ae) --- docs/changes.txt | 1 + src/common/gifdecod.cpp | 20 +++++++++++++++++++- tests/image/image.cpp | 30 ++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index b6251a930e1f..183feb6e8210 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -282,6 +282,7 @@ All (GUI): - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Fix read overflow in wxXPMDecoder on invalid width (dxbjavid, #26519). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). +- Fix buffer overflows decoding invalid GIFs (dxbjavid, #26521). - Fix multiple buffer overflows in wxIFFDecoder (dxbjavid, #26505, #26518). - Fix multiple buffer overflows in wxSound (dxbjavid, #26506, #26525). - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). diff --git a/src/common/gifdecod.cpp b/src/common/gifdecod.cpp index 3fb59c6e90ec..ca17666cdeab 100644 --- a/src/common/gifdecod.cpp +++ b/src/common/gifdecod.cpp @@ -154,6 +154,25 @@ bool wxGIFDecoder::ConvertToImage(unsigned int frame, wxImage *image) const dst = image->GetData(); transparent = GetTransparentColourIndex(frame); + // Reject decoded pixels that reference palette entries past the + // loaded portion of the per-frame palette buffer: GIF files where + // the LZW minimum code size implies a larger alphabet than the + // declared colour table can emit literal codes >= ncolours. pimg->pal + // is a fixed 768 bytes but only 3*ncolours of them are populated from + // the file (the rest is left uninitialised), so the pal[3*(*src) + ...] + // reads below would otherwise pull uninitialised bytes into the image. + // The index stays within the 768-byte buffer (a pixel byte is at most + // 255), so this is an uninitialised read rather than an out-of-bounds + // one, but it still leaks junk into the decoded pixels. + unsigned long npixel = + static_cast(sz.GetWidth()) * sz.GetHeight(); + const unsigned int ncolours = GetNcolours(frame); + for (i = 0; i < npixel; i++) + { + if (src[i] >= ncolours) + return false; + } + // set transparent colour mask if (transparent != -1) { @@ -226,7 +245,6 @@ bool wxGIFDecoder::ConvertToImage(unsigned int frame, wxImage *image) const #endif // wxUSE_PALETTE // copy image data - unsigned long npixel = sz.GetWidth() * sz.GetHeight(); for (i = 0; i < npixel; i++, src++) { *(dst++) = pal[3 * (*src) + 0]; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index e3e4eb165a1b..f7ee52d9cdb6 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1360,6 +1360,36 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFLZWMinCodeSize", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_GIF) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFPaletteIndex", + "[image][gif][error]") +{ + // A 1x1 GIF whose LSDB declares a 2-entry global colour table but whose + // LZW minimum code size is 3, giving an 8-literal alphabet. The frame's + // LZW data emits CLEAR, literal 2, EOI -- pixel value 2 is a valid LZW + // literal but past the end of the 2-entry palette, so the + // pal[3*(*src) + ...] reads in wxGIFDecoder::ConvertToImage() previously + // pulled uninitialised bytes from the unpopulated tail of the 768-byte + // pimg->pal buffer into the decoded image. The index stays inside the + // buffer (a pixel byte is at most 255) so ASAN won't flag it, but it is + // an uninitialised read that MSAN catches and leaks junk into the pixels. + static const unsigned char data[] = + { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, // "GIF89a" + 0x01, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, // LSDB: 1x1, GCT, 2col + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, // GCT entries + 0x2c, // image separator + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, // 1x1 frame at 0,0 + 0x00, // no LCT + 0x03, // LZW min code size=3 + 0x02, 0x28, 0x09, // sub-block: CLEAR,2,EOI + 0x00, // sub-block terminator + 0x3b, // trailer + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_GIF) ); +} + #endif // wxUSE_GIF #if wxUSE_PCX From 741fdc724274171dcba6c13cd871271bfb039fe4 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Thu, 28 May 2026 18:58:26 +0530 Subject: [PATCH 382/416] Avoid writing beyond the buffer end for GIFs with zero size Reject GIF frames with zero width or height to avoid writing beyond the (empty) buffer returned by malloc(0). See #26524. (cherry picked from commit 830ec3c439ee58f84bb4c214fabe37c5e7d4eaa1) --- docs/changes.txt | 2 +- src/common/gifdecod.cpp | 8 ++++++++ tests/image/image.cpp | 29 +++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 183feb6e8210..72c6402955c2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -282,7 +282,7 @@ All (GUI): - Fix read overflow in wxXPMDecoder on unterminated quote (dxbjavid, #26499). - Fix read overflow in wxXPMDecoder on invalid width (dxbjavid, #26519). - Reject more invalid GIFs and do it without leaking memory (dxbjavid, #26501). -- Fix buffer overflows decoding invalid GIFs (dxbjavid, #26521). +- Fix buffer overflows decoding invalid GIFs (dxbjavid, #26521, #26524). - Fix multiple buffer overflows in wxIFFDecoder (dxbjavid, #26505, #26518). - Fix multiple buffer overflows in wxSound (dxbjavid, #26506, #26525). - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). diff --git a/src/common/gifdecod.cpp b/src/common/gifdecod.cpp index ca17666cdeab..e137562c0545 100644 --- a/src/common/gifdecod.cpp +++ b/src/common/gifdecod.cpp @@ -860,6 +860,14 @@ wxGIFErrorCode wxGIFDecoder::LoadGIF(wxInputStream& stream) interl = ((buf[8] & 0x40)? 1 : 0); size = pimg->w * pimg->h; + // Reject frames with zero width or height: malloc(0) below + // returns an empty allocation that the dgif() decode loop + // still writes into. The subsequent-frames check above + // rejects zero size in animations but the first frame and + // the non-animated GIF87a path both reach here unchecked. + if (size == 0) + return wxGIF_INVFORMAT; + pimg->transparent = transparent; pimg->disposal = disposal; pimg->delay = delay; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index f7ee52d9cdb6..e10c7306ae36 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1390,6 +1390,35 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFPaletteIndex", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_GIF) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFZeroFrameSize", + "[image][gif][error]") +{ + // Per-frame width/height are read from the image descriptor without + // checking for zero. When either dimension is zero, pimg->w * pimg->h + // is 0 and the subsequent malloc(0) leaves an empty buffer that dgif() + // still writes into as soon as the LZW stream emits a literal code, + // overflowing the heap allocation. The existing zero-size check only + // covers the second and later frames of an animation; the first frame + // of an animation, and any GIF87a frame, both reach the allocation + // unchecked. + static const unsigned char data[] = + { + 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, // "GIF87a" + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // LSDB: 1x1, no GCT + 0x2c, // image separator + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // frame at 0,0, w=1 h=0 + 0x80, // LCT, depth=0 (2 col) + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, // LCT entries + 0x02, // LZW min code size=2 + 0x02, 0x44, 0x01, // sub-block: CLR/lit/EOI + 0x00, // sub-block terminator + 0x3b, // trailer + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxImage img; + REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_GIF) ); +} + #endif // wxUSE_GIF #if wxUSE_PCX From 87078e90688839a9f9c9bedb0e1cfdec320b6bd1 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Thu, 28 May 2026 14:51:10 +0530 Subject: [PATCH 383/416] Fix buffer overflow in wxVsnprintf() when size==0 Don't write NUL byte to "buf[size - 1]" when size is 0. This bug was present in both implementations of wxVsnprintf(), so fix it in both places too. See #26522. (cherry picked from commit a3ad8e33602aff06e57a7d3637df546cc07593b0) --- docs/changes.txt | 1 + src/common/wxcrt.cpp | 7 ++++--- src/common/wxprintf.cpp | 6 ++++++ tests/strings/crt.cpp | 27 +++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 72c6402955c2..46378ebbf1a9 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -262,6 +262,7 @@ All: - Fix buffer overflow in wxGethostby{addr,name}_r() (dxbjavid, #26528). - Fix buffer overflow in wxTarInputStream (dxbjavid, #26530). - Fix out-of-bounds read in wxFileType::ExpandCommand() (dxbjavid, #26531). +- Fix buffer overflow in wxVsnprintf() (dxbjavid, #26522). All (GUI): diff --git a/src/common/wxcrt.cpp b/src/common/wxcrt.cpp index db3c9f4e5837..fb0132be016c 100644 --- a/src/common/wxcrt.cpp +++ b/src/common/wxcrt.cpp @@ -527,7 +527,7 @@ int ConvertStringToBuf(const wxString& s, char *out, size_t outsize) { memcpy(out, buf, len+1); } - else // not enough space + else if ( outsize > 0 ) // not enough space { memcpy(out, buf, outsize-1); out[outsize-1] = '\0'; @@ -546,7 +546,7 @@ int ConvertStringToBuf(const wxString& s, wchar_t *out, size_t outsize) { memcpy(out, buf, (len+1) * sizeof(wchar_t)); } - else // not enough space + else if ( outsize > 0 ) // not enough space { memcpy(out, buf, (outsize-1) * sizeof(wchar_t)); out[outsize-1] = 0; @@ -627,7 +627,8 @@ int wxVsnprintf(char *str, size_t size, const wxString& format, va_list argptr) // VsnprintfTestCase reveals that glibc's implementation of vswprintf // doesn't nul terminate on truncation. - str[size - 1] = 0; + if ( size ) + str[size - 1] = 0; return rv; } diff --git a/src/common/wxprintf.cpp b/src/common/wxprintf.cpp index 06787963a2c3..8bd8f62b0ce8 100644 --- a/src/common/wxprintf.cpp +++ b/src/common/wxprintf.cpp @@ -95,6 +95,12 @@ static int wxDoVsnprintf(CharType *buf, size_t lenMax, wprintf(L"Using wxCRT_VsnprintfW\n"); #endif + // If the output buffer is of size 0 we can't write anything to it, not + // even the terminating NUL, so just bail out: continuing would underflow + // lenCur below and access buf[(size_t)-1], writing out of bounds. + if ( lenMax == 0 ) + return -1; + wxPrintfConvSpecParser parser(format); wxPrintfArg argdata[wxMAX_SVNPRINTF_ARGUMENTS]; diff --git a/tests/strings/crt.cpp b/tests/strings/crt.cpp index 8256db034de6..bd138312464a 100644 --- a/tests/strings/crt.cpp +++ b/tests/strings/crt.cpp @@ -270,3 +270,30 @@ TEST_CASE("CRT::Strtox", "[crt][strtod][strtol]") #endif } } + +TEST_CASE("CRT::SnprintfZeroSize", "[crt][snprintf]") +{ + // wxVsnprintf() used to unconditionally execute str[size - 1] = 0 on + // return; with size == 0 this wraps to str[SIZE_MAX] and corrupts memory + // (or crashes). The same off-by-one was present in the underlying + // ConvertStringToBuf() helper which performed memcpy of (outsize-1) bytes + // when outsize was 0. Check that both narrow and wide overloads of + // wxSnprintf() leave the supplied buffer untouched when size is 0. + char bufa[8] = { 'a','b','c','d','e','f','g','h' }; + (void)wxSnprintf(bufa, 0, "test"); + +#if wxUSE_UNICODE + wchar_t bufw[8] = { L'a',L'b',L'c',L'd',L'e',L'f',L'g',L'h' }; + (void)wxSnprintf(bufw, 0, L"test"); +#endif // wxUSE_UNICODE + + for ( size_t i = 0; i < 8; i++ ) + { + INFO("i=" << i); + CHECK( bufa[i] == "abcdefgh"[i] ); + +#if wxUSE_UNICODE + CHECK( bufw[i] == L"abcdefgh"[i] ); +#endif // wxUSE_UNICODE + } +} From 5093c11308637e3e2a20370960b6e4d10874557f Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Mon, 1 Jun 2026 09:33:23 +0530 Subject: [PATCH 384/416] Fix out-of-bounds read on trailing backslash in wxRegEx::Replace() wxRegExImpl::Replace() scans replacement.c_str() and does *++p after a backslash. When the replacement ends in a lone backslash, that reads the terminating NUL, the else branch appends it, and the loop's p++ then steps one byte past the NUL so the *p condition reads out of bounds. Keep a trailing backslash verbatim and stop before the increment. Add a test checking that this doesn't result in ASAN errors any more. See #26541. (cherry picked from commit 9b0eb807cd03eb9ba517b8d5371c91d811a7682b) --- docs/changes.txt | 1 + src/common/regex.cpp | 7 +++++++ tests/regex/wxregextest.cpp | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 46378ebbf1a9..f5b0e31f85ef 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -263,6 +263,7 @@ All: - Fix buffer overflow in wxTarInputStream (dxbjavid, #26530). - Fix out-of-bounds read in wxFileType::ExpandCommand() (dxbjavid, #26531). - Fix buffer overflow in wxVsnprintf() (dxbjavid, #26522). +- Fix out-of-bounds read in wxRegEx::Replace() (dxbjavid, #26541). All (GUI): diff --git a/src/common/regex.cpp b/src/common/regex.cpp index 033b7a40c800..8dcfef0eee0a 100644 --- a/src/common/regex.cpp +++ b/src/common/regex.cpp @@ -1293,6 +1293,13 @@ int wxRegExImpl::Replace(wxString *text, index = (size_t)wxStrtoul(p, &end, 10); p = end - 1; // -1 to compensate for p++ in the loop } + else if ( !*p ) + { + // trailing backslash: keep it verbatim and stop here so + // the loop's p++ doesn't read past the terminating NUL + textNew += wxT('\\'); + break; + } //else: backslash used as escape character } else if ( *p == wxT('&') ) diff --git a/tests/regex/wxregextest.cpp b/tests/regex/wxregextest.cpp index 0ce1a27394e5..c991dff9179e 100644 --- a/tests/regex/wxregextest.cpp +++ b/tests/regex/wxregextest.cpp @@ -161,6 +161,10 @@ TEST_CASE("wxRegEx::Replace", "[regex][replace]") CheckReplace(patn, "123foo456foo", "\\0\\0", "123foo456foo456foo", 1); CheckReplace(patn, "foo123foo123", "bar", "barbar", 2); CheckReplace(patn, "foo123_foo456_foo789", "bar", "bar_bar_bar", 3); + + // A replacement string ending with a lone backslash used to read one byte + // past the end of the buffer; the backslash is now kept verbatim. + CheckReplace(patn, "foo123", "bar\\", "bar\\", 1); } TEST_CASE("wxRegEx::QuoteMeta", "[regex][meta]") From 4069a67fe29893b9eb31f62f3d5103c0493eecf9 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Tue, 2 Jun 2026 02:50:58 +0530 Subject: [PATCH 385/416] 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. (cherry picked from commit 76991d2d13c6214f390331a1e2bee88f0658cfe8) --- docs/changes.txt | 1 + src/common/ustring.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index f5b0e31f85ef..340ae7e7e354 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -264,6 +264,7 @@ All: - Fix out-of-bounds read in wxFileType::ExpandCommand() (dxbjavid, #26531). - Fix buffer overflow in wxVsnprintf() (dxbjavid, #26522). - Fix out-of-bounds read in wxRegEx::Replace() (dxbjavid, #26541). +- Fix out-of-bounds read in wxUString (dxbjavid, #26548). All (GUI): diff --git a/src/common/ustring.cpp b/src/common/ustring.cpp index 728462ef48ce..042eedcbfe26 100644 --- a/src/common/ustring.cpp +++ b/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; } From d256b9f126f8c9deb2957bfc5ae6cd7a8e2367e1 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Tue, 2 Jun 2026 17:19:54 +0530 Subject: [PATCH 386/416] Fix rowspan/colspan integer overflow in wxHtmlTableCell::AddCell() AddCell() reads COLSPAN and ROWSPAN from the markup into ints with no upper bound, then uses r + rowspan and c + colspan to grow the cell table and to index ypos[] in Layout(). A value near INT_MAX, e.g. in the second row, overflows the addition so the r + rowspan > m_NumRows growth check is bypassed and Layout() writes past the end of ypos[]. Clamp colspan and rowspan to the limits from the HTML spec (1000 and 65534). See #26554. (cherry picked from commit 4309276ceff156cba65dc537c643995ed11d9697) --- docs/changes.txt | 1 + src/html/m_tables.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 340ae7e7e354..d6510f754fbb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -291,6 +291,7 @@ All (GUI): - Fix reading too short extra field in ZIP64 files (dxbjavid, #26507). - Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() (dxbjavid, #26517). - Fix buffer overflow reading corrupted message catalogs (dxbjavid, #26513). +- Fix buffer overflow for too big tables in wxHTML (dxbjavid, #26554). wxGTK: diff --git a/src/html/m_tables.cpp b/src/html/m_tables.cpp index 6430d5e2f838..f8c6270e3aae 100644 --- a/src/html/m_tables.cpp +++ b/src/html/m_tables.cpp @@ -330,6 +330,15 @@ void wxHtmlTableCell::AddCell(wxHtmlContainerCell *cell, const wxHtmlTag& tag) if (m_CellInfo[r][c].rowspan < 1) m_CellInfo[r][c].rowspan = 1; + // The values come straight from the markup and are used below as + // r + rowspan and c + colspan, which overflow for values near INT_MAX + // and so bypass the bounds growth, resulting in an out-of-bounds access + // in Layout(). Clamp them to the limits used by the HTML specification. + if (m_CellInfo[r][c].colspan > 1000) + m_CellInfo[r][c].colspan = 1000; + if (m_CellInfo[r][c].rowspan > 65534) + m_CellInfo[r][c].rowspan = 65534; + if ((m_CellInfo[r][c].colspan > 1) || (m_CellInfo[r][c].rowspan > 1)) { int i, j; From b65c4525b3f94dbee859952420246fac44a7b00c Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Tue, 2 Jun 2026 15:26:13 -0400 Subject: [PATCH 387/416] Update GitHub Actions to be Node v24 compatible Node v20 has gone EOL and will be removed from GitHub Actions soon. This migrates all the GitHub Actions to use versions that are Node 24 compatible. The only change of real substance is moving to the step-security fork of gha-setup-vsdevenv which seems probably better than wx maintaining its own fork. Also update a few other actions version in 3.2 branch to use the same versions as in master. (cherry picked from commit 39c73b42f5882fc0eef568eda077ee20385c7bbd) --- .github/workflows/abi_check.yml | 4 ++-- .github/workflows/ci.yml | 7 ++++--- .github/workflows/ci_cmake.yml | 14 ++++++++------ .github/workflows/ci_mac.yml | 5 +++-- .github/workflows/ci_mac_xcode.yml | 2 +- .github/workflows/ci_msw.yml | 4 ++-- .github/workflows/ci_msw_cross.yml | 4 ++-- .github/workflows/code_checks.yml | 8 ++++---- .github/workflows/docs_update.yml | 2 +- .github/workflows/make_release.yml | 4 ++-- 10 files changed, 29 insertions(+), 25 deletions(-) diff --git a/.github/workflows/abi_check.yml b/.github/workflows/abi_check.yml index c43bf0baa189..1cafdbf9a67e 100644 --- a/.github/workflows/abi_check.yml +++ b/.github/workflows/abi_check.yml @@ -55,12 +55,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: submodules: 'recursive' - name: Install CCache - uses: hendrikmuhs/ccache-action@v1.2.3 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ubuntu-22.04-default diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa78ae5dcb65..075cae08192c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -199,13 +199,13 @@ jobs: - name: Checkout if: matrix.container != 'ubuntu:18.04' - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: 'recursive' - name: Install CCache if: matrix.container != 'ubuntu:18.04' - uses: hendrikmuhs/ccache-action@v1.2.12 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ${{ matrix.name }} @@ -335,9 +335,10 @@ jobs: - name: Setup Go if: matrix.container != 'ubuntu:18.04' - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: '1' + cache: false - name: Testing working-directory: tests diff --git a/.github/workflows/ci_cmake.yml b/.github/workflows/ci_cmake.yml index e116b92a0b8f..210974817e18 100644 --- a/.github/workflows/ci_cmake.yml +++ b/.github/workflows/ci_cmake.yml @@ -87,7 +87,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: submodules: 'recursive' @@ -118,10 +118,11 @@ jobs: run: | ./build/tools/before_install.sh - # required for CMake to find Ninja - - name: "[Windows] Set up MSVC Developer Command Prompt" - if: runner.os == 'Windows' - uses: wxWidgets/gha-setup-vsdevenv@ac61ecb4b05909261f8f375601c0e15aabdd9f10 + # required for CMake to find Ninja but shouldn't be used when using + # MSYS2, or we'd end up using MSVC clang instead of its own. + - name: Setup MSVC Environment + if: ${{ runner.os == 'Windows' && matrix.cmake_generator != 'MinGW Makefiles' }} + uses: step-security/gha-setup-vsdevenv@v6 - name: Configuring run: | @@ -146,9 +147,10 @@ jobs: - name: Setup Go if: matrix.cmake_tests != 'OFF' - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: '1' + cache: false - name: Testing if: matrix.cmake_tests != 'OFF' diff --git a/.github/workflows/ci_mac.yml b/.github/workflows/ci_mac.yml index 0e64d82f925d..2e7d6d502f26 100644 --- a/.github/workflows/ci_mac.yml +++ b/.github/workflows/ci_mac.yml @@ -120,7 +120,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: submodules: recursive @@ -209,9 +209,10 @@ jobs: - name: Setup Go if: matrix.skip_testing != true - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: '1' + cache: false - name: Testing if: matrix.skip_testing != true diff --git a/.github/workflows/ci_mac_xcode.yml b/.github/workflows/ci_mac_xcode.yml index e69f0741110f..3fffb18711c4 100644 --- a/.github/workflows/ci_mac_xcode.yml +++ b/.github/workflows/ci_mac_xcode.yml @@ -114,7 +114,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/ci_msw.yml b/.github/workflows/ci_msw.yml index 87cc7961c3fd..994031834437 100644 --- a/.github/workflows/ci_msw.yml +++ b/.github/workflows/ci_msw.yml @@ -73,7 +73,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: submodules: 'recursive' @@ -87,7 +87,7 @@ jobs: Set-Content setup.h - name: Add MSBuild to PATH - uses: microsoft/setup-msbuild@v1.1.3 + uses: microsoft/setup-msbuild@v3 with: vs-prerelease: true diff --git a/.github/workflows/ci_msw_cross.yml b/.github/workflows/ci_msw_cross.yml index bcbf88b4ae88..16625604a558 100644 --- a/.github/workflows/ci_msw_cross.yml +++ b/.github/workflows/ci_msw_cross.yml @@ -137,12 +137,12 @@ jobs: echo "wxTEST_RUNNER=wine" >> $GITHUB_ENV - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: submodules: 'recursive' - name: Install CCache - uses: hendrikmuhs/ccache-action@v1.2.3 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ${{ matrix.name }} diff --git a/.github/workflows/code_checks.yml b/.github/workflows/code_checks.yml index d2e3f3c0bdd2..cd6a129e9140 100644 --- a/.github/workflows/code_checks.yml +++ b/.github/workflows/code_checks.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install codespell run: | @@ -36,7 +36,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Check for trailing whitespace and TABs run: | @@ -67,7 +67,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install dos2unix run: | @@ -83,7 +83,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Check for C++11 keywords run: | diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 32148e605940..224c68c0bddb 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install doxygen run: | diff --git a/.github/workflows/make_release.yml b/.github/workflows/make_release.yml index cb6f1a6836c0..c962d7b2abf8 100644 --- a/.github/workflows/make_release.yml +++ b/.github/workflows/make_release.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: 'recursive' @@ -75,7 +75,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Download Release Archive uses: actions/download-artifact@v4 From 5f5813c4b820affeecf49dc97f4bd105726aa14d Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Mon, 1 Jun 2026 19:55:16 +0530 Subject: [PATCH 388/416] Fix out-of-bounds read on trailing % in wxDateTime::Format() Omit the unit test added in master due to the changes in it between master and this branch. See #26543. (cherry picked from commit 53901b80d243b2b75e245768c0e4d66e0f030ae0) --- docs/changes.txt | 1 + src/common/datetimefmt.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index d6510f754fbb..052cb8a26b18 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -265,6 +265,7 @@ All: - Fix buffer overflow in wxVsnprintf() (dxbjavid, #26522). - Fix out-of-bounds read in wxRegEx::Replace() (dxbjavid, #26541). - Fix out-of-bounds read in wxUString (dxbjavid, #26548). +- Fix wxDateTime::Format() handling of invalid format (dxbjavid, #26543). All (GUI): diff --git a/src/common/datetimefmt.cpp b/src/common/datetimefmt.cpp index 0576af8e91a3..d35fae27718b 100644 --- a/src/common/datetimefmt.cpp +++ b/src/common/datetimefmt.cpp @@ -409,8 +409,17 @@ wxString wxDateTime::Format(const wxString& formatp, const TimeZone& tz) const continue; } + // advance to the format specifier following the '%': a trailing '%' + // is not a valid format, so output it verbatim and stop here instead + // of letting the loop's own ++p move the iterator past the end + if ( ++p == format.end() ) + { + res += wxT('%'); + break; + } + // set the default format - switch ( (*++p).GetValue() ) + switch ( (*p).GetValue() ) { case wxT('Y'): // year has 4 digits case wxT('G'): // (and ISO week year too) From bc9a722115b915acf265553c5f284593fd225e4a Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Tue, 2 Jun 2026 13:09:19 +0530 Subject: [PATCH 389/416] Fix off-by-one in hostent/servent pointer list terminator The h_addr_list/h_aliases/s_aliases copy loops in deepCopyHostent() and deepCopyServent() reserve N pointer slots for N entries and then write the terminator with *++q, one slot too far, so the array isn't terminated right after the last entry and that slot holds copied address/alias bytes used as a pointer. Reserve a slot for the terminator and write it with *q. See #26553. (cherry picked from commit 48561fc632f7f12e0916a4651faa319f49baa0be) --- docs/changes.txt | 1 + src/common/sckaddr.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 052cb8a26b18..8a518ec7a4c3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -266,6 +266,7 @@ All: - Fix out-of-bounds read in wxRegEx::Replace() (dxbjavid, #26541). - Fix out-of-bounds read in wxUString (dxbjavid, #26548). - Fix wxDateTime::Format() handling of invalid format (dxbjavid, #26543). +- Fix buffer overflow in wxGethostbyxxx_r() on some systems (dxbjavid, #26553). All (GUI): diff --git a/src/common/sckaddr.cpp b/src/common/sckaddr.cpp index e4b5b8e56ea9..63d7bc557b20 100644 --- a/src/common/sckaddr.cpp +++ b/src/common/sckaddr.cpp @@ -219,6 +219,7 @@ hostent *deepCopyHostent(hostent *h, char **h_addr_list = (char **)(buffer + pos); while(*(p++) != 0) pos += sizeof(char *); + pos += sizeof(char *); /* and one slot for the null terminator */ /* copy addresses and fill new pointer list */ for (p = h->h_addr_list, q = h_addr_list; *p != 0; p++, q++) @@ -232,7 +233,7 @@ hostent *deepCopyHostent(hostent *h, *q = buffer + pos; /* set copied pointer to copied content */ pos += len; } - *++q = 0; /* null terminate the pointer list */ + *q = 0; /* null terminate the pointer list */ h->h_addr_list = h_addr_list; /* copy pointer to pointers */ /* ensure word alignment of pointers */ @@ -245,6 +246,7 @@ hostent *deepCopyHostent(hostent *h, char **h_aliases = (char **)(buffer + pos); while(*(p++) != 0) pos += sizeof(char *); + pos += sizeof(char *); /* and one slot for the null terminator */ /* copy aliases and fill new pointer list */ for (p = h->h_aliases, q = h_aliases; *p != 0; p++, q++) @@ -260,7 +262,7 @@ hostent *deepCopyHostent(hostent *h, *q = buffer + pos; /* set copied pointer to copied content */ pos += len + 1; } - *++q = 0; /* null terminate the pointer list */ + *q = 0; /* null terminate the pointer list */ h->h_aliases = h_aliases; /* copy pointer to pointers */ return h; @@ -374,6 +376,7 @@ servent *deepCopyServent(servent *s, char **s_aliases = (char **)(buffer + pos); while(*(p++) != 0) pos += sizeof(char *); + pos += sizeof(char *); /* and one slot for the null terminator */ /* copy addresses and fill new pointer list */ for (p = s->s_aliases, q = s_aliases; *p != 0; p++, q++){ @@ -387,7 +390,7 @@ servent *deepCopyServent(servent *s, *q = buffer + pos; /* set copied pointer to copied content */ pos += len + 1; } - *++q = 0; /* null terminate the pointer list */ + *q = 0; /* null terminate the pointer list */ s->s_aliases = s_aliases; /* copy pointer to pointers */ return s; } From bb8d1de496f69b202fdcaeb3848a3d27ed893baf Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Sat, 13 Jun 2026 13:04:59 +0530 Subject: [PATCH 390/416] Validate background colour index in wxGIFDecoder::LoadGIF() Don't set background colour to uninitialized memory contents, just ignore the invalid index. See #26582. (cherry picked from commit 7ee01fa850fd674d46aa2a4e136a6dec5375c685) --- src/common/gifdecod.cpp | 17 +++++++++++++---- tests/image/image.cpp | 31 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/common/gifdecod.cpp b/src/common/gifdecod.cpp index e137562c0545..eb640fccf94e 100644 --- a/src/common/gifdecod.cpp +++ b/src/common/gifdecod.cpp @@ -692,7 +692,7 @@ wxGIFErrorCode wxGIFDecoder::LoadGIF(wxInputStream& stream) // load global color map if available if ((buf[4] & 0x80) == 0x80) { - int backgroundColIndex = buf[5]; + unsigned int backgroundColIndex = buf[5]; global_ncolors = 2 << (buf[4] & 0x07); unsigned int numBytes = 3 * global_ncolors; @@ -702,9 +702,18 @@ wxGIFErrorCode wxGIFDecoder::LoadGIF(wxInputStream& stream) return wxGIF_INVFORMAT; } - m_background.Set(pal[backgroundColIndex*3 + 0], - pal[backgroundColIndex*3 + 1], - pal[backgroundColIndex*3 + 2]); + // The background colour index must reference an entry in the global + // colour table: only the first 3*global_ncolors bytes of pal were read + // from the file above, so an index past that would take the background + // colour from the uninitialised tail of the buffer (and leak it out + // through GetBackgroundColour()). Leave the background unset in that + // case, as we do for a GIF that doesn't specify one at all. + if (backgroundColIndex < global_ncolors) + { + m_background.Set(pal[backgroundColIndex*3 + 0], + pal[backgroundColIndex*3 + 1], + pal[backgroundColIndex*3 + 2]); + } } // transparent colour, disposal method and delay default to unused diff --git a/tests/image/image.cpp b/tests/image/image.cpp index e10c7306ae36..3bfa533d1ec6 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -20,6 +20,7 @@ #endif // WX_PRECOMP #include "wx/anidecod.h" // wxImageArray +#include "wx/gifdecod.h" #include "wx/bitmap.h" #include "wx/cursor.h" #include "wx/icon.h" @@ -1390,6 +1391,36 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFPaletteIndex", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_GIF) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::GIFBadBackgroundIndex", + "[image][gif][error]") +{ + // The logical screen descriptor's background colour index is read straight + // from the file and used to index the global colour table, but only the + // first 3*global_ncolors bytes of the 768-byte palette buffer are populated + // from the stream. This GIF declares a 2-entry global colour table and a + // background index of 255, so wxGIFDecoder::LoadGIF() used to take the + // background colour from the uninitialised tail of the buffer and expose it + // via GetBackgroundColour(). The frame itself is valid so loading still + // succeeds; the background should simply be left unset. + static const unsigned char data[] = + { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, // "GIF89a" + 0x01, 0x00, 0x01, 0x00, 0x80, 0xff, 0x00, // LSD 1x1, GCT 2col, bg=255 + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, // GCT entries + 0x2c, // image separator + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, // 1x1 frame at 0,0 + 0x00, // no LCT + 0x02, // LZW min code size=2 + 0x02, 0x44, 0x01, // sub-block CLEAR,0,EOI + 0x00, // sub-block terminator + 0x3b, // trailer + }; + wxMemoryInputStream mis(data, WXSIZEOF(data)); + wxGIFDecoder decoder; + REQUIRE( decoder.LoadGIF(mis) == wxGIF_OK ); + CHECK( !decoder.GetBackgroundColour().IsOk() ); +} + TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadGIFZeroFrameSize", "[image][gif][error]") { From 64576a0e36e5c63194b89a63ffa4bd7e0207d060 Mon Sep 17 00:00:00 2001 From: dxbjavid Date: Mon, 15 Jun 2026 23:46:30 +0530 Subject: [PATCH 391/416] Avoid uninitialised palette read in wxXPMDecoder::ReadData() This function allocates the palette r/g/b arrays from the colour count given in the XPM header but fills them by walking the colour map, so a malformed file that reuses the same key on more than one colour line collapses those lines into a single map entry and leaves the tail of the arrays uninitialised. wxPalette() then copies that uninitialised memory into the palette later returned by GetPalette(), and in debug builds the wxASSERT(i == colors_cnt) at the end fires. Use the actual number of distinct colours in the map as the size for the arrays and the palette to fix this. Also add a test loading an XPM triggering this issue. See #26595. (cherry picked from commit 788b4581122ffda0ee5b7c51132d115e62aafd99) --- src/common/xpmdecod.cpp | 16 +++++++++++----- tests/image/image.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index 6f942a9f57c2..a9527deac162 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -818,9 +818,15 @@ wxImage wxXPMDecoder::ReadData(const char* const* xpm_data) } } #if wxUSE_PALETTE - unsigned char* r = new unsigned char[colors_cnt]; - unsigned char* g = new unsigned char[colors_cnt]; - unsigned char* b = new unsigned char[colors_cnt]; + // The header colour count can be larger than the number of entries + // actually in the map if a malformed XPM reuses the same key on several + // colour lines, as the map then collapses them into a single entry. Build + // the palette from the real number of distinct colours so we don't read + // past the part of the arrays we filled in below. + const size_t palette_cnt = clr_tbl.size(); + unsigned char* r = new unsigned char[palette_cnt]; + unsigned char* g = new unsigned char[palette_cnt]; + unsigned char* b = new unsigned char[palette_cnt]; for (it = clr_tbl.begin(), i = 0; it != clr_tbl.end(); ++it, ++i) { @@ -828,8 +834,8 @@ wxImage wxXPMDecoder::ReadData(const char* const* xpm_data) g[i] = it->second.G; b[i] = it->second.B; } - wxASSERT(i == colors_cnt); - img.SetPalette(wxPalette(colors_cnt, r, g, b)); + wxASSERT(i == palette_cnt); + img.SetPalette(wxPalette(palette_cnt, r, g, b)); delete[] r; delete[] g; delete[] b; diff --git a/tests/image/image.cpp b/tests/image/image.cpp index 3bfa533d1ec6..55a585e98e05 100644 --- a/tests/image/image.cpp +++ b/tests/image/image.cpp @@ -1598,6 +1598,30 @@ TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPMWidthOverflow", REQUIRE( !img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); } +TEST_CASE_METHOD(ImageHandlersInit, "wxImage::BadXPMDuplicateColourKey", + "[image][xpm][error]") +{ + // The colour table declares two colours but reuses the same key on both + // lines, so the colour map only ends up with one distinct entry. + // wxXPMDecoder::ReadData() sized the palette arrays by the declared colour + // count while filling only the entries actually in the map, so the last + // palette entry was left uninitialised for wxPalette() to read (and the + // wxASSERT() in debug builds fired). The image data itself is valid and + // must still load, now with a palette holding only the distinct colour. + const std::string xpm = "/* XPM */\n" +"\"2 1 2 1\"\n" +"\"a c #ff0000\"\n" +"\"a c #0000ff\"\n" +"\"aa\"\n" + ; + wxMemoryInputStream mis(xpm.data(), xpm.size()); + wxImage img; + REQUIRE( img.LoadFile(mis, wxBITMAP_TYPE_XPM) ); +#if wxUSE_PALETTE + CHECK( img.GetPalette().GetColoursCount() == 1 ); +#endif +} + #endif // wxUSE_XPM #if wxUSE_IFF From ea419d1a647cb9e1c80f27776aa831ac4f36cadf Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Mon, 15 Jun 2026 21:59:05 -0700 Subject: [PATCH 392/416] Fix drawing of very large bitmaps with GTK3 Creating a Cairo "similar image" surface seems to use a lot of memory for very large images, resulting in what is probably an out-of-memory condition. Using a plain image surface allows sizes up to the Cairo limit of 32767x32767 to be handled. See #25656 (cherry picked from commit ecb37e81afcf47a3254f367c8fdafdd216b5ec82) --- docs/changes.txt | 1 + src/gtk/bitmap.cpp | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8a518ec7a4c3..492401bf03f0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -300,6 +300,7 @@ wxGTK: - Fix copy/paste when a clipboard manager is running (David Edmundson, #26265). - Fix crash with EGL-based wxGLCanvas in wxNotebook (Florian Larysch, #26340). - Fix possible wxTextCtrl crash with GSpell attached (#26464). +- Fix drawing of very large bitmaps (#25656). - Fix memory leak in wxDataViewChoiceRenderer. - Fix resource leak when using EGL with X11 (Florian Larysch, #26341). - Fix showing title bar under Wayland with wxBORDER_NONE (#26357). diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 50db8e7601c0..75bdfe2a6d61 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -1348,19 +1348,36 @@ void wxBitmap::SetSourceSurface(cairo_t* cr, int x, int y, const wxColour* fg, c return; } + const GdkPixbuf* const pixbuf = bmpData->m_pixbufNoMask; + // Silently ignore attempts to draw uninitialized bitmap, // because other platforms don't complain about it - if (bmpData->m_pixbufNoMask == NULL) + if (pixbuf == NULL) return; if (bmpData->m_bpp == 1) SetSourceSurface1(bmpData, cr, x, y, fg, bg); - else + else if (size_t(bmpData->m_width) * bmpData->m_height < 3000 * 3000) { - gdk_cairo_set_source_pixbuf(cr, bmpData->m_pixbufNoMask, x, y); + // This uses cairo_surface_create_similar_image(), which results in + // a faster-drawing surface on X11, but requires more memory and + // restricts the maximum size to considerably less than a + // CAIRO_SURFACE_TYPE_IMAGE, so don't use it for very large sizes. + gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y); cairo_pattern_get_surface(cairo_get_source(cr), &bmpData->m_surface); cairo_surface_reference(bmpData->m_surface); } + else + { + cairo_surface_t* surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1); + cairo_t* cr2 = cairo_create(surf); + cairo_surface_destroy(surf); + gdk_cairo_set_source_pixbuf(cr2, pixbuf, 0, 0); + cairo_pattern_get_surface(cairo_get_source(cr2), &bmpData->m_surface); + cairo_surface_reference(bmpData->m_surface); + cairo_destroy(cr2); + cairo_set_source_surface(cr, bmpData->m_surface, x, y); + } } cairo_t* wxBitmap::CairoCreate() const From 03e45c46f67a71d7006b4d37e91c7e7cfba1f595 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 22 Jun 2026 15:52:15 +0200 Subject: [PATCH 393/416] Update version to 3.2.11 Run ./misc/scripts/inc_release, bakefile and autoconf. --- build/msw/makefile.gcc | 2 +- build/msw/makefile.vc | 2 +- build/msw/wx_setup.props | 2 +- build/osx/wxvers.xcconfig | 2 +- build/tools/msvs/getversion.bat | 2 +- configure | 20 ++++++++++---------- configure.in | 4 ++-- docs/doxygen/Doxyfile | 2 +- docs/readme.txt | 10 +++++----- include/wx/osx/config_xcode.h | 4 ++-- include/wx/version.h | 4 ++-- samples/minimal/Info_cocoa.plist | 8 ++++---- 12 files changed, 31 insertions(+), 31 deletions(-) diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index f37954a320b6..2d9c55eae34e 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -5989,7 +5989,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=10 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=11 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 5f29abc9c286..03a2413836d6 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -6456,7 +6456,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=2 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=10 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=11 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/wx_setup.props b/build/msw/wx_setup.props index 39d8f23808d3..5e7a13b2f435 100644 --- a/build/msw/wx_setup.props +++ b/build/msw/wx_setup.props @@ -5,7 +5,7 @@ - 3210 + 3211 32 msw vc diff --git a/build/osx/wxvers.xcconfig b/build/osx/wxvers.xcconfig index e9f3ffe4fe28..8cd157938551 100644 --- a/build/osx/wxvers.xcconfig +++ b/build/osx/wxvers.xcconfig @@ -1,4 +1,4 @@ // update this file with new version numbers DYLIB_COMPATIBILITY_VERSION = 3.2 -DYLIB_CURRENT_VERSION = 3.2.10 +DYLIB_CURRENT_VERSION = 3.2.11 diff --git a/build/tools/msvs/getversion.bat b/build/tools/msvs/getversion.bat index a95612769bca..3c8952cf59fd 100644 --- a/build/tools/msvs/getversion.bat +++ b/build/tools/msvs/getversion.bat @@ -1,3 +1,3 @@ set wxMAJOR_VERSION=3 set wxMINOR_VERSION=2 -set wxRELEASE_NUMBER=10 +set wxRELEASE_NUMBER=11 diff --git a/configure b/configure index c7578224ef97..72c0dd185f2d 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.10. +# Generated by GNU Autoconf 2.69 for wxWidgets 3.2.11. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='wxWidgets' PACKAGE_TARNAME='wxwidgets' -PACKAGE_VERSION='3.2.10' -PACKAGE_STRING='wxWidgets 3.2.10' +PACKAGE_VERSION='3.2.11' +PACKAGE_STRING='wxWidgets 3.2.11' PACKAGE_BUGREPORT='wx-dev@googlegroups.com' PACKAGE_URL='' @@ -2012,7 +2012,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wxWidgets 3.2.10 to adapt to many kinds of systems. +\`configure' configures wxWidgets 3.2.11 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2082,7 +2082,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wxWidgets 3.2.10:";; + short | recursive ) echo "Configuration of wxWidgets 3.2.11:";; esac cat <<\_ACEOF @@ -2589,7 +2589,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wxWidgets configure 3.2.10 +wxWidgets configure 3.2.11 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3406,7 +3406,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wxWidgets $as_me 3.2.10, which was +It was created by wxWidgets $as_me 3.2.11, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3869,7 +3869,7 @@ fi wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=10 +wx_release_number=11 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number @@ -47010,7 +47010,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wxWidgets $as_me 3.2.10, which was +This file was extended by wxWidgets $as_me 3.2.11, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -47076,7 +47076,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wxWidgets config.status 3.2.10 +wxWidgets config.status 3.2.11 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index d16f1c27072b..234475d2bf59 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- -AC_INIT([wxWidgets], [3.2.10], [wx-dev@googlegroups.com]) +AC_INIT([wxWidgets], [3.2.11], [wx-dev@googlegroups.com]) dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package AC_CONFIG_SRCDIR([wx-config.in]) @@ -40,7 +40,7 @@ dnl wx_release_number += 1 wx_major_version_number=3 wx_minor_version_number=2 -wx_release_number=10 +wx_release_number=11 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 2ef2416ff013..b56c391d093c 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = wxWidgets -PROJECT_NUMBER = 3.2.10 +PROJECT_NUMBER = 3.2.11 PROJECT_BRIEF = PROJECT_LOGO = logo.png OUTPUT_DIRECTORY = out diff --git a/docs/readme.txt b/docs/readme.txt index 63b958bd22bc..5c908b0afdff 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -wxWidgets 3.2.10 Release Notes +wxWidgets 3.2.11 Release Notes ============================= Welcome to the new stable release of wxWidgets, a free and open source @@ -16,7 +16,7 @@ more about wxWidgets at: Documentation is available online at: -* https://docs.wxwidgets.org/3.2.10/ +* https://docs.wxwidgets.org/3.2.11/ wxWidgets sources and binaries for the selected platforms are available for download from: @@ -25,9 +25,9 @@ download from: or, for a more more permanent but less convenient to use link, from -* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.10/ +* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.11/ -Please see https://docs.wxwidgets.org/3.2.10/overview_install.html for full +Please see https://docs.wxwidgets.org/3.2.11/overview_install.html for full installation instructions. @@ -56,7 +56,7 @@ Some other bugs fixed in this release: Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.10/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.11/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x releases, so the existing applications don't even need to be rebuilt to profit from all the diff --git a/include/wx/osx/config_xcode.h b/include/wx/osx/config_xcode.h index 16c351880128..e9d692ee9697 100644 --- a/include/wx/osx/config_xcode.h +++ b/include/wx/osx/config_xcode.h @@ -121,9 +121,9 @@ #define PACKAGE_BUGREPORT "wx-dev@googlegroups.com" #define PACKAGE_NAME "wxWidgets" -#define PACKAGE_STRING "wxWidgets 3.2.10" +#define PACKAGE_STRING "wxWidgets 3.2.11" #define PACKAGE_TARNAME "wxwidgets" -#define PACKAGE_VERSION "3.2.10" +#define PACKAGE_VERSION "3.2.11" // for jpeg diff --git a/include/wx/version.h b/include/wx/version.h index 345bed17a4d0..9d4ada67bdcb 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -27,9 +27,9 @@ /* NB: this file is parsed by automatic tools so don't change its format! */ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 2 -#define wxRELEASE_NUMBER 10 +#define wxRELEASE_NUMBER 11 #define wxSUBRELEASE_NUMBER 0 -#define wxVERSION_STRING wxT("wxWidgets 3.2.10") +#define wxVERSION_STRING wxT("wxWidgets 3.2.11") /* nothing to update below this line when updating the version */ /* ---------------------------------------------------------------------------- */ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 31ace757b753..3db374e73728 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.2.10, (c) 2005-2026 wxWidgets + $(PRODUCT_NAME) version 3.2.11, (c) 2005-2026 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,15 +15,15 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.2.10, (c) 2005-2026 wxWidgets + 3.2.11, (c) 2005-2026 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 3.2.10 + 3.2.11 CFBundleVersion - 3.2.10 + 3.2.11 NSHumanReadableCopyright Copyright 2005-2026 wxWidgets NSPrincipalClass From 17b5315c72e1e680190e2f7bda70f39990b03d5e Mon Sep 17 00:00:00 2001 From: Jorge Moraleda Date: Sun, 21 Jun 2026 18:40:25 +0800 Subject: [PATCH 394/416] Add wxGrid::GetFrozenRowLabelWindow() and GetFrozenColLabelWindow() These accessors for the frozen row and column label sub-windows were missing from the public API even though the equivalent data cell windows (GetFrozenRowGridWindow/GetFrozenColGridWindow) are already public. Without them it is impossible to bind events (e.g. EVT_MOTION) to the frozen label strips from outside the wxGrid implementation. See #26617. (cherry picked from commit e069b7f4b9737b634bd727fe124854bdc3085514) Co-authored-by: Vadim Zeitlin --- docs/changes.txt | 1 + include/wx/generic/grid.h | 4 ++++ interface/wx/grid.h | 22 ++++++++++++++++++++++ version-script.in | 8 ++++++++ 4 files changed, 35 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 492401bf03f0..3f4f5bbc318f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -294,6 +294,7 @@ All (GUI): - Fix out-of-bounds table read in wxMBConvUTF7::ToWChar() (dxbjavid, #26517). - Fix buffer overflow reading corrupted message catalogs (dxbjavid, #26513). - Fix buffer overflow for too big tables in wxHTML (dxbjavid, #26554). +- Add wxGrid::GetFrozen{Row,Col}LabelWindow() (Jorge Moraleda, #26617). wxGTK: diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 1bd58bbf047f..ceac203c38dd 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -2335,6 +2335,10 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas wxWindow* GetFrozenCornerGridWindow()const { return (wxWindow*)m_frozenCornerGridWin; } wxWindow* GetFrozenRowGridWindow() const { return (wxWindow*)m_frozenRowGridWin; } wxWindow* GetFrozenColGridWindow() const { return (wxWindow*)m_frozenColGridWin; } +#if wxABI_VERSION >= 30211 + wxWindow* GetFrozenRowLabelWindow() const { return (wxWindow*)m_rowFrozenLabelWin; } + wxWindow* GetFrozenColLabelWindow() const { return m_colFrozenLabelWin; } +#endif // wxABI_VERSION >= 30211 wxWindow* GetGridRowLabelWindow() const { return (wxWindow*)m_rowLabelWin; } wxWindow* GetGridColLabelWindow() const { return m_colLabelWin; } wxWindow* GetGridCornerLabelWindow() const { return (wxWindow*)m_cornerLabelWin; } diff --git a/interface/wx/grid.h b/interface/wx/grid.h index 129a2b5ad607..db7fa1412632 100644 --- a/interface/wx/grid.h +++ b/interface/wx/grid.h @@ -6049,6 +6049,28 @@ class wxGrid : public wxScrolledCanvas */ wxWindow* GetFrozenColGridWindow() const; + /** + Return the row labels window containing frozen cells. + + This window is shown only when there are frozen rows. + This window is not shown if the rows labels were hidden using + HideRowLabels(). + + @since 3.2.11 + */ + wxWindow* GetFrozenRowLabelWindow() const; + + /** + Return the column labels window containing frozen cells. + + This window is shown only when there are frozen columns. + This window is not shown if the columns labels were hidden using + HideColLabels(). + + @since 3.2.11 + */ + wxWindow* GetFrozenColLabelWindow() const; + /** Return the row labels window. diff --git a/version-script.in b/version-script.in index 696179e93904..74f462eb97fb 100644 --- a/version-script.in +++ b/version-script.in @@ -27,6 +27,14 @@ # build/bakefiles/version.bkl to indicate that new APIs have been added and # rebake! +# public symbols added in 3.2.11 (please keep in alphabetical order): +@WX_VERSION_TAG@.11 { + extern "C++" { + "wxGrid::GetFrozenRowLabelWindow() const"; + "wxGrid::GetFrozenColLabelWindow() const"; + }; +}; + # public symbols added in 3.2.10 (please keep in alphabetical order): @WX_VERSION_TAG@.10 { extern "C++" { From e496bf413514c8fdeada35cf03d54a40757707c3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 23 Jun 2026 22:55:06 +0200 Subject: [PATCH 395/416] Use wxVector<> instead of vector<> in wxSocket code Amend the changes of 644b99da6c (Make wxSocket::Peek() work with UDP too, 2023-06-03), see #23594, #23604. --- src/common/socket.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/socket.cpp b/src/common/socket.cpp index caa515c10ed6..5aeb151982cd 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -41,6 +41,7 @@ #include "wx/thread.h" #include "wx/evtloop.h" #include "wx/link.h" +#include "wx/vector.h" #include "wx/private/fd.h" #include "wx/private/socket.h" @@ -1157,7 +1158,7 @@ wxSocketBase& wxSocketBase::Peek(void* buffer, wxUint32 nbytes) void* readbuf; wxUint32 readbytes; const wxUint32 DGRAM_MIN_READ = 65536; // 64K is enough for UDP - std::vector peekbuf; + wxVector peekbuf; bool usePeekbuf = !m_impl->m_stream && nbytes < DGRAM_MIN_READ; if ( usePeekbuf ) { From 4d219f495fa5b5663a9ecc1b5ecdffc5ad7db3ea Mon Sep 17 00:00:00 2001 From: Javid Khan Date: Mon, 29 Jun 2026 21:49:43 +0530 Subject: [PATCH 396/416] Avoid buffer overflow when parsing AFM files Limit sscanf field widths to avoid overflowing fixed size buffers in wxPostScriptDC code. See #26645. (cherry picked from commit b0e297a0caab1d3b01dfa76f420529aa18c4a00d) --- src/generic/dcpsg.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index 9e47ad6a4bdd..c6550f6e06db 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -2131,7 +2131,7 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string, /* A.) check for descender definition */ if (strncmp(line,"Descender",9)==0) { - if ((sscanf(line,"%s%d",descString,&lastDescender)!=2) || + if ((sscanf(line,"%19s%d",descString,&lastDescender)!=2) || (strcmp(descString,"Descender")!=0)) { wxLogDebug( wxT("AFM-file '%s': line '%s' has error (bad descender)"), afmName,line ); @@ -2140,7 +2140,7 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string, /* JC 1.) check for UnderlinePosition */ else if(strncmp(line,"UnderlinePosition",17)==0) { - if ((sscanf(line,"%s%lf",upString,&UnderlinePosition)!=2) || + if ((sscanf(line,"%29s%lf",upString,&UnderlinePosition)!=2) || (strcmp(upString,"UnderlinePosition")!=0)) { wxLogDebug( wxT("AFM-file '%s': line '%s' has error (bad UnderlinePosition)"), afmName, line ); @@ -2149,7 +2149,7 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string, /* JC 2.) check for UnderlineThickness */ else if(strncmp(line,"UnderlineThickness",18)==0) { - if ((sscanf(line,"%s%lf",utString,&UnderlineThickness)!=2) || + if ((sscanf(line,"%29s%lf",utString,&UnderlineThickness)!=2) || (strcmp(utString,"UnderlineThickness")!=0)) { wxLogDebug( wxT("AFM-file '%s': line '%s' has error (bad UnderlineThickness)"), afmName, line ); @@ -2158,7 +2158,7 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string, /* JC 3.) check for EncodingScheme */ else if(strncmp(line,"EncodingScheme",14)==0) { - if ((sscanf(line,"%s%s",utString,encString)!=2) || + if ((sscanf(line,"%29s%49s",utString,encString)!=2) || (strcmp(utString,"EncodingScheme")!=0)) { wxLogDebug( wxT("AFM-file '%s': line '%s' has error (bad EncodingScheme)"), afmName, line ); @@ -2172,7 +2172,7 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string, /* B.) check for char-width */ else if(strncmp(line,"C ",2)==0) { - if (sscanf(line,"%s%d%s%s%d",cString,&ascii,semiString,WXString,&cWidth)!=5) + if (sscanf(line,"%9s%d%9s%9s%d",cString,&ascii,semiString,WXString,&cWidth)!=5) { wxLogDebug(wxT("AFM-file '%s': line '%s' has an error (bad character width)"),afmName,line); } From 2c980e2f09aa4cac82b4456c05dbb892702d4ca0 Mon Sep 17 00:00:00 2001 From: Lunar-YZ <49775921+Lunar-YZ@users.noreply.github.com> Date: Wed, 1 Jul 2026 17:43:35 +0800 Subject: [PATCH 397/416] Fix wxPG macros when wxNO_IMPLICIT_WXSTRING_ENCODING is defined Use wide-char literal string instead of an ASCII one to fix compilation. See #26651. (cherry picked from commit aae2d7062c427b449c61e3d343be7c7aba45bfd6) --- docs/changes.txt | 1 + include/wx/propgrid/propgriddefs.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3f4f5bbc318f..55b0768ce553 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -295,6 +295,7 @@ All (GUI): - Fix buffer overflow reading corrupted message catalogs (dxbjavid, #26513). - Fix buffer overflow for too big tables in wxHTML (dxbjavid, #26554). - Add wxGrid::GetFrozen{Row,Col}LabelWindow() (Jorge Moraleda, #26617). +- Fix wxPG macros with wxNO_IMPLICIT_WXSTRING_ENCODING (Lunar-YZ, #26651). wxGTK: diff --git a/include/wx/propgrid/propgriddefs.h b/include/wx/propgrid/propgriddefs.h index bd7eb59a663f..13a31d9f8188 100644 --- a/include/wx/propgrid/propgriddefs.h +++ b/include/wx/propgrid/propgriddefs.h @@ -552,7 +552,7 @@ expdecl const classname& classname##RefFromVariant( const wxVariant& variant ) \ #define WX_PG_IMPLEMENT_VARIANT_DATA_GETTER(classname, expdecl) \ expdecl classname& operator << ( classname &value, const wxVariant &variant )\ {\ - wxASSERT( variant.GetType() == #classname );\ + wxASSERT( variant.GetType() == wxS(#classname) );\ \ classname##VariantData *data = (classname##VariantData*) variant.GetData();\ value = data->GetValue();\ From a6eb870f36d21d70a085054aaa69ebc7b8bdd113 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 21:49:21 +0200 Subject: [PATCH 398/416] CMake: Always install common headers backport of d3cdfc8882d379e8e40e33a6be6ee82c341e5cfa --- build/cmake/functions.cmake | 13 +++++---- build/cmake/lib/CMakeLists.txt | 38 +++++++------------------ build/cmake/lib/aui/CMakeLists.txt | 5 ++++ build/cmake/lib/gl/CMakeLists.txt | 5 ++++ build/cmake/lib/html/CMakeLists.txt | 5 ++++ build/cmake/lib/media/CMakeLists.txt | 5 ++++ build/cmake/lib/net/CMakeLists.txt | 6 ++++ build/cmake/lib/propgrid/CMakeLists.txt | 5 ++++ build/cmake/lib/qa/CMakeLists.txt | 5 ++++ build/cmake/lib/ribbon/CMakeLists.txt | 5 ++++ build/cmake/lib/richtext/CMakeLists.txt | 5 ++++ build/cmake/lib/stc/CMakeLists.txt | 5 ++++ build/cmake/lib/webview/CMakeLists.txt | 5 ++++ build/cmake/lib/xml/CMakeLists.txt | 5 ++++ build/cmake/lib/xrc/CMakeLists.txt | 5 ++++ 15 files changed, 84 insertions(+), 33 deletions(-) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 4b173e7074cb..526b76e43117 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -58,17 +58,20 @@ macro(wx_append_sources src_var source_base_name) endif() if(DEFINED ${source_base_name}_HDR) wx_add_headers(${src_var} ${${source_base_name}_HDR}) - - list(APPEND wxINSTALL_HEADERS ${${source_base_name}_HDR}) - set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) + wx_append_install_headers(${source_base_name}_HDR) endif() if(DEFINED ${source_base_name}_RSC) - list(APPEND wxINSTALL_HEADERS ${${source_base_name}_RSC}) - set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) + wx_append_install_headers(${source_base_name}_RSC) endif() endmacro() +# Add headers from a variable to the list of headers to install +macro(wx_append_install_headers header_base_name) + list(APPEND wxINSTALL_HEADERS ${${header_base_name}}) + set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) +endmacro() + # Add prefix to list of items # wx_list_add_prefix( ) macro(wx_list_add_prefix out_var prefix) diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 60d56d55e627..98a2a7a867eb 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -29,51 +29,33 @@ foreach(LIB IN LISTS LIBS_THIRDPARTY) include(${LIB}.cmake) endforeach() -# add_opt_lib() -# Add library which may have been disabled by wxUSE_... -macro(add_opt_lib name var_name) - if(${var_name}) - list(APPEND LIBS ${name}) - endif() -endmacro() - # Define base libraries -set(LIBS base) - -# wxNet should be built if either wxUSE_SOCKETS or wxUSE_WEBREQUEST is on. -if(wxUSE_SOCKETS OR wxUSE_WEBREQUEST) - set(wxUSE_NET ON) -else() - set(wxUSE_NET OFF) -endif() -add_opt_lib(net wxUSE_NET) +set(LIBS base net) # Define UI libraries if(wxUSE_GUI) - list(APPEND LIBS core adv) - foreach(lib + list(APPEND LIBS + core + adv aui + gl html + media propgrid + qa ribbon richtext - webview stc + webview xrc - ) - string(TOUPPER ${lib} _name_upper) - add_opt_lib(${lib} wxUSE_${_name_upper}) - endforeach() - add_opt_lib(media wxUSE_MEDIACTRL) - add_opt_lib(gl wxUSE_OPENGL) - add_opt_lib(qa wxUSE_DEBUGREPORT) + ) endif() # wxUSE_GUI # Include XML library last # In the monolithic build, where all target properties (include dirs) from different targets are concatenated, # wxml might include system expat, which might use Mono, which has it's own copy of png. # Thus to ensure wx's core library includes the right png class, core must be processed first before xml -add_opt_lib(xml wxUSE_XML) +list(APPEND LIBS xml) # Include cmake file for every library foreach(LIB ${LIBS}) diff --git a/build/cmake/lib/aui/CMakeLists.txt b/build/cmake/lib/aui/CMakeLists.txt index 10828136cdbb..7ae4e6c87265 100644 --- a/build/cmake/lib/aui/CMakeLists.txt +++ b/build/cmake/lib/aui/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_AUI) + wx_append_install_headers(AUI_CMN_HDR) + return() +endif() + wx_append_sources(AUI_FILES AUI_CMN) if(WXMSW) diff --git a/build/cmake/lib/gl/CMakeLists.txt b/build/cmake/lib/gl/CMakeLists.txt index d7541577fe70..177b12e126d1 100644 --- a/build/cmake/lib/gl/CMakeLists.txt +++ b/build/cmake/lib/gl/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_OPENGL) + wx_append_install_headers(OPENGL_CMN_HDR) + return() +endif() + wx_append_sources(GL_FILES OPENGL_CMN) if(WXMSW) diff --git a/build/cmake/lib/html/CMakeLists.txt b/build/cmake/lib/html/CMakeLists.txt index c4d6e2172e84..ea445c18db97 100644 --- a/build/cmake/lib/html/CMakeLists.txt +++ b/build/cmake/lib/html/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_HTML) + wx_append_install_headers(HTML_CMN_HDR) + return() +endif() + wx_append_sources(HTML_FILES HTML_CMN) if(WXMSW OR wxUSE_LIBMSPACK) diff --git a/build/cmake/lib/media/CMakeLists.txt b/build/cmake/lib/media/CMakeLists.txt index 9941e5d5cd46..3fbe4b12ed77 100644 --- a/build/cmake/lib/media/CMakeLists.txt +++ b/build/cmake/lib/media/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_MEDIACTRL) + wx_append_install_headers(MEDIA_CMN_HDR) + return() +endif() + wx_append_sources(MEDIA_FILES MEDIA_CMN) if(WXMSW) diff --git a/build/cmake/lib/net/CMakeLists.txt b/build/cmake/lib/net/CMakeLists.txt index d24e83570cad..8d97c960009a 100644 --- a/build/cmake/lib/net/CMakeLists.txt +++ b/build/cmake/lib/net/CMakeLists.txt @@ -7,6 +7,12 @@ # Licence: wxWindows licence ############################################################################# +# wxNet should be built if either wxUSE_SOCKETS or wxUSE_WEBREQUEST is on. +if(NOT wxUSE_SOCKETS AND NOT wxUSE_WEBREQUEST) + wx_append_install_headers(NET_CMN_HDR) + return() +endif() + wx_append_sources(NET_FILES NET_CMN) if(WIN32) diff --git a/build/cmake/lib/propgrid/CMakeLists.txt b/build/cmake/lib/propgrid/CMakeLists.txt index 71f2690d6bda..b41c7ea8cfdf 100644 --- a/build/cmake/lib/propgrid/CMakeLists.txt +++ b/build/cmake/lib/propgrid/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_PROPGRID) + wx_append_install_headers(PROPGRID_HDR) + return() +endif() + wx_append_sources(PROPGRID_FILES PROPGRID) wx_add_library(wxpropgrid ${PROPGRID_FILES}) diff --git a/build/cmake/lib/qa/CMakeLists.txt b/build/cmake/lib/qa/CMakeLists.txt index 1efa85e25542..3876fa1f4946 100644 --- a/build/cmake/lib/qa/CMakeLists.txt +++ b/build/cmake/lib/qa/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_DEBUGREPORT) + wx_append_install_headers(QA_HDR) + return() +endif() + wx_append_sources(QA_FILES QA) wx_add_library(wxqa ${QA_FILES}) diff --git a/build/cmake/lib/ribbon/CMakeLists.txt b/build/cmake/lib/ribbon/CMakeLists.txt index a35e55161470..5a9ef8f57d9d 100644 --- a/build/cmake/lib/ribbon/CMakeLists.txt +++ b/build/cmake/lib/ribbon/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_RIBBON) + wx_append_install_headers(RIBBON_HDR) + return() +endif() + wx_append_sources(RIBBON_FILES RIBBON) wx_add_library(wxribbon ${RIBBON_FILES}) diff --git a/build/cmake/lib/richtext/CMakeLists.txt b/build/cmake/lib/richtext/CMakeLists.txt index 89c618fd6986..013806c0c4b6 100644 --- a/build/cmake/lib/richtext/CMakeLists.txt +++ b/build/cmake/lib/richtext/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_RICHTEXT) + wx_append_install_headers(RICHTEXT_HDR) + return() +endif() + wx_append_sources(RICHTEXT_FILES RICHTEXT) wx_add_library(wxrichtext ${RICHTEXT_FILES}) diff --git a/build/cmake/lib/stc/CMakeLists.txt b/build/cmake/lib/stc/CMakeLists.txt index 1116186833b0..6d68fa1a4cf3 100644 --- a/build/cmake/lib/stc/CMakeLists.txt +++ b/build/cmake/lib/stc/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_STC) + wx_append_install_headers(STC_CMN_HDR) + return() +endif() + wx_append_sources(STC_FILES STC_CMN) if(WXOSX_COCOA) diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index 373832879058..718dd6959023 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_WEBVIEW) + wx_append_install_headers(WEBVIEW_CMN_HDR) + return() +endif() + macro(wx_set_webview2_arch) if(wxPLATFORM_ARCH) set(WEBVIEW2_ARCH ${wxPLATFORM_ARCH}) diff --git a/build/cmake/lib/xml/CMakeLists.txt b/build/cmake/lib/xml/CMakeLists.txt index d4690a0afb5d..623e06c5ad21 100644 --- a/build/cmake/lib/xml/CMakeLists.txt +++ b/build/cmake/lib/xml/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_XML) + wx_append_install_headers(XML_HDR) + return() +endif() + wx_append_sources(XML_FILES XML) wx_add_library(wxxml IS_BASE ${XML_FILES}) wx_lib_link_libraries(wxxml PRIVATE ${EXPAT_LIBRARIES}) diff --git a/build/cmake/lib/xrc/CMakeLists.txt b/build/cmake/lib/xrc/CMakeLists.txt index 453525eab551..521b0a843465 100644 --- a/build/cmake/lib/xrc/CMakeLists.txt +++ b/build/cmake/lib/xrc/CMakeLists.txt @@ -7,6 +7,11 @@ # Licence: wxWindows licence ############################################################################# +if(NOT wxUSE_XRC) + wx_append_install_headers(XRC_HDR) + return() +endif() + wx_append_sources(XRC_FILES XRC) wx_add_library(wxxrc ${XRC_FILES}) From 18d62302c6b2c6004698dc2f7bc2ae9a460625a4 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 21:55:32 +0200 Subject: [PATCH 399/416] CMake: Install with relative symlinks backport of 24571ab89db0fda94a77fc56398b146af58f36c0 --- build/cmake/config.cmake | 2 +- build/cmake/functions.cmake | 36 ++++++++++++++++++++++++++++++++ build/cmake/install.cmake | 13 ++++++------ build/cmake/options.cmake | 2 ++ build/cmake/utils/CMakeLists.txt | 14 ++++++------- 5 files changed, 51 insertions(+), 16 deletions(-) diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index 69d3a19c8309..5defece37f74 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -92,7 +92,7 @@ function(wx_write_config_inplace) "wx-config-inplace.in" "inplace-${TOOLCHAIN_FULLNAME}" ) - if(WIN32_MSVC_NAMING) + if(WIN32_MSVC_NAMING OR NOT wxBUILD_INSTALL_USE_SYMLINK) set(COPY_CMD copy) else() set(COPY_CMD create_symlink) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 526b76e43117..5ab97602712e 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -93,6 +93,42 @@ macro(wx_install) endif() endmacro() +# wx_install_symlink(...) +# Create symlink dst pointing to src +# try different symlink and copy methods until one succeeds +macro(wx_install_symlink src dst) + if(wxBUILD_INSTALL) + install(CODE " + set(SYMLINK_SRC \"${src}\") + set(SYMLINK_DST \"${dst}\") + message(STATUS \"Installing: \${SYMLINK_DST}\") + + if(CMAKE_VERSION GREATER_EQUAL \"3.17\") + execute_process(COMMAND \"\${CMAKE_COMMAND}\" -E rm -f \"\${SYMLINK_DST}\") + else() + execute_process(COMMAND \"\${CMAKE_COMMAND}\" -E remove -f \"\${SYMLINK_DST}\") + endif() + + set(SYMLINK_RES 1) + set(wxBUILD_INSTALL_USE_SYMLINK ${wxBUILD_INSTALL_USE_SYMLINK}) + if(wxBUILD_INSTALL_USE_SYMLINK) + if(SYMLINK_RES) + execute_process(COMMAND ln -s --relative \"\${SYMLINK_SRC}\" \"\${SYMLINK_DST}\" RESULT_VARIABLE SYMLINK_RES OUTPUT_QUIET ERROR_QUIET) + endif() + if(SYMLINK_RES) + execute_process(COMMAND ln -s \"\${SYMLINK_SRC}\" \"\${SYMLINK_DST}\" RESULT_VARIABLE SYMLINK_RES OUTPUT_QUIET ERROR_QUIET) + endif() + if(SYMLINK_RES) + execute_process(COMMAND \"\${CMAKE_COMMAND}\" -E create_symlink \"\${SYMLINK_SRC}\" \"\${SYMLINK_DST}\" RESULT_VARIABLE SYMLINK_RES) + endif() + endif() + if(SYMLINK_RES) + execute_process(COMMAND \"\${CMAKE_COMMAND}\" -E copy \"\${SYMLINK_SRC}\" \"\${SYMLINK_DST}\" RESULT_VARIABLE SYMLINK_RES) + endif() + ") + endif() +endmacro() + # Get a valid flavour name with optional prefix macro(wx_get_flavour flavour prefix) if(wxBUILD_FLAVOUR) diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake index 4d8d42fd7690..4447b1b6d8fb 100644 --- a/build/cmake/install.cmake +++ b/build/cmake/install.cmake @@ -66,13 +66,12 @@ else() wx_get_install_platform_dir(runtime) install(DIRECTORY DESTINATION "${runtime_dir}") - install(CODE "execute_process( \ - COMMAND ${CMAKE_COMMAND} -E create_symlink \ - \"${CMAKE_INSTALL_PREFIX}/${library_dir}/wx/config/${wxBUILD_FILE_ID}\" \ - \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config\" \ - )" - ) - list(APPEND WX_EXTRA_UNINSTALL_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config") + set(CONFIG_DIR "\\\$ENV{DESTDIR}\\\${CMAKE_INSTALL_PREFIX}") + set(CONFIG_SRC "${CONFIG_DIR}/${library_dir}/wx/config/${wxBUILD_FILE_ID}") + set(CONFIG_DST "${CONFIG_DIR}/${runtime_dir}/wx-config") + wx_install_symlink(${CONFIG_SRC} ${CONFIG_DST}) + + list(APPEND WX_EXTRA_UNINSTALL_FILES "\"${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config\"") endif() wx_get_install_dir(library) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 811d689f1a0e..fe31020e773f 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -94,6 +94,8 @@ wx_option(wxBUILD_INSTALL_PLATFORM_SUBDIR "use platform specific sub-directory ( mark_as_advanced(wxBUILD_INSTALL_PLATFORM_SUBDIR) wx_option(wxBUILD_INSTALL_PDB "install pdb files in the runtime directory (MSVC-naming)" OFF) mark_as_advanced(wxBUILD_INSTALL_PDB) +wx_option(wxBUILD_INSTALL_USE_SYMLINK "use symlinks when possible, disable to always use copy" ON) +mark_as_advanced(wxBUILD_INSTALL_USE_SYMLINK) # Use the MSVC/makefile naming convention, or the configure naming convention, # this is the same check as used in FindwxWidgets. diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt index 608351ac4231..dd2d82beb0b8 100644 --- a/build/cmake/utils/CMakeLists.txt +++ b/build/cmake/utils/CMakeLists.txt @@ -38,14 +38,12 @@ if(wxUSE_XRC) set(EXE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX}) endif() - # Don't use wx_install() here to preserve escaping. - install(CODE "execute_process( \ - COMMAND ${CMAKE_COMMAND} -E create_symlink \ - \"${CMAKE_INSTALL_PREFIX}/${runtime_dir}/${wxrc_output_name}${EXE_SUFFIX}\" \ - \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wxrc${EXE_SUFFIX}\" \ - )" - ) - list(APPEND WX_EXTRA_UNINSTALL_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wxrc${EXE_SUFFIX}") + set(WXRC_DIR "\\\$ENV{DESTDIR}\\\${CMAKE_INSTALL_PREFIX}") + set(WXRC_SRC "${WXRC_DIR}/${runtime_dir}/${wxrc_output_name}${EXE_SUFFIX}") + set(WXRC_DST "${WXRC_DIR}/${runtime_dir}/wxrc${EXE_SUFFIX}") + wx_install_symlink(${WXRC_SRC} ${WXRC_DST}) + + list(APPEND WX_EXTRA_UNINSTALL_FILES "\"${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wxrc${EXE_SUFFIX}\"") set(WX_EXTRA_UNINSTALL_FILES ${WX_EXTRA_UNINSTALL_FILES} PARENT_SCOPE) endif() endif() From 558f956c9e12207dbb1f838da0cee659e9fa0c01 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 22:07:18 +0200 Subject: [PATCH 400/416] CMake: Add wxbase_only target backport of 62403ce1e04b4efa50dfb7a4c749a54fc23d09d9 Import install properties of static libraries backport of b17a03da7f8ada0433dac4bb80d867b1b1a7b4ce --- build/cmake/functions.cmake | 16 ++++--- build/cmake/lib/CMakeLists.txt | 1 + build/cmake/lib/base/CMakeLists.txt | 10 ++++ build/cmake/wxWidgetsConfig.cmake.in | 68 ++++++++++++++++++---------- 4 files changed, 66 insertions(+), 29 deletions(-) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 5ab97602712e..0d7088b72739 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -14,6 +14,8 @@ include(GNUInstallDirs) # List of libraries added via wx_add_library() to use for wx-config set(wxLIB_TARGETS) +# List of the (static) builtin libraries to use in wxWidgetsConfig.cmake +set(wxLIB_BUILTIN_TARGETS) # List of headers added via wx_append_sources() to use for install set(wxINSTALL_HEADERS) # List of files not included in the install manifest @@ -751,6 +753,9 @@ endfunction() # Add a third party builtin library function(wx_add_builtin_library name) + list(APPEND wxLIB_BUILTIN_TARGETS ${name}) + set(wxLIB_BUILTIN_TARGETS ${wxLIB_BUILTIN_TARGETS} PARENT_SCOPE) + wx_list_add_prefix(src_list "${wxSOURCE_DIR}/" ${ARGN}) list(GET src_list 0 src_file) @@ -993,17 +998,16 @@ function(wx_add name group) endif() # All applications use at least the base library other libraries - # will have to be added with wx_link_sample_libraries() - wx_exe_link_libraries(${target_name} wxbase) - if(NOT APP_CONSOLE) - # UI applications always require core - wx_exe_link_libraries(${target_name} wxcore) + if(APP_CONSOLE) + wx_exe_link_libraries(${target_name} wxbase_only) else() - target_compile_definitions(${target_name} PRIVATE wxUSE_GUI=0 wxUSE_BASE=1) + wx_exe_link_libraries(${target_name} wxcore) endif() + if(APP_LIBRARIES) wx_exe_link_libraries(${target_name} ${APP_LIBRARIES}) endif() + if(APP_DEFINITIONS) target_compile_definitions(${target_name} PRIVATE ${APP_DEFINITIONS}) endif() diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 98a2a7a867eb..83eb675635d4 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -97,4 +97,5 @@ endif() # Propagate variable(s) to parent scope set(wxLIB_TARGETS ${wxLIB_TARGETS} PARENT_SCOPE) +set(wxLIB_BUILTIN_TARGETS ${wxLIB_BUILTIN_TARGETS} PARENT_SCOPE) set(wxINSTALL_HEADERS ${wxINSTALL_HEADERS} PARENT_SCOPE) diff --git a/build/cmake/lib/base/CMakeLists.txt b/build/cmake/lib/base/CMakeLists.txt index 3a45abb0c5e3..2364b6494004 100644 --- a/build/cmake/lib/base/CMakeLists.txt +++ b/build/cmake/lib/base/CMakeLists.txt @@ -82,3 +82,13 @@ if(APPLE) elseif(UNIX) wx_lib_link_libraries(wxbase PRIVATE ${CMAKE_DL_LIBS}) endif() + + +add_library(wxbase_only INTERFACE) +add_library(wx::base_only ALIAS wxbase_only) +add_library(wxWidgets::base_only ALIAS wxbase_only) +target_link_libraries(wxbase_only INTERFACE wxbase) +target_compile_definitions(wxbase_only INTERFACE wxUSE_GUI=0) +wx_install(TARGETS wxbase_only EXPORT wxWidgetsTargets) +list(APPEND wxLIB_TARGETS wxbase_only) +set(wxLIB_TARGETS ${wxLIB_TARGETS} PARENT_SCOPE) diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in index 2f3a735d920c..7b19e746c167 100644 --- a/build/cmake/wxWidgetsConfig.cmake.in +++ b/build/cmake/wxWidgetsConfig.cmake.in @@ -81,17 +81,41 @@ macro(wx_copy_target ns name libname) get_target_property(target_type wx::${libname} TYPE) if(target_type STREQUAL STATIC_LIBRARY) add_library(${ns}::${name} STATIC IMPORTED) - else() + elseif(target_type STREQUAL SHARED_LIBRARY) add_library(${ns}::${name} SHARED IMPORTED) + elseif(target_type STREQUAL INTERFACE_LIBRARY) + add_library(${ns}::${name} INTERFACE IMPORTED) + else() + message(FATAL_ERROR "Unsupported library type: ${target_type}") endif() - wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_CONFIGURATIONS) wx_inherit_property(wx::${libname} ${ns}::${name} INTERFACE_COMPILE_DEFINITIONS) wx_inherit_property(wx::${libname} ${ns}::${name} INTERFACE_INCLUDE_DIRECTORIES) wx_inherit_property(wx::${libname} ${ns}::${name} INTERFACE_LINK_LIBRARIES) - wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LINK_INTERFACE_LANGUAGES) - wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LOCATION) - wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_IMPLIB) - wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LINK_DEPENDENT_LIBRARIES) + if(target_type STREQUAL STATIC_LIBRARY OR target_type STREQUAL SHARED_LIBRARY) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_CONFIGURATIONS) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LINK_INTERFACE_LANGUAGES) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LOCATION) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_IMPLIB) + wx_inherit_property(wx::${libname} ${ns}::${name} IMPORTED_LINK_DEPENDENT_LIBRARIES) + endif() +endmacro() + +macro(wx_map_release libname) + # use the Release configuration for MinSizeRel and RelWithDebInfo configurations + # only when Release target exists, and MinSizeRel/RelWithDebInfo doesn't exist + get_target_property(configs wx::${libname} IMPORTED_CONFIGURATIONS) + if("RELEASE" IN_LIST configs) + if(NOT "MINSIZEREL" IN_LIST configs) + if("MinSizeRel" IN_LIST CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") + set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_MINSIZEREL "Release") + endif() + endif() + if(NOT "RELWITHDEBINFO" IN_LIST configs) + if("RelWithDebInfo" IN_LIST CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO "Release") + endif() + endif() + endif() endmacro() # for compatibility with FindwxWidgets @@ -108,6 +132,8 @@ endif() set(@PROJECT_NAME@_COMPONENTS) foreach(libname @wxLIB_TARGETS@) if(TARGET wx::${libname}) + wx_map_release(${libname}) + # remove wx prefix from component name string(SUBSTRING ${libname} 2 -1 name) @@ -116,23 +142,7 @@ foreach(libname @wxLIB_TARGETS@) set(@PROJECT_NAME@_${name}_FOUND 1) set(@PROJECT_NAME@_FIND_REQUIRED_${name} 1) - # use the Release configuration for MinSizeRel and RelWithDebInfo configurations - # only when Release target exists, and MinSizeRel/RelWithDebInfo doesn't exist - get_target_property(configs wx::${libname} IMPORTED_CONFIGURATIONS) - if("RELEASE" IN_LIST configs) - if(NOT "MINSIZEREL" IN_LIST configs) - if("MinSizeRel" IN_LIST CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") - set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_MINSIZEREL "Release") - endif() - endif() - if(NOT "RELWITHDEBINFO" IN_LIST configs) - if("RelWithDebInfo" IN_LIST CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - set_target_properties(wx::${libname} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO "Release") - endif() - endif() - endif() - - # add an alias from wx:: to wx::wx + # add aliases from wx:: and wxWidgets::${lib} to wx::wx if(NOT TARGET wx::${name}) if(CMAKE_VERSION VERSION_LESS "3.18") # CMake <3.18 does not support alias to non-global imported target, create a copy of the library @@ -144,6 +154,11 @@ foreach(libname @wxLIB_TARGETS@) endif() endif() + # don't include 'wxbase_only' in wxWidgets_LIBRARIES and wxWidgets::wxWidgets + if(${libname} STREQUAL "wxbase_only") + continue() + endif() + # add to FindwxWidgets variable if(NOT @PROJECT_NAME@_FIND_COMPONENTS OR ${name} IN_LIST @PROJECT_NAME@_FIND_COMPONENTS) list(APPEND wxWidgets_LIBRARIES wx::${name}) @@ -154,6 +169,13 @@ foreach(libname @wxLIB_TARGETS@) endif() endforeach() +# list all built-in libraries +foreach(libname @wxLIB_BUILTIN_TARGETS@) + if(TARGET wx::${libname}) + wx_map_release(${libname}) + endif() +endforeach() + include(CMakeFindDependencyMacro) if(TARGET wx::wxnet AND @wxUSE_WEBREQUEST_CURL@) From 55180fdcfec020d262b0fbb5e1804639c58a87a5 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 22:10:22 +0200 Subject: [PATCH 401/416] CMake: Declare more build option dependencies backport of a967bead1a11321bab0e91ce126efc1e3eeec159 Get rid of macro to link sample libraries backport of 54bbd316def346c2b3f61ad0eb4310ed8bbd834c Enable MFC sample when MFC is available backport of f2ff34b6fb55ef7874577abb6cf3b73eec458557 Fix building wxBase under Android backport of c52190e3d14a5b12c0672aa66ef0e8f02da5703d --- build/cmake/demos/CMakeLists.txt | 4 +++ build/cmake/functions.cmake | 7 ----- build/cmake/lib/base/CMakeLists.txt | 3 ++ build/cmake/lib/xrc/CMakeLists.txt | 7 ++++- build/cmake/samples/CMakeLists.txt | 44 ++++++++++++++++++----------- build/cmake/samples/html.cmake | 2 +- 6 files changed, 42 insertions(+), 25 deletions(-) diff --git a/build/cmake/demos/CMakeLists.txt b/build/cmake/demos/CMakeLists.txt index 0909eb976245..4c487839d888 100644 --- a/build/cmake/demos/CMakeLists.txt +++ b/build/cmake/demos/CMakeLists.txt @@ -36,6 +36,8 @@ wx_add_demo(forty about.htm LIBRARIES wxhtml wxxml + DEPENDS + wxUSE_HTML ) wx_add_demo(fractal @@ -62,6 +64,8 @@ wx_add_demo(poem wxpoem.txt wxpoem.dat wxpoem.idx LIBRARIES wxhtml + DEPENDS + wxUSE_HTML NAME wxpoem ) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 0d7088b72739..53460252a800 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -1088,13 +1088,6 @@ function(wx_add name group) endif() endfunction() -# Link libraries to a sample -function(wx_link_sample_libraries name) - if(TARGET ${name}) - target_link_libraries(${name} PUBLIC ${ARGN}) - endif() -endfunction() - # Add a option and mark is as advanced if it starts with wxUSE_ # wx_option( [default] [STRINGS strings]) # The default is ON if not third parameter is specified diff --git a/build/cmake/lib/base/CMakeLists.txt b/build/cmake/lib/base/CMakeLists.txt index 2364b6494004..4689fc486651 100644 --- a/build/cmake/lib/base/CMakeLists.txt +++ b/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() diff --git a/build/cmake/lib/xrc/CMakeLists.txt b/build/cmake/lib/xrc/CMakeLists.txt index 521b0a843465..ce1ba8630976 100644 --- a/build/cmake/lib/xrc/CMakeLists.txt +++ b/build/cmake/lib/xrc/CMakeLists.txt @@ -15,4 +15,9 @@ endif() wx_append_sources(XRC_FILES XRC) wx_add_library(wxxrc ${XRC_FILES}) -wx_lib_link_libraries(wxxrc PRIVATE wxhtml wxxml) +if(wxUSE_XML) + wx_lib_link_libraries(wxxrc PRIVATE wxxml) +endif() +if(wxUSE_HTML) + wx_lib_link_libraries(wxxrc PRIVATE wxhtml) +endif() diff --git a/build/cmake/samples/CMakeLists.txt b/build/cmake/samples/CMakeLists.txt index 89d9ff467797..4d683e164cd5 100644 --- a/build/cmake/samples/CMakeLists.txt +++ b/build/cmake/samples/CMakeLists.txt @@ -11,7 +11,7 @@ wx_add_sample(access accesstest.cpp DEPENDS wxUSE_ACCESSIBILITY) wx_add_sample(animate anitest.cpp anitest.h DATA throbber.gif hourglass.ani DEPENDS wxUSE_ANIMATIONCTRL) wx_add_sample(archive CONSOLE) wx_add_sample(artprov arttest.cpp artbrows.cpp artbrows.h) -wx_add_sample(aui auidemo.cpp LIBRARIES wxaui wxhtml NAME auidemo DEPENDS wxUSE_AUI) +wx_add_sample(aui auidemo.cpp LIBRARIES wxaui wxhtml wxxml NAME auidemo DEPENDS wxUSE_AUI wxUSE_XML wxUSE_HTML) wx_add_sample(calendar DEPENDS wxUSE_CALENDARCTRL) wx_add_sample(caret DEPENDS wxUSE_CARET) wx_add_sample(clipboard DEPENDS wxUSE_CLIPBOARD) @@ -34,11 +34,11 @@ if(WXGTK2) wx_list_add_prefix(SAMPLE_DIALOGS_SRC ../../src/generic/ filedlgg.cpp) endif() wx_add_sample(dialogs ${SAMPLE_DIALOGS_SRC} DATA tips.txt) -wx_add_sample(dialup nettest.cpp LIBRARIES wxnet DEPENDS wxUSE_DIALUP_MANAGER) +wx_add_sample(dialup nettest.cpp LIBRARIES wxnet DEPENDS wxUSE_DIALUP_MANAGER wxUSE_SOCKETS) wx_add_sample(display) wx_add_sample(dnd dnd.cpp RES dnd.rc DATA wxwin.png DEPENDS wxUSE_DRAG_AND_DROP) wx_add_sample(docview docview.cpp doc.cpp view.cpp docview.h doc.h view.h - RES docview.rc PLIST Info.plist.in LIBRARIES wxaui DEPENDS wxUSE_DOC_VIEW_ARCHITECTURE) + RES docview.rc PLIST Info.plist.in LIBRARIES wxaui DEPENDS wxUSE_DOC_VIEW_ARCHITECTURE wxUSE_AUI) wx_add_sample(dragimag dragimag.cpp dragimag.h RES dragimag.rc DATA backgrnd.png shape01.png shape02.png shape03.png DEPENDS wxUSE_DRAGIMAGE) @@ -61,7 +61,7 @@ wx_add_sample(help demo.cpp LIBRARIES wxhtml doc.hhk doc.hhp doc.hlp doc.hpj doc.zip forward.gif up.gif ${HELP_DOC_FILES} NAME helpdemo - DEPENDS wxUSE_HELP + DEPENDS wxUSE_HELP wxUSE_HTML ) wx_add_sample(htlbox LIBRARIES wxhtml DEPENDS wxUSE_HTML) if(wxUSE_HTML) @@ -78,10 +78,10 @@ endforeach() wx_add_sample(internat DATA ${INTERNAT_DATA_FILES} PLIST Info.plist.in DEPENDS wxUSE_INTL) # IPC samples set(wxSAMPLE_FOLDER ipc) -wx_add_sample(ipc client.cpp client.h connection.h ipcsetup.h NAME ipcclient LIBRARIES wxnet DEPENDS wxUSE_IPC) -wx_add_sample(ipc server.cpp server.h connection.h ipcsetup.h NAME ipcserver LIBRARIES wxnet DEPENDS wxUSE_IPC) -wx_add_sample(ipc CONSOLE baseclient.cpp connection.h ipcsetup.h NAME baseipcclient LIBRARIES wxnet DEPENDS wxUSE_IPC) -wx_add_sample(ipc CONSOLE baseserver.cpp connection.h ipcsetup.h NAME baseipcserver LIBRARIES wxnet DEPENDS wxUSE_IPC) +wx_add_sample(ipc client.cpp client.h connection.h ipcsetup.h NAME ipcclient LIBRARIES wxnet DEPENDS wxUSE_IPC wxUSE_SOCKETS) +wx_add_sample(ipc server.cpp server.h connection.h ipcsetup.h NAME ipcserver LIBRARIES wxnet DEPENDS wxUSE_IPC wxUSE_SOCKETS) +wx_add_sample(ipc CONSOLE baseclient.cpp connection.h ipcsetup.h NAME baseipcclient LIBRARIES wxnet DEPENDS wxUSE_IPC wxUSE_SOCKETS) +wx_add_sample(ipc CONSOLE baseserver.cpp connection.h ipcsetup.h NAME baseipcserver LIBRARIES wxnet DEPENDS wxUSE_IPC wxUSE_SOCKETS) set(wxSAMPLE_FOLDER) wx_add_sample(joytest joytest.cpp joytest.h DATA buttonpress.wav DEPENDS wxUSE_JOYSTICK) wx_add_sample(keyboard) @@ -94,7 +94,7 @@ if(wxBUILD_DEBUG_LEVEL STREQUAL "Default" OR wxBUILD_DEBUG_LEVEL GREATER 0) endif() wx_add_sample(menu DEPENDS wxUSE_MENUS wxUSE_MENUBAR) wx_add_sample(minimal IMPORTANT) -wx_add_sample(notebook notebook.cpp notebook.h LIBRARIES wxaui DEPENDS wxUSE_NOTEBOOK) +wx_add_sample(notebook notebook.cpp notebook.h LIBRARIES wxaui DEPENDS wxUSE_NOTEBOOK wxUSE_AUI) if(wxUSE_OPENGL) set(wxSAMPLE_SUBDIR opengl/) set(wxSAMPLE_FOLDER OpenGL) @@ -118,7 +118,7 @@ wx_add_sample(power) wx_add_sample(preferences DEPENDS wxUSE_PREFERENCES_EDITOR) wx_add_sample(printing printing.cpp printing.h DEPENDS wxUSE_PRINTING_ARCHITECTURE) wx_add_sample(propgrid propgrid.cpp propgrid_minimal.cpp sampleprops.cpp - tests.cpp sampleprops.h propgrid.h LIBRARIES wxpropgrid NAME propgriddemo DEPENDS wxUSE_PROPGRID) + tests.cpp sampleprops.h propgrid.h LIBRARIES wxpropgrid wxxrc NAME propgriddemo DEPENDS wxUSE_PROPGRID) wx_add_sample(render FOLDER render) wx_add_sample(render DLL renddll.cpp NAME renddll FOLDER render) wx_add_sample(ribbon ribbondemo.cpp LIBRARIES wxribbon NAME ribbondemo DEPENDS wxUSE_RIBBON) @@ -221,7 +221,9 @@ wx_add_sample(widgets IMPORTANT ${SAMPLE_WIDGETS_SRC} DATA ${WIDGETS_RC_FILES} textctrl.cpp ../image/toucan.png:toucan.png ) # includes needed by the native widget (like gtk.h) -target_include_directories(widgets PRIVATE ${wxTOOLKIT_INCLUDE_DIRS}) +if(TARGET widgets) + target_include_directories(widgets PRIVATE ${wxTOOLKIT_INCLUDE_DIRS}) +endif() wx_add_sample(wizard DATA wiztest.svg wiztest2.svg DEPENDS wxUSE_WIZARDDLG) wx_add_sample(wrapsizer) @@ -253,7 +255,7 @@ wx_add_sample(xrc DATA ${XRC_RC_FILES} LIBRARIES wxaui wxribbon wxxrc wxhtml NAME xrcdemo - DEPENDS wxUSE_XML wxUSE_XRC + DEPENDS wxUSE_XML wxUSE_XRC wxUSE_AUI ) wx_add_sample(xti xti.cpp classlist.cpp codereadercallback.cpp classlist.h codereadercallback.h LIBRARIES wxxml @@ -270,11 +272,15 @@ if(WIN32) # this test only makes sense with statically built wx, otherwise # the same copy of wx would be used wx_add_sample(dll wx_exe.cpp my_dll.h NAME wx_exe FOLDER dll) - wx_link_sample_libraries(wx_exe my_dll) + if(TARGET wx_exe AND TARGET my_dll) + target_link_libraries(wx_exe PRIVATE my_dll) + endif() endif() wx_add_sample(dll sdk_exe.cpp my_dll.h NAME sdk_exe FOLDER dll) - wx_link_sample_libraries(sdk_exe my_dll) + if(TARGET sdk_exe AND TARGET my_dll) + target_link_libraries(sdk_exe PRIVATE my_dll) + endif() endif() wx_add_sample(regtest RES regtest.rc DEPENDS wxUSE_REGKEY) @@ -282,8 +288,14 @@ if(WIN32) if(WXMSW) wx_add_sample(nativdlg nativdlg.cpp nativdlg.h resource.h RES nativdlg.rc) - #TODO: reenable when sample is fixed - #wx_add_sample(mfc mfctest.cpp mfctest.h resource.h stdafx.h RES mfctest.rc) wx_add_sample(taskbarbutton DEPENDS wxUSE_TASKBARBUTTON) + + # only check if MFC is available when the mfc sample is enabled + if(wxBUILD_SAMPLES STREQUAL "ALL") + find_package(MFC QUIET) + if(MFC_FOUND) + wx_add_sample(mfc mfctest.cpp mfctest.h resource.h stdafx.h RES mfctest.rc) + endif() + endif() endif() endif() diff --git a/build/cmake/samples/html.cmake b/build/cmake/samples/html.cmake index af782aa59357..7e51f1ff86c6 100644 --- a/build/cmake/samples/html.cmake +++ b/build/cmake/samples/html.cmake @@ -32,7 +32,7 @@ wx_add_sample(test imagemap.png pic.png pic2.bmp i18n.gif imagemap.htm tables.htm test.htm listtest.htm 8859_2.htm cp1250.htm regres.htm foo.png subsup.html - LIBRARIES wxnet wxhtml NAME htmltest) + LIBRARIES wxnet wxhtml NAME htmltest DEPENDS wxUSE_SOCKETS) wx_add_sample(virtual DATA start.htm LIBRARIES wxhtml) wx_add_sample(widget DATA start.htm LIBRARIES wxhtml) wx_add_sample(zip DATA pages.zip start.htm LIBRARIES wxhtml DEPENDS wxUSE_FS_ZIP) From 2c1b849238a0af7fd2629937ed4d98f2b0857619 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 22:17:17 +0200 Subject: [PATCH 402/416] CMake: Miscellaneous backports Automatically update outdated WebView2 package backport of 210d1db7a74974504d7617fff0d728b1820deceb Don't use /MP option when not using MSVS CMake generator backport of 8ef84ab4fd706a9428b3285ab003883906697ff6 Set the wx-config RESCOMP value backport of 48092f29cbdc30397a00fafeaf6dbba94c85a06a Allow to override wx_option_auto backport of 764d775076f8c2b05c5b3d8cb64cae863ffd2368 Don't install release PDBs when stripped releases is enabled backport of 8c1ede66075ccfca8edfcfe87950e89ebc4c64d5 Slightly simplify and make more robust CMake version parsing backport of 8933626b22e714f43c01c75b40dd6e582d3f3c38 Build wxxml in non-GUI builds too backport of 8af1ec05eaad028e56d4fb4798240a5a0f132a94 change wxUSE_CONFIG_NATIVE setting logic in backport of 9377ec794e1610318fc39919723c225f4ed4b04d Add detection of SM library to CMake backport of f275d6f43578772f6596cf3b41cf8a2a4df08aef Re-enable wxUSE_DETECT_SM by default in CMake builds backport of cfb3856045fad30b6f30d3a5bfac355e8336d647 Improve checks for GTK3 on macOS backport of 92820ce8a9583ff3c0ccb39100539c13b6575489 Only enable wxUSE_HOTKEY on wxMSW and wxOSX backport of 32ca3660831c72f042d5cd86e18f2d0eb85670fb Disable wxUSE_FSVOLUME in the ports not supporting it backport of 6e8eac94ab9a4a9b15507b8aaa253efe661f77cd Backport RES_BUNDLE option --- CMakeLists.txt | 24 ++++++++-------- build/cmake/config.cmake | 2 +- build/cmake/functions.cmake | 39 +++++++++++++++++++------- build/cmake/init.cmake | 29 +++++++++++++++---- build/cmake/lib/webview/CMakeLists.txt | 18 +++++++++++- build/cmake/options.cmake | 16 ++++++++--- build/cmake/tests/gui/CMakeLists.txt | 15 +++++++++- 7 files changed, 109 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b07f06964a1..442cc6f07cd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,18 +52,18 @@ set(wxOUTPUT_DIR ${wxBINARY_DIR}/lib) # parse the version number from wx/version.h and include in wxMAJOR_VERSION and wxMINOR_VERSION file(READ "${wxSOURCE_DIR}/include/wx/version.h" WX_VERSION_H_CONTENTS) -string(REGEX MATCH "wxMAJOR_VERSION[ \t]+([0-9]+)" - wxMAJOR_VERSION ${WX_VERSION_H_CONTENTS}) -string (REGEX MATCH "([0-9]+)" - wxMAJOR_VERSION ${wxMAJOR_VERSION}) -string(REGEX MATCH "wxMINOR_VERSION[ \t]+([0-9]+)" - wxMINOR_VERSION ${WX_VERSION_H_CONTENTS}) -string (REGEX MATCH "([0-9]+)" - wxMINOR_VERSION ${wxMINOR_VERSION}) -string(REGEX MATCH "wxRELEASE_NUMBER[ \t]+([0-9]+)" - wxRELEASE_NUMBER ${WX_VERSION_H_CONTENTS}) -string (REGEX MATCH "([0-9]+)" - wxRELEASE_NUMBER ${wxRELEASE_NUMBER}) + +macro(wx_extract_version_component name) + string(REGEX MATCH "# *define +${name} +([0-9]+)" _dummy ${WX_VERSION_H_CONTENTS}) + if("${CMAKE_MATCH_1}" STREQUAL "") + message(FATAL_ERROR "Failed to extract ${name} from wx/version.h") + endif() + set(${name} ${CMAKE_MATCH_1}) +endmacro() + +wx_extract_version_component(wxMAJOR_VERSION) +wx_extract_version_component(wxMINOR_VERSION) +wx_extract_version_component(wxRELEASE_NUMBER) # Determine if current version is a "Development" release math(EXPR rel_dev "${wxMINOR_VERSION} % 2") diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index 5defece37f74..624e2fceb038 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -206,7 +206,7 @@ function(wx_write_config) set(WXCONFIG_RESFLAGS) set(WXCONFIG_RPATH "-Wl,-rpath,\$libdir") set(LDFLAGS_GL) - set(RESCOMP) + get_filename_component(RESCOMP "${CMAKE_RC_COMPILER}" NAME_WE) wx_configure_script( "wx-config.in" diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 53460252a800..74bf3b963af1 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -584,7 +584,11 @@ macro(wx_add_library name) ) if(wxBUILD_SHARED AND MSVC AND wxBUILD_INSTALL_PDB) - wx_install(FILES $ DESTINATION "${runtime_dir}") + if(wxBUILD_STRIPPED_RELEASE) + wx_install(FILES $ DESTINATION "${runtime_dir}" CONFIGURATIONS Debug RelWithDebInfo) + else() + wx_install(FILES $ DESTINATION "${runtime_dir}") + endif() endif() wx_target_enable_precomp(${name} "${wxSOURCE_DIR}/include/wx/wxprec.h") @@ -791,6 +795,8 @@ function(wx_add_thirdparty_library var_name lib_name help_str) if(NOT wxUSE_SYS_LIBS) set(thirdparty_lib_default builtin) + elseif(THIRDPARTY_DEFAULT STREQUAL "OFF") + set(thirdparty_lib_default OFF) elseif(THIRDPARTY_DEFAULT) set(thirdparty_lib_default ${THIRDPARTY_DEFAULT}) elseif(THIRDPARTY_DEFAULT_APPLE AND APPLE) @@ -862,8 +868,9 @@ endfunction() # Add sample, test, demo or benchmark # wx_add( [CONSOLE|CONSOLE_GUI|DLL] [IMPORTANT] [SRC_FILES...] -# [LIBRARIES ...] [NAME target_name] [FOLDER folder] -# [DATA ...] [DEFINITIONS ...] [RES ...] [PLIST ...) +# [NAME target_name] [FOLDER folder] +# [DATA ...] [DEFINITIONS ...] [DEPENDS ...] [LIBRARIES ...] +# [RES ...] [RES_BUNDLE ...] [PLIST ...]) # name default target name # group can be Samples, Tests, Demos or Benchmarks # first parameter may be CONSOLE to indicate a console application or DLL to indicate a shared library @@ -872,12 +879,14 @@ endfunction() # # Optionally: # IMPORTANT (samples only) does not require wxBUILD_SAMPLES=ALL -# LIBRARIES followed by required libraries # NAME alternative target_name # FOLDER subfolder in IDE # DATA followed by required data files. Use a colon to separate different source and dest paths # DEFINITIONS list of definitions for the target +# DEPENDS build options the target depends on +# LIBRARIES followed by required libraries # RES followed by WIN32 .rc files +# RES_BUNDLE followed by macOS bundle resource files # PLIST followed by macOS Info.plist.in file # # Additionally the following variables may be set before calling wx_add_sample: @@ -904,7 +913,7 @@ function(wx_add name group) cmake_parse_arguments(APP "CONSOLE;CONSOLE_GUI;DLL;IMPORTANT" "NAME;FOLDER" - "DATA;DEFINITIONS;DEPENDS;LIBRARIES;RES;PLIST" + "DATA;DEFINITIONS;DEPENDS;LIBRARIES;RES;RES_BUNDLE;PLIST" ${ARGN} ) @@ -967,7 +976,13 @@ function(wx_add name group) list(APPEND src_files ${wxSOURCE_DIR}/${DEFAULT_RC_FILE}) endif() elseif(APPLE AND NOT IPHONE) - list(APPEND src_files ${wxSOURCE_DIR}/src/osx/carbon/wxmac.icns) + set(bundle_files "${wxSOURCE_DIR}/src/osx/carbon/wxmac.icns") + if(APP_RES_BUNDLE) + foreach(res ${APP_RES_BUNDLE}) + list(APPEND bundle_files "${wxSOURCE_DIR}/${SUB_DIR}/${res}") + endforeach() + endif() + list(APPEND src_files ${bundle_files}) endif() if(APP_DLL) @@ -1017,11 +1032,9 @@ function(wx_add name group) elseif(group STREQUAL Tests) target_include_directories(${target_name} PRIVATE ${wxSOURCE_DIR}/tests) target_include_directories(${target_name} PRIVATE ${wxSOURCE_DIR}/3rdparty/catch/include) - target_include_directories(${target_name} PRIVATE ${wxTOOLKIT_INCLUDE_DIRS}) endif() if(APP_DATA) - # TODO: handle data files differently for OS X bundles # Copy data files to output directory foreach(data_src ${APP_DATA}) string(FIND ${data_src} ":" HAS_COLON) @@ -1050,7 +1063,7 @@ function(wx_add name group) endif() set_target_properties(${target_name} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${PLIST_FILE}" - RESOURCE "${wxSOURCE_DIR}/src/osx/carbon/wxmac.icns") + RESOURCE "${bundle_files}") endif() set_target_properties(${target_name} PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "org.wxwidgets.${target_name}" @@ -1134,7 +1147,13 @@ endfunction() # just a warning otherwise, while ON means that an error is given if it can't # be enabled. function(wx_option_auto name desc) - wx_option(${name} ${desc} AUTO STRINGS ON OFF AUTO) + cmake_parse_arguments(OPTION "" "" "STRINGS" ${ARGN}) + if(ARGC EQUAL 2) + set(default AUTO) + else() + set(default ${OPTION_UNPARSED_ARGUMENTS}) + endif() + wx_option(${name} ${desc} ${default} STRINGS ON OFF AUTO) endfunction() # Force a new value for an option created with wx_option diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 2ad16342f3b6..efaa73ffc7a1 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -74,7 +74,7 @@ if(MSVC) wx_string_append(CMAKE_EXE_LINKER_FLAGS_RELEASE "${MSVC_PDB_FLAG}") wx_string_append(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${MSVC_PDB_FLAG}") - if(wxBUILD_MSVC_MULTIPROC) + if(wxBUILD_MSVC_MULTIPROC AND ${CMAKE_GENERATOR} MATCHES "Visual Studio") wx_string_append(CMAKE_C_FLAGS " /MP") wx_string_append(CMAKE_CXX_FLAGS " /MP") endif() @@ -225,8 +225,8 @@ endif() set(wxUSE_STD_DEFAULT ON) if(NOT wxUSE_EXPAT) set(wxUSE_XRC OFF) + set(wxUSE_XML OFF) endif() -set(wxUSE_XML ${wxUSE_XRC}) if(DEFINED wxUSE_OLE AND wxUSE_OLE) set(wxUSE_OLE_AUTOMATION ON) @@ -311,7 +311,11 @@ if(wxUSE_CONFIG) message(WARNING "wxConfig requires wxTextFile... disabled") wx_option_force_value(wxUSE_CONFIG OFF) else() - set(wxUSE_CONFIG_NATIVE ON) + if(WIN32 AND NOT wxUSE_REGKEY) + set(wxUSE_CONFIG_NATIVE OFF) + else() + set(wxUSE_CONFIG_NATIVE ON) + endif() endif() endif() @@ -475,9 +479,12 @@ if(wxUSE_GUI) list(APPEND OPENGL_LIBRARIES ${WAYLANDEGL_LIBRARIES}) endif() endif() + if(WXGTK3 AND APPLE AND (NOT wxHAVE_GDK_X11 OR NOT wxHAVE_GDK_WAYLAND)) + set(OPENGL_FOUND OFF) + endif() endif() if(NOT OPENGL_FOUND) - message(WARNING "opengl not found, wxGLCanvas won't be available") + message(WARNING "OpenGL not found, wxGLCanvas won't be available") wx_option_force_value(wxUSE_OPENGL OFF) endif() if(UNIX AND (NOT WXGTK3 OR NOT OpenGL_EGL_FOUND)) @@ -612,7 +619,7 @@ if(wxUSE_GUI) endif() if(wxUSE_UIACTIONSIMULATOR AND UNIX AND WXGTK) - if(wxUSE_XTEST) + if(wxHAVE_GDK_X11 AND wxUSE_XTEST) find_package(XTEST) if(XTEST_FOUND) list(APPEND wxTOOLKIT_INCLUDE_DIRS ${XTEST_INCLUDE_DIRS}) @@ -707,6 +714,18 @@ if(wxUSE_GUI) endif() endif() + if(wxUSE_DETECT_SM) + if(APPLE OR WIN32) + wx_option_force_value(wxUSE_DETECT_SM OFF) + else() + find_package(PkgConfig) + pkg_check_modules(SM sm) + if(NOT SM_FOUND) + message(WARNING "libSM not found; disabling session management detection") + wx_option_force_value(wxUSE_DETECT_SM OFF) + endif() + endif() + endif() endif(wxUSE_GUI) # test if precompiled headers are supported using the cotire test project diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt index 718dd6959023..607dc3bd7453 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt @@ -49,6 +49,8 @@ if(APPLE) elseif(WXMSW) if(wxUSE_WEBVIEW_EDGE) # Update the following variables if updating WebView2 SDK + # Also update this version and the _INTERFACE_DEFINED_ check in + # include/wx/msw/private/webview_edge.h and interface/wx/webview.h set(WEBVIEW2_VERSION "1.0.3485.44") set(WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION}") # When updating the above version of WebView2, download the nupkg from the above URL. @@ -68,8 +70,22 @@ elseif(WXMSW) ${WEBVIEW2_DEFAULT_PACKAGE_DIR} ) + if (WEBVIEW2_PACKAGE_DIR) + get_filename_component(currentDir ${WEBVIEW2_PACKAGE_DIR} DIRECTORY) + get_filename_component(targetDir ${WEBVIEW2_DEFAULT_PACKAGE_DIR} DIRECTORY) + if (currentDir STREQUAL targetDir) + get_filename_component(currentVersion ${WEBVIEW2_PACKAGE_DIR} NAME) + string(SUBSTRING ${currentVersion} 23 -1 currentVersion) + if(${currentVersion} VERSION_LESS ${WEBVIEW2_VERSION}) + message(STATUS "Found outdated WebView2 SDK, downloading...") + unset(WEBVIEW2_PACKAGE_DIR CACHE) + endif() + endif() + else() + message(STATUS "WebView2 SDK not found, downloading...") + endif() + if (NOT WEBVIEW2_PACKAGE_DIR) - message(STATUS "WebView2 SDK not found locally, downloading...") set(WEBVIEW2_PACKAGE_DIR ${WEBVIEW2_DEFAULT_PACKAGE_DIR} CACHE PATH "WebView2 SDK PATH" FORCE) file(DOWNLOAD ${WEBVIEW2_URL} diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index fe31020e773f..b2d893a9d2ef 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -221,7 +221,9 @@ wx_option(wxUSE_FONTMAP "use font encodings conversion classes") wx_option(wxUSE_FS_ARCHIVE "use virtual archive filesystems") wx_option(wxUSE_FS_INET "use virtual HTTP/FTP filesystems") wx_option(wxUSE_FS_ZIP "now replaced by fs_archive") -wx_option(wxUSE_FSVOLUME "use wxFSVolume class") +if(WIN32 OR APPLE) + wx_option(wxUSE_FSVOLUME "use wxFSVolume class") +endif() wx_option(wxUSE_FSWATCHER "use wxFileSystemWatcher class") wx_option(wxUSE_GEOMETRY "use geometry class") wx_option(wxUSE_LOG "use logging system") @@ -268,6 +270,8 @@ wx_option(wxUSE_PROTOCOL_FILE "FILE support in wxProtocol") wx_option(wxUSE_THREADS "use threads") +wx_option(wxUSE_XML "use the XML library") + if(WIN32) if(MINGW) #TODO: version check, as newer versions have no problem enabling this @@ -293,7 +297,6 @@ wx_option(wxUSE_MS_HTML_HELP "use MS HTML Help (win32)") wx_option(wxUSE_HTML "use wxHTML sub-library") wx_option(wxUSE_WXHTML_HELP "use wxHTML-based help") wx_option(wxUSE_XRC "use XRC resources sub-library") -wx_option(wxUSE_XML "use the xml library (overruled by wxUSE_XRC)") wx_option(wxUSE_AUI "use AUI docking library") wx_option(wxUSE_PROPGRID "use wxPropertyGrid library") wx_option(wxUSE_RIBBON "use wxRibbon library") @@ -372,7 +375,7 @@ wx_option(wxUSE_COMMANDLINKBUTTON "use wxCommmandLinkButton class") wx_option(wxUSE_DATAVIEWCTRL "use wxDataViewCtrl class") wx_option(wxUSE_NATIVE_DATAVIEWCTRL "use the native wxDataViewCtrl if available") wx_option(wxUSE_DATEPICKCTRL "use wxDatePickerCtrl class") -wx_option(wxUSE_DETECT_SM "use code to detect X11 session manager" OFF) +wx_option(wxUSE_DETECT_SM "use code to detect X11 session manager") wx_option(wxUSE_DIRPICKERCTRL "use wxDirPickerCtrl class") wx_option(wxUSE_DISPLAY "use wxDisplay class") wx_option(wxUSE_EDITABLELISTBOX "use wxEditableListBox class") @@ -462,7 +465,12 @@ wx_option(wxUSE_SPLINES "use spline drawing code") wx_option(wxUSE_MOUSEWHEEL "use mousewheel") wx_option(wxUSE_VALIDATORS "use wxValidator and derived classes") wx_option(wxUSE_BUSYINFO "use wxBusyInfo") -wx_option(wxUSE_HOTKEY "use wxWindow::RegisterHotKey()") +if(WXMSW OR WXOSX_COCOA) + set(wxUSE_HOTKEY_DEFAULT ON) +else() + set(wxUSE_HOTKEY_DEFAULT OFF) +endif() +wx_option(wxUSE_HOTKEY "use wxWindow::RegisterHotKey()" ${wxUSE_HOTKEY_DEFAULT}) if(UNIX AND NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") set(wxUSE_JOYSTICK_DEFAULT OFF) else() diff --git a/build/cmake/tests/gui/CMakeLists.txt b/build/cmake/tests/gui/CMakeLists.txt index 4f4ec5a33956..0974d8ab3d52 100644 --- a/build/cmake/tests/gui/CMakeLists.txt +++ b/build/cmake/tests/gui/CMakeLists.txt @@ -208,8 +208,21 @@ set(TEST_GUI_DATA intl/ja/internat.po ) -wx_add_test(test_gui CONSOLE_GUI ${TEST_GUI_SRC} +set(TEST_GUI_RES_BUNDLE + horse.png + ../include/wx/msw/bullseye.cur + ) + +# On macOS create an .app bundle so the resources can be added. +# On other platforms, just use a console app with gui libraries. +set(APP_TYPE) +if(NOT APPLE) + set(APP_TYPE CONSOLE_GUI) +endif() + +wx_add_test(test_gui ${APP_TYPE} ${TEST_GUI_SRC} DATA ${TEST_GUI_DATA} + RES_BUNDLE ${TEST_GUI_RES_BUNDLE} ) if(wxUSE_AUI) wx_exe_link_libraries(test_gui wxaui) From 5d9cba75813a52b9b2dbdcc8831ec2e7e211e637 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 22:17:52 +0200 Subject: [PATCH 403/416] CMake: Generate appropriate expat_config.h for Expat backport of 57edf800b26b43187ba2996ecd10d44e3cce94b5 Skip some CMake checks that always fail under Windows partial backport of 94f53184f267aecbc48569bf8e66ef5c4ed1de96 --- build/cmake/lib/expat.cmake | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/build/cmake/lib/expat.cmake b/build/cmake/lib/expat.cmake index de7a9d69c223..9a366b8c0688 100644 --- a/build/cmake/lib/expat.cmake +++ b/build/cmake/lib/expat.cmake @@ -16,13 +16,47 @@ if(wxUSE_EXPAT STREQUAL "sys") endif() if(wxUSE_EXPAT STREQUAL "builtin") + set(wxEXPAT_DIR ${wxSOURCE_DIR}/src/expat/expat) + # TODO: implement building expat via its CMake file, using # add_subdirectory or ExternalProject_Add + # + # Until this is done, at least use Expat's own CMake file to check for the + # features it needs, so that we can produce the appropriate expat_config.h. + # + # This only makes sense under Unix, however, as almost all checks there are + # Unix-specific and just always fail under Windows. + if(WIN32) + include(TestBigEndian) + test_big_endian(WORDS_BIGENDIAN) + if(WORDS_BIGENDIAN) + set(BYTEORDER 4321) + else(WORDS_BIGENDIAN) + set(BYTEORDER 1234) + endif(WORDS_BIGENDIAN) + else() + include(${wxEXPAT_DIR}/ConfigureChecks.cmake) + endif() + + # Also define some options normally set by Expat's CMakeLists.txt. + set(XML_DTD 1) + set(XML_GE 1) + set(XML_NS 1) + set(XML_CONTEXT_BYTES 1024) + + configure_file(${wxEXPAT_DIR}/expat_config.h.cmake + ${wxBINARY_DIR}/libs/expat/expat_config.h + ) + wx_add_builtin_library(wxexpat src/expat/expat/lib/xmlparse.c src/expat/expat/lib/xmlrole.c src/expat/expat/lib/xmltok.c ) + + target_include_directories(wxexpat PRIVATE ${wxBINARY_DIR}/libs/expat) + target_compile_definitions(wxexpat PRIVATE HAVE_EXPAT_CONFIG_H) + set(EXPAT_LIBRARIES wxexpat) - set(EXPAT_INCLUDE_DIRS ${wxSOURCE_DIR}/src/expat/expat/lib) + set(EXPAT_INCLUDE_DIRS ${wxEXPAT_DIR}/lib) endif() From b787dd0ef008a6e85bc8c635a91d715bbd63f2f6 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 23:28:58 +0200 Subject: [PATCH 404/416] CMake: Restructure wx_add_builtin_library Partial backport of cd201ad5f35014317f229a50440ab2ebc3e38c5d and 3d389bbbbfc592aa221f6cd3c4f11850626a6fa0 --- build/cmake/functions.cmake | 85 +++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 74bf3b963af1..035703815457 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -188,6 +188,13 @@ function(wx_set_common_target_properties target_name) RUNTIME_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" ) + if(wxUSE_UNICODE) + if(WIN32) + target_compile_definitions(${target_name} PUBLIC UNICODE) + endif() + target_compile_definitions(${target_name} PUBLIC _UNICODE) + endif() + if(wxBUILD_PIC) set_target_properties(${target_name} PROPERTIES POSITION_INDEPENDENT_CODE TRUE) endif() @@ -413,13 +420,6 @@ function(wx_set_target_properties target_name) target_compile_definitions(${target_name} PRIVATE wxUSE_GUI=1 wxUSE_BASE=0) endif() - if(wxUSE_UNICODE) - if(WIN32) - target_compile_definitions(${target_name} PUBLIC UNICODE) - endif() - target_compile_definitions(${target_name} PUBLIC _UNICODE) - endif() - if(MSVC) # Suppress deprecation warnings for standard library calls target_compile_definitions(${target_name} PRIVATE @@ -718,17 +718,28 @@ macro(wx_set_builtin_target_ouput_name target target_name) ) endmacro() -# Set common properties for a builtin third party library -function(wx_set_builtin_target_properties target_name) - wx_set_builtin_target_ouput_name(${target_name} "${target_name}") +# Add a third party builtin library +function(wx_add_builtin_library target_name) + wx_list_add_prefix(src_list "${wxSOURCE_DIR}/" ${ARGN}) - if(wxUSE_UNICODE) - if(WIN32) - target_compile_definitions(${target_name} PUBLIC UNICODE) - endif() - target_compile_definitions(${target_name} PUBLIC _UNICODE) + list(GET src_list 0 src_file) + if(NOT EXISTS "${src_file}") + message(FATAL_ERROR "${target_name} file does not exist: \"${src_file}\".\ + Make sure you checkout the git submodules.") endif() + add_library(${target_name} STATIC ${src_list}) + + if(${target_name} MATCHES "wx.*") + string(SUBSTRING ${target_name} 2 -1 name_short) + set(name_long ${target_name}) + else() + set(name_short ${target_name}) + set(name_long "wx${target_name}") + endif() + + wx_set_builtin_target_ouput_name(${target_name} ${name_long}) + if(MSVC) # we're not interested in deprecation warnings about the use of # standard C functions in the 3rd party libraries (these warnings @@ -742,47 +753,29 @@ function(wx_set_builtin_target_properties target_name) target_include_directories(${target_name} BEFORE PRIVATE ${wxSETUP_HEADER_PATH}) - set_target_properties(${target_name} PROPERTIES FOLDER "Third Party Libraries") - + set_target_properties(${target_name} PROPERTIES + PROJECT_LABEL ${name_short} + FOLDER "Third Party Libraries" + ) if(wxBUILD_SHARED OR wxBUILD_PIC) set_target_properties(${target_name} PROPERTIES POSITION_INDEPENDENT_CODE TRUE) endif() wx_set_common_target_properties(${target_name} DEFAULT_WARNINGS) - if(NOT wxBUILD_SHARED) - wx_get_install_platform_dir(archive) - wx_install(TARGETS ${name} EXPORT wxWidgetsTargets ARCHIVE DESTINATION "${archive_dir}") - endif() -endfunction() - -# Add a third party builtin library -function(wx_add_builtin_library name) - list(APPEND wxLIB_BUILTIN_TARGETS ${name}) - set(wxLIB_BUILTIN_TARGETS ${wxLIB_BUILTIN_TARGETS} PARENT_SCOPE) - wx_list_add_prefix(src_list "${wxSOURCE_DIR}/" ${ARGN}) - - list(GET src_list 0 src_file) - if(NOT EXISTS "${src_file}") - message(FATAL_ERROR "${name} file does not exist: \"${src_file}\".\ - Make sure you checkout the git submodules.") + add_library(wx::${name_short} ALIAS ${target_name}) + add_library(wxWidgets::${name_short} ALIAS ${target_name}) + if(CREATE_WX_TARGET) + target_link_libraries(wxWidgets INTERFACE ${target_name}) endif() - if(${name} MATCHES "wx.*") - string(SUBSTRING ${name} 2 -1 name_short) - else() - set(name_short ${name}) - endif() + list(APPEND wxLIB_BUILTIN_TARGETS ${target_name}) + set(wxLIB_BUILTIN_TARGETS ${wxLIB_BUILTIN_TARGETS} PARENT_SCOPE) - add_library(${name} STATIC ${src_list}) - add_library(wx::${name_short} ALIAS ${name}) - add_library(wxWidgets::${name_short} ALIAS ${name}) - if(CREATE_WX_TARGET) - target_link_libraries(wxWidgets INTERFACE ${name}) + if(NOT wxBUILD_SHARED) + wx_get_install_platform_dir(archive) + wx_install(TARGETS ${target_name} EXPORT wxWidgetsTargets ARCHIVE DESTINATION "${archive_dir}") endif() - - wx_set_builtin_target_properties(${name}) - set_target_properties(${name} PROPERTIES PROJECT_LABEL ${name_short}) endfunction() # List of third party libraries added via wx_add_thirdparty_library() From 06e93f6d1c30571475c9555f6552cde028e31b71 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 23 Jun 2026 23:30:07 +0200 Subject: [PATCH 405/416] CMake: Refactor applying toolkit properties backport of 7f293e41943a6e13e11c513aa4d8e40f702f7318 --- build/cmake/functions.cmake | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 035703815457..36b94bcef32f 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -441,11 +441,6 @@ function(wx_set_target_properties target_name) $ ) - if(wxTOOLKIT_INCLUDE_DIRS AND NOT wxTARGET_IS_BASE) - target_include_directories(${target_name} - PRIVATE ${wxTOOLKIT_INCLUDE_DIRS}) - endif() - if (WIN32) set(WIN32_LIBRARIES kernel32 @@ -472,16 +467,20 @@ function(wx_set_target_properties target_name) PUBLIC ${WIN32_LIBRARIES}) endif() - if(wxTOOLKIT_LIBRARY_DIRS AND NOT wxTARGET_IS_BASE) - target_link_directories(${target_name} - PUBLIC ${wxTOOLKIT_LIBRARY_DIRS}) + if(NOT wxTARGET_IS_BASE) + if(wxTOOLKIT_INCLUDE_DIRS) + target_include_directories(${target_name} PRIVATE ${wxTOOLKIT_INCLUDE_DIRS}) + endif() + if(wxTOOLKIT_LIBRARY_DIRS) + target_link_directories(${target_name} PUBLIC ${wxTOOLKIT_LIBRARY_DIRS}) + endif() + if(wxTOOLKIT_LIBRARIES) + target_link_libraries(${target_name} PUBLIC ${wxTOOLKIT_LIBRARIES}) + endif() endif() - if(wxTOOLKIT_LIBRARIES AND NOT wxTARGET_IS_BASE) - target_link_libraries(${target_name} - PUBLIC ${wxTOOLKIT_LIBRARIES}) + if(wxTOOLKIT_DEFINITIONS) + target_compile_definitions(${target_name} PUBLIC ${wxTOOLKIT_DEFINITIONS}) endif() - target_compile_definitions(${target_name} - PUBLIC ${wxTOOLKIT_DEFINITIONS}) if(wxBUILD_SHARED) string(TOUPPER ${target_name_short} target_name_upper) From 7d58b94b8506239d2825b64aef6ebaec50a1acb0 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 4 Mar 2026 19:47:39 +0100 Subject: [PATCH 406/416] Use "vc145" versioned suffix for MSVS 2026 compiler Use a distinct value for MSVS 2026 with wxMSVC_VERSION_AUTO. Note that vc144 should have been used for MSVS 2022 v17.14, see https://learn.microsoft.com/en-us/cpp/overview/compiler-versions but we didn't do it, so there is a hole between vc143 and vc145. (cherry picked from commit a0f5c92b964638b18c7be7bf48e3af0c03d11c79) --- include/msvc/wx/setup.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/msvc/wx/setup.h b/include/msvc/wx/setup.h index cd7f2ca0d7f1..2dbca9395455 100644 --- a/include/msvc/wx/setup.h +++ b/include/msvc/wx/setup.h @@ -78,8 +78,10 @@ #define wxCOMPILER_PREFIX vc141 #elif _MSC_VER >= 1920 && _MSC_VER < 1930 #define wxCOMPILER_PREFIX vc142 - #elif _MSC_VER >= 1930 && _MSC_VER < 2000 + #elif _MSC_VER >= 1930 && _MSC_VER < 1950 #define wxCOMPILER_PREFIX vc143 + #elif _MSC_VER >= 1950 && _MSC_VER < 2000 + #define wxCOMPILER_PREFIX vc145 #else #error "Unknown MSVC 14.x compiler version, please report to wx-dev." #endif From 5cb32ced3f7ca93f9a4a13d2647cc007de641cf4 Mon Sep 17 00:00:00 2001 From: iht Date: Mon, 11 May 2026 00:52:49 +0200 Subject: [PATCH 407/416] Update wxwidgets.props and common.bkl for VS 2026 This is in line with the changes in a0f5c92b964638b18c7be7bf48e3af0c03d11c79 and 3d88038d0175b50781cf250b0c21165cbfd9cb22 (cherry picked from commit f5cb9a66c0f4b6929379a10de02ecab454ddaf00) --- build/bakefiles/common.bkl | 2 ++ demos/bombs/makefile.vc | 8 ++++++++ demos/forty/makefile.vc | 8 ++++++++ demos/fractal/makefile.vc | 8 ++++++++ demos/life/makefile.vc | 8 ++++++++ demos/poem/makefile.vc | 8 ++++++++ samples/access/makefile.vc | 8 ++++++++ samples/animate/makefile.vc | 8 ++++++++ samples/artprov/makefile.vc | 8 ++++++++ samples/aui/makefile.vc | 8 ++++++++ samples/calendar/makefile.vc | 8 ++++++++ samples/caret/makefile.vc | 8 ++++++++ samples/clipboard/makefile.vc | 8 ++++++++ samples/collpane/makefile.vc | 8 ++++++++ samples/combo/makefile.vc | 8 ++++++++ samples/config/makefile.vc | 8 ++++++++ samples/dataview/makefile.vc | 8 ++++++++ samples/debugrpt/makefile.vc | 8 ++++++++ samples/dialogs/makefile.vc | 8 ++++++++ samples/dialup/makefile.vc | 8 ++++++++ samples/display/makefile.vc | 8 ++++++++ samples/dll/makefile.vc | 8 ++++++++ samples/dnd/makefile.vc | 8 ++++++++ samples/docview/makefile.vc | 8 ++++++++ samples/dragimag/makefile.vc | 8 ++++++++ samples/drawing/makefile.vc | 8 ++++++++ samples/erase/makefile.vc | 8 ++++++++ samples/event/makefile.vc | 8 ++++++++ samples/except/makefile.vc | 8 ++++++++ samples/exec/makefile.vc | 8 ++++++++ samples/font/makefile.vc | 8 ++++++++ samples/fswatcher/makefile.vc | 8 ++++++++ samples/grid/makefile.vc | 8 ++++++++ samples/help/makefile.vc | 8 ++++++++ samples/htlbox/makefile.vc | 8 ++++++++ samples/html/about/makefile.vc | 8 ++++++++ samples/html/help/makefile.vc | 8 ++++++++ samples/html/helpview/makefile.vc | 8 ++++++++ samples/html/printing/makefile.vc | 8 ++++++++ samples/html/test/makefile.vc | 8 ++++++++ samples/html/virtual/makefile.vc | 8 ++++++++ samples/html/widget/makefile.vc | 8 ++++++++ samples/html/zip/makefile.vc | 8 ++++++++ samples/image/makefile.vc | 8 ++++++++ samples/internat/makefile.vc | 8 ++++++++ samples/ipc/makefile.vc | 8 ++++++++ samples/joytest/makefile.vc | 8 ++++++++ samples/keyboard/makefile.vc | 8 ++++++++ samples/layout/makefile.vc | 8 ++++++++ samples/listctrl/makefile.vc | 8 ++++++++ samples/mdi/makefile.vc | 8 ++++++++ samples/mediaplayer/makefile.vc | 8 ++++++++ samples/memcheck/makefile.vc | 8 ++++++++ samples/menu/makefile.vc | 8 ++++++++ samples/mfc/makefile.vc | 8 ++++++++ samples/minimal/makefile.vc | 8 ++++++++ samples/nativdlg/makefile.vc | 8 ++++++++ samples/notebook/makefile.vc | 8 ++++++++ samples/oleauto/makefile.vc | 8 ++++++++ samples/opengl/cube/makefile.vc | 8 ++++++++ samples/opengl/isosurf/makefile.vc | 8 ++++++++ samples/opengl/penguin/makefile.vc | 8 ++++++++ samples/opengl/pyramid/makefile.vc | 8 ++++++++ samples/ownerdrw/makefile.vc | 8 ++++++++ samples/popup/makefile.vc | 8 ++++++++ samples/power/makefile.vc | 8 ++++++++ samples/preferences/makefile.vc | 8 ++++++++ samples/printing/makefile.vc | 8 ++++++++ samples/propgrid/makefile.vc | 8 ++++++++ samples/regtest/makefile.vc | 8 ++++++++ samples/render/makefile.vc | 8 ++++++++ samples/ribbon/makefile.vc | 8 ++++++++ samples/richtext/makefile.vc | 8 ++++++++ samples/sashtest/makefile.vc | 8 ++++++++ samples/scroll/makefile.vc | 8 ++++++++ samples/shaped/makefile.vc | 8 ++++++++ samples/sockets/makefile.vc | 8 ++++++++ samples/sound/makefile.vc | 8 ++++++++ samples/splash/makefile.vc | 8 ++++++++ samples/splitter/makefile.vc | 8 ++++++++ samples/statbar/makefile.vc | 8 ++++++++ samples/stc/makefile.vc | 8 ++++++++ samples/svg/makefile.vc | 8 ++++++++ samples/taborder/makefile.vc | 8 ++++++++ samples/taskbar/makefile.vc | 8 ++++++++ samples/taskbarbutton/makefile.vc | 8 ++++++++ samples/text/makefile.vc | 8 ++++++++ samples/thread/makefile.vc | 8 ++++++++ samples/toolbar/makefile.vc | 8 ++++++++ samples/treectrl/makefile.vc | 8 ++++++++ samples/treelist/makefile.vc | 8 ++++++++ samples/typetest/makefile.vc | 8 ++++++++ samples/uiaction/makefile.vc | 8 ++++++++ samples/validate/makefile.vc | 8 ++++++++ samples/vscroll/makefile.vc | 8 ++++++++ samples/webrequest/makefile.vc | 8 ++++++++ samples/webview/makefile.vc | 8 ++++++++ samples/widgets/makefile.vc | 8 ++++++++ samples/wizard/makefile.vc | 8 ++++++++ samples/wrapsizer/makefile.vc | 8 ++++++++ samples/xrc/makefile.vc | 8 ++++++++ samples/xti/makefile.vc | 8 ++++++++ tests/benchmarks/makefile.vc | 8 ++++++++ tests/makefile.vc | 8 ++++++++ utils/emulator/src/makefile.vc | 8 ++++++++ utils/helpview/src/makefile.vc | 8 ++++++++ utils/hhp2cached/makefile.vc | 8 ++++++++ utils/screenshotgen/src/makefile.vc | 8 ++++++++ wxwidgets.props | 2 ++ 109 files changed, 860 insertions(+) diff --git a/build/bakefiles/common.bkl b/build/bakefiles/common.bkl index 8590aaddad5d..f5a28d9489c3 100644 --- a/build/bakefiles/common.bkl +++ b/build/bakefiles/common.bkl @@ -348,11 +348,13 @@ /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware.manifest /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware.manifest /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware.manifest + /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware.manifest /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware_pmv2.manifest /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware_pmv2.manifest /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware_pmv2.manifest /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware_pmv2.manifest + /MANIFEST:EMBED /MANIFESTINPUT:$(TOP_SRCDIR)include/wx/msw/wx_dpi_aware_pmv2.manifest diff --git a/demos/bombs/makefile.vc b/demos/bombs/makefile.vc index ef71292357b5..60a1c81bf910 100644 --- a/demos/bombs/makefile.vc +++ b/demos/bombs/makefile.vc @@ -146,6 +146,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -162,6 +166,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/demos/forty/makefile.vc b/demos/forty/makefile.vc index 2476f859f222..32c5107eb89a 100644 --- a/demos/forty/makefile.vc +++ b/demos/forty/makefile.vc @@ -151,6 +151,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -167,6 +171,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/demos/fractal/makefile.vc b/demos/fractal/makefile.vc index fadcefb60a3c..509aa367dc78 100644 --- a/demos/fractal/makefile.vc +++ b/demos/fractal/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/demos/life/makefile.vc b/demos/life/makefile.vc index e21ffd5b624f..26ef4f016402 100644 --- a/demos/life/makefile.vc +++ b/demos/life/makefile.vc @@ -147,6 +147,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -163,6 +167,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/demos/poem/makefile.vc b/demos/poem/makefile.vc index 855efdd35081..165ca52d474a 100644 --- a/demos/poem/makefile.vc +++ b/demos/poem/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/access/makefile.vc b/samples/access/makefile.vc index e691addf1c30..2ba4d3777b9a 100644 --- a/samples/access/makefile.vc +++ b/samples/access/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/animate/makefile.vc b/samples/animate/makefile.vc index 742ac5c8e6ef..a1f309a4d12a 100644 --- a/samples/animate/makefile.vc +++ b/samples/animate/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/artprov/makefile.vc b/samples/artprov/makefile.vc index d08604718167..284b220084ab 100644 --- a/samples/artprov/makefile.vc +++ b/samples/artprov/makefile.vc @@ -145,6 +145,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -161,6 +165,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/aui/makefile.vc b/samples/aui/makefile.vc index 1d9f52cf2973..5d70cf10e9e5 100644 --- a/samples/aui/makefile.vc +++ b/samples/aui/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/calendar/makefile.vc b/samples/calendar/makefile.vc index 4f97df9fa01a..1db3271b8533 100644 --- a/samples/calendar/makefile.vc +++ b/samples/calendar/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/caret/makefile.vc b/samples/caret/makefile.vc index 5e128179f710..6e94701d4fde 100644 --- a/samples/caret/makefile.vc +++ b/samples/caret/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/clipboard/makefile.vc b/samples/clipboard/makefile.vc index a308acffda01..1466f46fd6ef 100644 --- a/samples/clipboard/makefile.vc +++ b/samples/clipboard/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/collpane/makefile.vc b/samples/collpane/makefile.vc index 52d64f011838..fc10c6dc51ae 100644 --- a/samples/collpane/makefile.vc +++ b/samples/collpane/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/combo/makefile.vc b/samples/combo/makefile.vc index 954dd5dd91d1..41b3c87300a1 100644 --- a/samples/combo/makefile.vc +++ b/samples/combo/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/config/makefile.vc b/samples/config/makefile.vc index ee05e340d3e1..2a7e1491b0cb 100644 --- a/samples/config/makefile.vc +++ b/samples/config/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/dataview/makefile.vc b/samples/dataview/makefile.vc index 1e4e63744f2f..e35256e93f02 100644 --- a/samples/dataview/makefile.vc +++ b/samples/dataview/makefile.vc @@ -145,6 +145,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -161,6 +165,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/debugrpt/makefile.vc b/samples/debugrpt/makefile.vc index c57ad3c1f521..e0ac084668da 100644 --- a/samples/debugrpt/makefile.vc +++ b/samples/debugrpt/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/dialogs/makefile.vc b/samples/dialogs/makefile.vc index c3beab458a16..0821c21af30d 100644 --- a/samples/dialogs/makefile.vc +++ b/samples/dialogs/makefile.vc @@ -145,6 +145,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -161,6 +165,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/dialup/makefile.vc b/samples/dialup/makefile.vc index 24cab124eac5..2e7d3b6a22a8 100644 --- a/samples/dialup/makefile.vc +++ b/samples/dialup/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/display/makefile.vc b/samples/display/makefile.vc index 96d9f967c571..b7b7c47cafba 100644 --- a/samples/display/makefile.vc +++ b/samples/display/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/dll/makefile.vc b/samples/dll/makefile.vc index 66c1a4747933..d2400b18cae6 100644 --- a/samples/dll/makefile.vc +++ b/samples/dll/makefile.vc @@ -164,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -180,6 +184,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/dnd/makefile.vc b/samples/dnd/makefile.vc index d394169c9751..6968edd79ec4 100644 --- a/samples/dnd/makefile.vc +++ b/samples/dnd/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/docview/makefile.vc b/samples/docview/makefile.vc index b04deb856355..809c12ed4341 100644 --- a/samples/docview/makefile.vc +++ b/samples/docview/makefile.vc @@ -146,6 +146,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -162,6 +166,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/dragimag/makefile.vc b/samples/dragimag/makefile.vc index 694768d7af74..7dcd80dfe37f 100644 --- a/samples/dragimag/makefile.vc +++ b/samples/dragimag/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/drawing/makefile.vc b/samples/drawing/makefile.vc index 5822b152b706..10367aeffc83 100644 --- a/samples/drawing/makefile.vc +++ b/samples/drawing/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/erase/makefile.vc b/samples/erase/makefile.vc index 1139ca40f1af..76f84f57bb4e 100644 --- a/samples/erase/makefile.vc +++ b/samples/erase/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/event/makefile.vc b/samples/event/makefile.vc index 8e20827f357e..2545d458918b 100644 --- a/samples/event/makefile.vc +++ b/samples/event/makefile.vc @@ -146,6 +146,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -162,6 +166,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/except/makefile.vc b/samples/except/makefile.vc index 250a1e632be4..39d229fa370b 100644 --- a/samples/except/makefile.vc +++ b/samples/except/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/exec/makefile.vc b/samples/exec/makefile.vc index f94f8b7d8a6d..1a59aa1d83e7 100644 --- a/samples/exec/makefile.vc +++ b/samples/exec/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/font/makefile.vc b/samples/font/makefile.vc index c7376a768656..f50ab06de08a 100644 --- a/samples/font/makefile.vc +++ b/samples/font/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/fswatcher/makefile.vc b/samples/fswatcher/makefile.vc index c8980fa0195e..03dbe263fd61 100644 --- a/samples/fswatcher/makefile.vc +++ b/samples/fswatcher/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/grid/makefile.vc b/samples/grid/makefile.vc index 1f5d9bf425ba..b3a7b24e2e19 100644 --- a/samples/grid/makefile.vc +++ b/samples/grid/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/help/makefile.vc b/samples/help/makefile.vc index a6d14e92d8af..fd8fdd2ca317 100644 --- a/samples/help/makefile.vc +++ b/samples/help/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/htlbox/makefile.vc b/samples/htlbox/makefile.vc index 8fd04166860c..f5eeabdb4a4f 100644 --- a/samples/htlbox/makefile.vc +++ b/samples/htlbox/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/about/makefile.vc b/samples/html/about/makefile.vc index 30eef29b18c8..d65bd301457a 100644 --- a/samples/html/about/makefile.vc +++ b/samples/html/about/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/help/makefile.vc b/samples/html/help/makefile.vc index 3f331c63e0e2..fb40c5fa8ea1 100644 --- a/samples/html/help/makefile.vc +++ b/samples/html/help/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/helpview/makefile.vc b/samples/html/helpview/makefile.vc index 0e2ea45b4feb..f37f59612538 100644 --- a/samples/html/helpview/makefile.vc +++ b/samples/html/helpview/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/printing/makefile.vc b/samples/html/printing/makefile.vc index e2c1d868eacc..44574000e594 100644 --- a/samples/html/printing/makefile.vc +++ b/samples/html/printing/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/test/makefile.vc b/samples/html/test/makefile.vc index 709cdcaed9a9..b72b3b2a3932 100644 --- a/samples/html/test/makefile.vc +++ b/samples/html/test/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/virtual/makefile.vc b/samples/html/virtual/makefile.vc index 51f43815d125..f883c319eb52 100644 --- a/samples/html/virtual/makefile.vc +++ b/samples/html/virtual/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/widget/makefile.vc b/samples/html/widget/makefile.vc index d66b4f113e63..c05da3c7e318 100644 --- a/samples/html/widget/makefile.vc +++ b/samples/html/widget/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/html/zip/makefile.vc b/samples/html/zip/makefile.vc index 0b8b3e3de54a..5e6355420b47 100644 --- a/samples/html/zip/makefile.vc +++ b/samples/html/zip/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/image/makefile.vc b/samples/image/makefile.vc index 14ab70df3e7c..85fae46f1181 100644 --- a/samples/image/makefile.vc +++ b/samples/image/makefile.vc @@ -145,6 +145,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -161,6 +165,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/internat/makefile.vc b/samples/internat/makefile.vc index fc733ae4c001..5be782c17170 100644 --- a/samples/internat/makefile.vc +++ b/samples/internat/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/ipc/makefile.vc b/samples/ipc/makefile.vc index 9df3857bd758..bcfd10704e0e 100644 --- a/samples/ipc/makefile.vc +++ b/samples/ipc/makefile.vc @@ -183,6 +183,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -199,6 +203,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/joytest/makefile.vc b/samples/joytest/makefile.vc index f3804e711fe0..a468096f5b93 100644 --- a/samples/joytest/makefile.vc +++ b/samples/joytest/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/keyboard/makefile.vc b/samples/keyboard/makefile.vc index 5f29b1cf6322..222b82b4e9c9 100644 --- a/samples/keyboard/makefile.vc +++ b/samples/keyboard/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/layout/makefile.vc b/samples/layout/makefile.vc index 6317727f7f5a..48a747608bee 100644 --- a/samples/layout/makefile.vc +++ b/samples/layout/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/listctrl/makefile.vc b/samples/listctrl/makefile.vc index 57ed31045a25..f5c652c62be2 100644 --- a/samples/listctrl/makefile.vc +++ b/samples/listctrl/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/mdi/makefile.vc b/samples/mdi/makefile.vc index 71bbf0eaa882..5f140e69aa20 100644 --- a/samples/mdi/makefile.vc +++ b/samples/mdi/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/mediaplayer/makefile.vc b/samples/mediaplayer/makefile.vc index ec3401a8a7f3..b9ab49c720bd 100644 --- a/samples/mediaplayer/makefile.vc +++ b/samples/mediaplayer/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/memcheck/makefile.vc b/samples/memcheck/makefile.vc index 424e9036b73e..9d154e122c7a 100644 --- a/samples/memcheck/makefile.vc +++ b/samples/memcheck/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/menu/makefile.vc b/samples/menu/makefile.vc index 0ee9d24029e4..cf642488f19b 100644 --- a/samples/menu/makefile.vc +++ b/samples/menu/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/mfc/makefile.vc b/samples/mfc/makefile.vc index 99401240f03a..9ead178f6f4c 100644 --- a/samples/mfc/makefile.vc +++ b/samples/mfc/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/minimal/makefile.vc b/samples/minimal/makefile.vc index 86fcd2f5029d..9a976c562320 100644 --- a/samples/minimal/makefile.vc +++ b/samples/minimal/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/nativdlg/makefile.vc b/samples/nativdlg/makefile.vc index f43313767377..49fa1b6971c8 100644 --- a/samples/nativdlg/makefile.vc +++ b/samples/nativdlg/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/notebook/makefile.vc b/samples/notebook/makefile.vc index 502f48119044..6474f41608e8 100644 --- a/samples/notebook/makefile.vc +++ b/samples/notebook/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/oleauto/makefile.vc b/samples/oleauto/makefile.vc index e9a324a7b727..a976ae2cddeb 100644 --- a/samples/oleauto/makefile.vc +++ b/samples/oleauto/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/opengl/cube/makefile.vc b/samples/opengl/cube/makefile.vc index 9b1745f055ed..9bc719bc748c 100644 --- a/samples/opengl/cube/makefile.vc +++ b/samples/opengl/cube/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/opengl/isosurf/makefile.vc b/samples/opengl/isosurf/makefile.vc index f63e4026f1b8..3281be7ab9bb 100644 --- a/samples/opengl/isosurf/makefile.vc +++ b/samples/opengl/isosurf/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/opengl/penguin/makefile.vc b/samples/opengl/penguin/makefile.vc index fda02cf42739..6357152202a0 100644 --- a/samples/opengl/penguin/makefile.vc +++ b/samples/opengl/penguin/makefile.vc @@ -156,6 +156,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -172,6 +176,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/opengl/pyramid/makefile.vc b/samples/opengl/pyramid/makefile.vc index f9c8d75aaf9e..838a50cba1ab 100644 --- a/samples/opengl/pyramid/makefile.vc +++ b/samples/opengl/pyramid/makefile.vc @@ -147,6 +147,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -163,6 +167,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/ownerdrw/makefile.vc b/samples/ownerdrw/makefile.vc index fc7b60b5b3c0..f32fd98ba9ce 100644 --- a/samples/ownerdrw/makefile.vc +++ b/samples/ownerdrw/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/popup/makefile.vc b/samples/popup/makefile.vc index 21289e8bd651..a60c5cb7744b 100644 --- a/samples/popup/makefile.vc +++ b/samples/popup/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/power/makefile.vc b/samples/power/makefile.vc index 2a79d545d2c9..b3a428e9628a 100644 --- a/samples/power/makefile.vc +++ b/samples/power/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/preferences/makefile.vc b/samples/preferences/makefile.vc index 5b9f9830b306..4669e68e2ae4 100644 --- a/samples/preferences/makefile.vc +++ b/samples/preferences/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/printing/makefile.vc b/samples/printing/makefile.vc index 305e0839a9c4..e8bd8d7ef554 100644 --- a/samples/printing/makefile.vc +++ b/samples/printing/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/propgrid/makefile.vc b/samples/propgrid/makefile.vc index 5c02b270194b..3c62f3b3b041 100644 --- a/samples/propgrid/makefile.vc +++ b/samples/propgrid/makefile.vc @@ -147,6 +147,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -163,6 +167,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/regtest/makefile.vc b/samples/regtest/makefile.vc index c6301a0197f6..f6daf3cc2e6f 100644 --- a/samples/regtest/makefile.vc +++ b/samples/regtest/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/render/makefile.vc b/samples/render/makefile.vc index 53120f77edae..8a8bf8ebd03a 100644 --- a/samples/render/makefile.vc +++ b/samples/render/makefile.vc @@ -162,6 +162,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -178,6 +182,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/ribbon/makefile.vc b/samples/ribbon/makefile.vc index a4d83b49f927..d6b5ce5376d2 100644 --- a/samples/ribbon/makefile.vc +++ b/samples/ribbon/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/richtext/makefile.vc b/samples/richtext/makefile.vc index 207934fb310d..7f50a0be5645 100644 --- a/samples/richtext/makefile.vc +++ b/samples/richtext/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/sashtest/makefile.vc b/samples/sashtest/makefile.vc index 25504160084f..cdb57a8f5e26 100644 --- a/samples/sashtest/makefile.vc +++ b/samples/sashtest/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/scroll/makefile.vc b/samples/scroll/makefile.vc index d5d76874d520..e5f440fffe78 100644 --- a/samples/scroll/makefile.vc +++ b/samples/scroll/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/shaped/makefile.vc b/samples/shaped/makefile.vc index 7835a476b353..6415b7997279 100644 --- a/samples/shaped/makefile.vc +++ b/samples/shaped/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/sockets/makefile.vc b/samples/sockets/makefile.vc index 62435ae2f4b9..08d0ef565650 100644 --- a/samples/sockets/makefile.vc +++ b/samples/sockets/makefile.vc @@ -181,6 +181,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -197,6 +201,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/sound/makefile.vc b/samples/sound/makefile.vc index bef754b43c48..4e30272e237a 100644 --- a/samples/sound/makefile.vc +++ b/samples/sound/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/splash/makefile.vc b/samples/splash/makefile.vc index a6b90fce356b..1acf01beba8a 100644 --- a/samples/splash/makefile.vc +++ b/samples/splash/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/splitter/makefile.vc b/samples/splitter/makefile.vc index 26bca3680b0b..0951bb30112d 100644 --- a/samples/splitter/makefile.vc +++ b/samples/splitter/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/statbar/makefile.vc b/samples/statbar/makefile.vc index 7ce53f43e241..61b006bec415 100644 --- a/samples/statbar/makefile.vc +++ b/samples/statbar/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/stc/makefile.vc b/samples/stc/makefile.vc index ccad39528d50..030194a126fd 100644 --- a/samples/stc/makefile.vc +++ b/samples/stc/makefile.vc @@ -146,6 +146,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -162,6 +166,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/svg/makefile.vc b/samples/svg/makefile.vc index 1a80e815441e..4fb43e67288c 100644 --- a/samples/svg/makefile.vc +++ b/samples/svg/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/taborder/makefile.vc b/samples/taborder/makefile.vc index 2894682f60ac..cd0d320212d7 100644 --- a/samples/taborder/makefile.vc +++ b/samples/taborder/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/taskbar/makefile.vc b/samples/taskbar/makefile.vc index 724ebf8a3a4a..014adfb72d66 100644 --- a/samples/taskbar/makefile.vc +++ b/samples/taskbar/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/taskbarbutton/makefile.vc b/samples/taskbarbutton/makefile.vc index b59649cb0fbf..9f90b17b735c 100644 --- a/samples/taskbarbutton/makefile.vc +++ b/samples/taskbarbutton/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/text/makefile.vc b/samples/text/makefile.vc index 1de631c9b4b0..8bb40e629f2e 100644 --- a/samples/text/makefile.vc +++ b/samples/text/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/thread/makefile.vc b/samples/thread/makefile.vc index a4c46af38bd3..953b4f5fdc9a 100644 --- a/samples/thread/makefile.vc +++ b/samples/thread/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/toolbar/makefile.vc b/samples/toolbar/makefile.vc index 180d2b38e3d9..8db5f6e632ea 100644 --- a/samples/toolbar/makefile.vc +++ b/samples/toolbar/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/treectrl/makefile.vc b/samples/treectrl/makefile.vc index 9ecf85653b2c..2d5c7e21fe26 100644 --- a/samples/treectrl/makefile.vc +++ b/samples/treectrl/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/treelist/makefile.vc b/samples/treelist/makefile.vc index 1b4b5b9dd875..4e4b3a36da87 100644 --- a/samples/treelist/makefile.vc +++ b/samples/treelist/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/typetest/makefile.vc b/samples/typetest/makefile.vc index 35c6e3390b59..a51ff560ab54 100644 --- a/samples/typetest/makefile.vc +++ b/samples/typetest/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/uiaction/makefile.vc b/samples/uiaction/makefile.vc index cbe3ea3975a9..e7c422d413f1 100644 --- a/samples/uiaction/makefile.vc +++ b/samples/uiaction/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/validate/makefile.vc b/samples/validate/makefile.vc index 5868f30ca1a9..a861a7e2704f 100644 --- a/samples/validate/makefile.vc +++ b/samples/validate/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/vscroll/makefile.vc b/samples/vscroll/makefile.vc index 63ceea669fec..b35f76e54484 100644 --- a/samples/vscroll/makefile.vc +++ b/samples/vscroll/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/webrequest/makefile.vc b/samples/webrequest/makefile.vc index aa9a3f8e4613..b8fd3e5c5a7e 100644 --- a/samples/webrequest/makefile.vc +++ b/samples/webrequest/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/webview/makefile.vc b/samples/webview/makefile.vc index 406db8b1013f..5bcfa507b721 100644 --- a/samples/webview/makefile.vc +++ b/samples/webview/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/widgets/makefile.vc b/samples/widgets/makefile.vc index 152dbeaeb922..8403610741ba 100644 --- a/samples/widgets/makefile.vc +++ b/samples/widgets/makefile.vc @@ -175,6 +175,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -191,6 +195,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/wizard/makefile.vc b/samples/wizard/makefile.vc index 5b2fb530caf4..fa6455979b87 100644 --- a/samples/wizard/makefile.vc +++ b/samples/wizard/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/wrapsizer/makefile.vc b/samples/wrapsizer/makefile.vc index 9107ff20d19a..2f26b2c2cf53 100644 --- a/samples/wrapsizer/makefile.vc +++ b/samples/wrapsizer/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/xrc/makefile.vc b/samples/xrc/makefile.vc index b33a4c999630..f846090b7f07 100644 --- a/samples/xrc/makefile.vc +++ b/samples/xrc/makefile.vc @@ -148,6 +148,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -164,6 +168,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/samples/xti/makefile.vc b/samples/xti/makefile.vc index 1c434ceceac2..a4490ed0c786 100644 --- a/samples/xti/makefile.vc +++ b/samples/xti/makefile.vc @@ -146,6 +146,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -162,6 +166,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/tests/benchmarks/makefile.vc b/tests/benchmarks/makefile.vc index 0dbbce4fa58f..38b0ed35080c 100644 --- a/tests/benchmarks/makefile.vc +++ b/tests/benchmarks/makefile.vc @@ -180,6 +180,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -196,6 +200,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/tests/makefile.vc b/tests/makefile.vc index 4fbb180d84a5..19773ef50877 100644 --- a/tests/makefile.vc +++ b/tests/makefile.vc @@ -400,6 +400,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -416,6 +420,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/utils/emulator/src/makefile.vc b/utils/emulator/src/makefile.vc index 07bf82675aaf..7a34bd175b61 100644 --- a/utils/emulator/src/makefile.vc +++ b/utils/emulator/src/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/utils/helpview/src/makefile.vc b/utils/helpview/src/makefile.vc index 54066f241ac0..42758c4376d6 100644 --- a/utils/helpview/src/makefile.vc +++ b/utils/helpview/src/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/utils/hhp2cached/makefile.vc b/utils/hhp2cached/makefile.vc index ff76a3ce0e2a..0c7b1c51f367 100644 --- a/utils/hhp2cached/makefile.vc +++ b/utils/hhp2cached/makefile.vc @@ -144,6 +144,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -160,6 +164,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/utils/screenshotgen/src/makefile.vc b/utils/screenshotgen/src/makefile.vc index dd9ce45f535e..e5c193c8640c 100644 --- a/utils/screenshotgen/src/makefile.vc +++ b/utils/screenshotgen/src/makefile.vc @@ -148,6 +148,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "1" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware.manifest +!endif !if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "14.0" WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest @@ -164,6 +168,10 @@ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest !endif +!if "$(USE_DPI_AWARE_MANIFEST)" == "2" && "$(VISUALSTUDIOVERSION)" == "18.0" +WIN32_DPI_LINKFLAG = /MANIFEST:EMBED \ + /MANIFESTINPUT:./../../../include/wx/msw/wx_dpi_aware_pmv2.manifest +!endif !if "$(MONOLITHIC)" == "0" EXTRALIBS_FOR_BASE = !endif diff --git a/wxwidgets.props b/wxwidgets.props index 67979d30f002..607ec3132136 100644 --- a/wxwidgets.props +++ b/wxwidgets.props @@ -36,6 +36,7 @@ 141 142 143 + 145 100 110 @@ -44,6 +45,7 @@ 14x 14x 14x + 14x From 70b4199d16336c7b5f8a205a54a2d289f52d68a9 Mon Sep 17 00:00:00 2001 From: Juraj Kavka Date: Sun, 5 Jul 2026 17:33:51 +0200 Subject: [PATCH 410/416] Avoid crash after destroying wxFileSystemWatcher under macOS Ensure all watches are removed before the object using them is destroyed to avoid using the already destroyed object later, which resulted in a crash. See #26658. (cherry picked from commit bc7316636fc89eda42480318528374e641339bff) --- docs/changes.txt | 1 + src/osx/fswatcher_fsevents.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 55b0768ce553..f744d4e66899 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -317,6 +317,7 @@ wxMSW: wxOSX: +- Fix crash after destroying wxFileSystemWatcher (Juraj Kavka, #26658). - Fix possible crash in wxFont::SetNativeFontInfo() (Václav Slavík, #26411). diff --git a/src/osx/fswatcher_fsevents.cpp b/src/osx/fswatcher_fsevents.cpp index 7471bedf3a0d..ea725c844dca 100644 --- a/src/osx/fswatcher_fsevents.cpp +++ b/src/osx/fswatcher_fsevents.cpp @@ -298,6 +298,9 @@ wxFsEventsFileSystemWatcher::wxFsEventsFileSystemWatcher(const wxFileName& path, wxFsEventsFileSystemWatcher::~wxFsEventsFileSystemWatcher() { + // Remove all watches to ensure this object is not used any more. + RemoveAll(); + delete m_pImpl; } From 57e9a6376a8373cdb7da0a49105f3d4158ad7f43 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 5 Jul 2026 18:17:01 +0200 Subject: [PATCH 411/416] Update release files for 3.2.11 Update version and date. --- docs/changes.txt | 2 +- docs/doxygen/mainpages/manual.h | 2 +- docs/msw/binaries.md | 8 ++-- docs/publicity/announce.txt | 78 ++++++++++++++++++++++++--------- docs/readme.txt | 78 ++++++++++++++++++++++++--------- docs/release.md | 30 ++++++------- 6 files changed, 135 insertions(+), 63 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index f744d4e66899..9419bb185862 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -252,7 +252,7 @@ Changes in behaviour which may result in build errors minimum required version is now 2005. -3.2.11: (released 2026-??-??) +3.2.11: (released 2026-07-07) ----------------------------- All: diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h index 96b10d389921..6c38b5efc6ec 100644 --- a/docs/doxygen/mainpages/manual.h +++ b/docs/doxygen/mainpages/manual.h @@ -14,7 +14,7 @@ @author Julian Smart, Vadim Zeitlin, Robin Dunn, Stefan Csomor, Bryan Petty, Francesco Montorsi, Robert Roebling et al -@date March 3, 2026 +@date July 7, 2026 Welcome to wxWidgets, a stable and powerful open source framework for developing native cross-platform GUI applications in C++! diff --git a/docs/msw/binaries.md b/docs/msw/binaries.md index ad818d2bcd72..73edc6a4291c 100644 --- a/docs/msw/binaries.md +++ b/docs/msw/binaries.md @@ -17,7 +17,7 @@ Getting the files ----------------- First, you need to get the correct files. You will always need the -`wxWidgets-3.2.10-headers.7z` one but the rest depends on your compiler version +`wxWidgets-3.2.11-headers.7z` one but the rest depends on your compiler version and architecture: as different versions of MSVC compiler are not binary compatible, you should select the files with the correct `vc80`, `vc90`, `vc100`, `vc110`, `vc120`, or `vc14x` @@ -28,14 +28,14 @@ or the ones without this suffix for the still more common 32-bit builds. After determining the combination of suffixes you need, you should download the "Dev" and the "ReleaseDLL" files in addition to the "Headers" one above, e.g. for 32-bit MSVS 2017 development you need -`wxMSW-3.2.10_vc14x_Dev.7z` and `wxMSW-3.2.10_vc14x_ReleaseDLL.7z`. +`wxMSW-3.2.11_vc14x_Dev.7z` and `wxMSW-3.2.11_vc14x_ReleaseDLL.7z`. All binaries are available at: -https://www.wxwidgets.org/downloads#v3.2.10_msw +https://www.wxwidgets.org/downloads#v3.2.11_msw Once you have the files you need, unzip all of them into the same directory, for -example `c:\wx\3.2.10`. You should have `include` and `lib` subdirectories under +example `c:\wx\3.2.11`. You should have `include` and `lib` subdirectories under this directory, as well as files such as `wxwidgets.props`. Note: To avoid hard-coding this path into your projects, define `wxwin` diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt index 884f7fbd5f0c..a21262d3ac5b 100644 --- a/docs/publicity/announce.txt +++ b/docs/publicity/announce.txt @@ -1,39 +1,75 @@ -March 3, 2015 -- The wxWidgets team is pleased to announce a new -stable release of our open source framework for the development of native +July 7, 2026 -- The wxWidgets team is pleased to announce the latest stable +release of our open source framework for the development of native cross-platform applications in C++. -wxWidgets 3.2.10 is part of the API and ABI-stable 3.2.x release series and is +wxWidgets 3.2.11 is part of the API and ABI-stable 3.2.x release series and is now available from https://www.wxwidgets.org/downloads/ and - https://github.com/wxWidgets/wxWidgets/releases/v3.2.10 + https://github.com/wxWidgets/wxWidgets/releases/v3.2.11 -This is a minor bug-fix release with just a single new addition: wxWidgets now -includes project files for Microsoft Visual Studio 2026. +This release contains a big number of important fixes, including for potential +security problems, and upgrading to it is strongly recommended for all +wxWidgets users. -It does contain a number of important bug fixes for macOS port of wxWidgets, -notably: +The following bugs were fixed: -- Fix install names of the libraries when using "make install" (#25675). -- Fix crash on some key presses in wxDataViewCtrl (#26160). -- Fix memory leaks in a number of controls (#26208). -- Fix regression in wxFileDialog filters in 3.2.9 (#26148). -- Many fixes for macOS 26 Tahoe (#26058, #25767, #26121, #26095). - -Some other bugs fixed in this release: - -- Don't use first image for wxListCtrl items without images in wxMSW (#26062). -- Fix regression in wxStaticBitmap::SetBitmap() in wxMSW 3.2.9 (#26106). -- Handle font names longer than 31 characters in wxMSW (moi15moi, #25333). -- Fix right/middle click events in vertical wxAuiToolBar (#26242). +- Fix wxCondition and wxSemaphore::WaitTimeout() after 2038 under Unix (#26466). +- Fix buffer overflow in wxGethostby{addr,name}_r() (#26528). +- Fix buffer overflow in wxTarInputStream (#26530). +- Fix out-of-bounds read in wxFileType::ExpandCommand() (#26531). +- Fix buffer overflow in wxVsnprintf() (#26522). +- Fix out-of-bounds read in wxRegEx::Replace() (#26541). +- Fix out-of-bounds read in wxUString (#26548). +- Fix wxDateTime::Format() handling of invalid format (#26543). +- Fix buffer overflow in wxGethostbyxxx_r() on some systems (#26553). +- Fix wxCaret position in scrolled windows (#26282). +- Correct delta-RLE bitmap background colour (#23599). +- Correct loading of `BI_BITFIELDS` bitmaps (#23601). +- Fix loading 32bpp BMP files without valid alpha (#24219). +- Fix buffer overwrite when loading malformed BMPs with invalid RLE data. +- Avoid out-of-bounds palette read in 8bpp BMP decoder (#26438). +- Avoid out-of-bounds palette write in wxIFFDecoder (#26440). +- Avoid out-of-bounds read in wxPCXHandler (#26441). +- Avoid out-of-bounds read in wxXPMDecoder (#26442). +- Fix reading ANI images with invalid frame count (#26492). +- Avoid out-of-bounds write for invalid BMP RLE runs (#26496). +- Fix out-of-bounds read when loading invalid 4bpp BMPs (#26511). +- Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (#26497). +- Fix write overflow in TGA files with invalid colour map (#26493). +- Fix read overflow in wxXPMDecoder on unterminated quote (#26499). +- Fix read overflow in wxXPMDecoder on invalid width (#26519). +- Reject more invalid GIFs and do it without leaking memory (#26501). +- Fix buffer overflows decoding invalid GIFs (#26521, #26524). +- Fix multiple buffer overflows in wxIFFDecoder (#26505, #26518). +- Fix multiple buffer overflows in wxSound (#26506, #26525). +- Fix reading too short extra field in ZIP64 files (#26507). +- Fix out-of-bounds table read in wxMBConvUTF7::ToWChar(#26517). +- Fix buffer overflow reading corrupted message catalogs (#26513). +- Fix buffer overflow for too big tables in wxHTML (#26554). +- Add wxGrid::GetFrozen{Row,Col}LabelWindow() (#26617). +- Fix wxPropertyGrid macros with wxNO_IMPLICIT_WXSTRING_ENCODING (#26651). +- Fix copy/paste in wxGTK when a clipboard manager is running (#26265). +- Fix crash with EGL-based wxGLCanvas in wxNotebook (#26340). +- Fix possible wxTextCtrl crash with GSpell attached (#26464). +- Fix drawing of very large bitmaps in wxGTK (#25656). +- Fix memory leak in wxDataViewChoiceRenderer. +- Fix resource leak when using EGL with X11 (#26341). +- Fix showing title bar under Wayland with wxBORDER_NONE (#26357). +- Remove maximum text length limitation in "picker" controls in wxGTK (#26314). +- Fix appearance of dashed lines drawn by wxDC::DrawLine() in wxGTK (#26449). +- Fix non-resizable TLW size when setting client size in wxGTK (#26480). +- Fix wxBufferedPaintDC when using RTL layout in wxMSW (#26266). +- Fix crash after destroying wxFileSystemWatcher in wxOSX (#26658). +- Fix possible crash in wxFont::SetNativeFontInfo() in wxOSX (#26411). Please see the full change log for more details: -https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.9/docs/changes.txt +https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.11/docs/changes.txt This release is API and ABI-compatible with the previous 3.2.x, meaning that the existing applications don't even need to be rebuilt to profit from all the diff --git a/docs/readme.txt b/docs/readme.txt index 5c908b0afdff..913531d05c67 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -32,27 +32,63 @@ installation instructions. -Changes since 3.2.9 -------------------- - -This is a minor bug-fix release with just a single new addition: wxWidgets now -includes project files for Microsoft Visual Studio 2026. - -It does contain a number of important bug fixes for macOS port of wxWidgets, -notably: - -- Fix install names of the libraries when using "make install" (#25675). -- Fix crash on some key presses in wxDataViewCtrl (#26160). -- Fix memory leaks in a number of controls (#26208). -- Fix regression in wxFileDialog filters in 3.2.9 (#26148). -- Many fixes for macOS 26 Tahoe (#26058, #25767, #26121, #26095). - -Some other bugs fixed in this release: - -- Don't use first image for wxListCtrl items without images in wxMSW (#26062). -- Fix regression in wxStaticBitmap::SetBitmap() in wxMSW 3.2.9 (#26106). -- Handle font names longer than 31 characters in wxMSW (moi15moi, #25333). -- Fix right/middle click events in vertical wxAuiToolBar (#26242). +Changes since 3.2.10 +-------------------- + +This release contains a big number of important fixes, including for potential +security problems, and upgrading to it is strongly recommended for all +wxWidgets users. + +The following bugs were fixed: + +- Fix wxCondition and wxSemaphore::WaitTimeout() after 2038 under Unix (#26466). +- Fix buffer overflow in wxGethostby{addr,name}_r() (#26528). +- Fix buffer overflow in wxTarInputStream (#26530). +- Fix out-of-bounds read in wxFileType::ExpandCommand() (#26531). +- Fix buffer overflow in wxVsnprintf() (#26522). +- Fix out-of-bounds read in wxRegEx::Replace() (#26541). +- Fix out-of-bounds read in wxUString (#26548). +- Fix wxDateTime::Format() handling of invalid format (#26543). +- Fix buffer overflow in wxGethostbyxxx_r() on some systems (#26553). +- Fix wxCaret position in scrolled windows (#26282). +- Correct delta-RLE bitmap background colour (#23599). +- Correct loading of `BI_BITFIELDS` bitmaps (#23601). +- Fix loading 32bpp BMP files without valid alpha (#24219). +- Fix buffer overwrite when loading malformed BMPs with invalid RLE data. +- Avoid out-of-bounds palette read in 8bpp BMP decoder (#26438). +- Avoid out-of-bounds palette write in wxIFFDecoder (#26440). +- Avoid out-of-bounds read in wxPCXHandler (#26441). +- Avoid out-of-bounds read in wxXPMDecoder (#26442). +- Fix reading ANI images with invalid frame count (#26492). +- Avoid out-of-bounds write for invalid BMP RLE runs (#26496). +- Fix out-of-bounds read when loading invalid 4bpp BMPs (#26511). +- Avoid out-of-bounds write on bad BMHD chunk in wxIFFDecoder (#26497). +- Fix write overflow in TGA files with invalid colour map (#26493). +- Fix read overflow in wxXPMDecoder on unterminated quote (#26499). +- Fix read overflow in wxXPMDecoder on invalid width (#26519). +- Reject more invalid GIFs and do it without leaking memory (#26501). +- Fix buffer overflows decoding invalid GIFs (#26521, #26524). +- Fix multiple buffer overflows in wxIFFDecoder (#26505, #26518). +- Fix multiple buffer overflows in wxSound (#26506, #26525). +- Fix reading too short extra field in ZIP64 files (#26507). +- Fix out-of-bounds table read in wxMBConvUTF7::ToWChar(#26517). +- Fix buffer overflow reading corrupted message catalogs (#26513). +- Fix buffer overflow for too big tables in wxHTML (#26554). +- Add wxGrid::GetFrozen{Row,Col}LabelWindow() (#26617). +- Fix wxPropertyGrid macros with wxNO_IMPLICIT_WXSTRING_ENCODING (#26651). +- Fix copy/paste in wxGTK when a clipboard manager is running (#26265). +- Fix crash with EGL-based wxGLCanvas in wxNotebook (#26340). +- Fix possible wxTextCtrl crash with GSpell attached (#26464). +- Fix drawing of very large bitmaps in wxGTK (#25656). +- Fix memory leak in wxDataViewChoiceRenderer. +- Fix resource leak when using EGL with X11 (#26341). +- Fix showing title bar under Wayland with wxBORDER_NONE (#26357). +- Remove maximum text length limitation in "picker" controls in wxGTK (#26314). +- Fix appearance of dashed lines drawn by wxDC::DrawLine() in wxGTK (#26449). +- Fix non-resizable TLW size when setting client size in wxGTK (#26480). +- Fix wxBufferedPaintDC when using RTL layout in wxMSW (#26266). +- Fix crash after destroying wxFileSystemWatcher in wxOSX (#26658). +- Fix possible crash in wxFont::SetNativeFontInfo() in wxOSX (#26411). Please see the full change log for more details: diff --git a/docs/release.md b/docs/release.md index dbf0c8c0e46e..5c62af992d8c 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,33 +1,33 @@ Welcome to wxWidgets, a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. -wxWidgets 3.2.10 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.9 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. +wxWidgets 3.2.11 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.9 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. We recommend using this version for any new wxWidgets applications. Existing applications using wxWidgets 3.0 or 3.1 shouldn't require any special effort to upgrade to this version too, so please try upgrading them to it. -Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.10/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.10/docs/changes.txt) for more details of the changes in it. +Please see [**README**](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.11/docs/readme.txt) for more information about this release and the [change log](https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.11/docs/changes.txt) for more details of the changes in it. ## Source Files and Documentation If you intend to build wxWidgets from sources (which is recommended), please do **NOT** download the files using the "Source code" links just above, which are automatically generated by GitHub and don't contain the submodules sources which are necessary for building wxWidgets. -Instead, download one of [wxWidgets-3.2.10.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxWidgets-3.2.10.zip) or [wxWidgets-3.2.10.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxWidgets-3.2.10.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.10.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxWidgets-3.2.10.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. +Instead, download one of [wxWidgets-3.2.11.zip](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.11/wxWidgets-3.2.11.zip) or [wxWidgets-3.2.11.7z](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.11/wxWidgets-3.2.11.7z), for much smaller size, for Microsoft Windows systems or [wxWidgets-3.2.11.tar.bz2](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.11/wxWidgets-3.2.11.tar.bz2) for Unix ones, including macOS. These archives have exactly the same contents, but use the line endings appropriate for the corresponding platform. -In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.10). +In addition, we provide archives containing the documentation in either HTML or Microsoft CHM formats. Notice that the documentation is also [available online](https://docs.wxwidgets.org/3.2.11). -Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.10/wxMSW-3.2.10-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. +Finally, Microsoft Windows users may download [Setup.exe file](https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.11/wxMSW-3.2.11-Setup.exe) containing both sources and documentation, however please note that this file does _not_ contain any binaries, please see below for those. To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.10-Setup.exe - 0000000000000000000000000000000000000000 wxWidgets-3.2.10-docs-chm.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.10-docs-html.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.10-docs-html.zip - 0000000000000000000000000000000000000000 wxWidgets-3.2.10-headers.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.10.7z - 0000000000000000000000000000000000000000 wxWidgets-3.2.10.chm - 0000000000000000000000000000000000000000 wxWidgets-3.2.10.tar.bz2 - 0000000000000000000000000000000000000000 wxWidgets-3.2.10.zip + 0000000000000000000000000000000000000000 wxMSW-3.2.11-Setup.exe + 0000000000000000000000000000000000000000 wxWidgets-3.2.11-docs-chm.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.11-docs-html.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.11-docs-html.zip + 0000000000000000000000000000000000000000 wxWidgets-3.2.11-headers.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.11.7z + 0000000000000000000000000000000000000000 wxWidgets-3.2.11.chm + 0000000000000000000000000000000000000000 wxWidgets-3.2.11.tar.bz2 + 0000000000000000000000000000000000000000 wxWidgets-3.2.11.zip ## Binaries @@ -40,7 +40,7 @@ We provide pre-built binary files for the following compilers: ### For Developers -For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.10_Headers.7z` file and one of `wxMSW-3.2.10-vcXXX_Dev.7z` or `wxMSW-3.2.10_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). +For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.10_Headers.7z` file and one of `wxMSW-3.2.11-vcXXX_Dev.7z` or `wxMSW-3.2.10_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols. From 1d265a36b6950708c4f2760f3c07f6a0f78a419d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 5 Jul 2026 21:02:56 +0200 Subject: [PATCH 412/416] Update more versions for 3.2.11 release This should have been part of the parent commit. --- docs/release.md | 132 ++++++++++++++++++++++++------------------------ 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/docs/release.md b/docs/release.md index 5c62af992d8c..98703ad700ef 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,6 +1,6 @@ Welcome to wxWidgets, a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. -wxWidgets 3.2.11 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.9 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. +wxWidgets 3.2.11 is part of 3.2 stable branch. This means that it is API _and_ ABI-compatible with the previous 3.2.x releases, i.e. the applications previously built using 3.2.10 or earlier shared libraries will continue working with this release even without recompiling when using shared libraries and can be rebuilt without any changes to the code otherwise. We recommend using this version for any new wxWidgets applications. Existing applications using wxWidgets 3.0 or 3.1 shouldn't require any special effort to upgrade to this version too, so please try upgrading them to it. @@ -40,7 +40,7 @@ We provide pre-built binary files for the following compilers: ### For Developers -For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.10_Headers.7z` file and one of `wxMSW-3.2.11-vcXXX_Dev.7z` or `wxMSW-3.2.10_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). +For developing applications with wxWidgets you need to download the compiler-independent `wxWidgets-3.2.11_Headers.7z` file and one of `wxMSW-3.2.11-vcXXX_Dev.7z` or `wxMSW-3.2.11_gccXXX_Dev.7z` files depending on your compiler, its version and the target architecture (x86 if not specified or x64). Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols. @@ -48,79 +48,79 @@ Note that if you're setting up a new project using these binaries, the simplest ### For End Users -End users may download one of `wxMSW-3.2.10_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.10_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. +End users may download one of `wxMSW-3.2.11_vcXXX_ReleaseDLL.7z` or `wxMSW-3.2.11_gccXXX_ReleaseDLL.7z` files to get just the DLLs required for running the applications using wxWidgets. ### For Debugging -* Microsoft Visual C++ users: Files `wxMSW-3.2.10_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. +* Microsoft Visual C++ users: Files `wxMSW-3.2.11_vcXXX_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines. * MinGW-TDM users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contains the debug symbols). ### Binary File Download Verification To verify your download please use the following SHA-1 checksums: - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1030TDM_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1220_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1320_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1520_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc730_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc810_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_gcc1420UCRT_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc90_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc100_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc110_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc120_x64_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_ReleasePDB.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_x64_Dev.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_x64_ReleaseDLL.7z - 0000000000000000000000000000000000000000 wxMSW-3.2.10_vc14x_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1030TDM_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1030TDM_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1030TDM_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1030TDM_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1220_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1220_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1220_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1220_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1320_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1320_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1320_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1320_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1520_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1520_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1520_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1520_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc730_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc730_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc730_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc730_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc810_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc810_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc810_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc810_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420UCRT_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420UCRT_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420UCRT_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_gcc1420UCRT_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc90_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc90_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc90_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc90_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc90_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc90_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc100_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc100_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc100_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc100_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc100_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc100_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc110_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc110_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc110_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc110_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc110_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc110_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc120_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc120_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc120_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc120_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc120_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc120_x64_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc14x_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc14x_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc14x_ReleasePDB.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc14x_x64_Dev.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc14x_x64_ReleaseDLL.7z + 0000000000000000000000000000000000000000 wxMSW-3.2.11_vc14x_x64_ReleasePDB.7z ## Reporting Problems From 45a29c1bdbbddb52779c37a6da2ef54f73d9805b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 5 Jul 2026 21:00:54 +0200 Subject: [PATCH 413/416] Allow specifying the version to generate the docs for in workflow Make it possible to (re)generate the docs for some version, e.g. if the old documentation was somehow lost. --- .github/workflows/docs_update.yml | 39 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 224c68c0bddb..9d9662005e94 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -16,7 +16,9 @@ on: - 'docs/**' - 'interface/**' workflow_dispatch: - + inputs: + version: + description: 'Version to generate docs for' permissions: contents: read @@ -58,25 +60,28 @@ jobs: DOCS_WEBSITE_KEY: ${{secrets.DOCS_WEBSITE_KEY}} DOCS_WEBSITE_SSH_CONFIG: ${{secrets.DOCS_WEBSITE_SSH_CONFIG}} run: | - ref="${{github.ref}}" - case "$ref" in - refs/heads/3.2) - dst=3.2 - ;; + dst=${{ inputs.version }} + if [[ -z "$dst" ]]; then + ref="${{github.ref}}" + case "$ref" in + refs/heads/3.2) + dst=3.2 + ;; - refs/tags/v*) - dst=${ref#refs/tags/v} - ;; + refs/tags/v*) + dst=${ref#refs/tags/v} + ;; - refs/pull/*/merge) - echo "Skipping docs upload for pull request" - exit 0 - ;; + refs/pull/*/merge) + echo "Skipping docs upload for pull request" + exit 0 + ;; - *) - echo "Skipping docs upload for $ref of unknown type" - exit 2 - esac + *) + echo "Skipping docs upload for $ref of unknown type" + exit 2 + esac + fi mkdir "$HOME/.ssh" echo "$DOCS_WEBSITE_KEY" > "$HOME/.ssh/docs_website_key" chmod 600 "$HOME/.ssh/docs_website_key" From 749625e0ea4d70d1f75494aa52231d835531a618 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 25 May 2025 17:21:53 +0200 Subject: [PATCH 414/416] Use current upstream version of gh-release action The problem that had been previously fixed in our fork should be fixed upstream too by now. (cherry picked from commit 2fd894514e7d5ec2a9128ac2cb82ee550f30e407) --- .github/workflows/make_release.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/make_release.yml b/.github/workflows/make_release.yml index c962d7b2abf8..a9242dd95da1 100644 --- a/.github/workflows/make_release.yml +++ b/.github/workflows/make_release.yml @@ -39,11 +39,7 @@ jobs: sha1sum * | tee -a ../../../docs/release.md - name: Create Draft Release - # Note: use a fork of softprops/action-gh-release which includes - # https://github.com/softprops/action-gh-release/pull/255 fixing - # updating the body of the draft releases. We should replace the SHA-1 - # with a tag when an upstream release including this fix is made. - uses: vadz/action-gh-release@f54a467f83ac3b6dd60e37cfb7283f35ae8e2ed2 + uses: softprops/action-gh-release@v2.2.2 id: create_release with: name: wxWidgets ${{ inputs.version }} @@ -110,7 +106,7 @@ jobs: type ..\..\..\checksums - name: Add Files to the Release - uses: vadz/action-gh-release@f54a467f83ac3b6dd60e37cfb7283f35ae8e2ed2 + uses: softprops/action-gh-release@v2.2.2 with: name: wxWidgets ${{ inputs.version }} body_path: checksums From 83b461f8fdb22336121572c9cbc034715977d1d6 Mon Sep 17 00:00:00 2001 From: ruben-iteng <94007802+ruben-iteng@users.noreply.github.com> Date: Fri, 17 Jul 2026 13:49:38 -0700 Subject: [PATCH 415/416] fix(wasm): repair UI input, theming, and HiDPI - prevent duplicate printable-key dispatch and commit native select input\n- apply the host system palette to DOM-backed controls and menus\n- keep HiDPI bitmap payloads while sizing controls in logical pixels --- build/wasm/wx-dom.js | 143 ++++++++++++++++++++++++++++++++--------- configure | 59 +++++++++++------ src/common/bmpbndl.cpp | 8 +++ src/wasm/anybutton.cpp | 4 +- src/wasm/app.cpp | 6 +- src/wasm/domevents.cpp | 10 ++- src/wasm/statbmp.cpp | 5 +- src/wasm/toolbar.cpp | 6 +- 8 files changed, 186 insertions(+), 55 deletions(-) diff --git a/build/wasm/wx-dom.js b/build/wasm/wx-dom.js index f32fa4dcbc2e..4508fd1435cc 100644 --- a/build/wasm/wx-dom.js +++ b/build/wasm/wx-dom.js @@ -21,6 +21,52 @@ var inputs = new Map(); // domId -> value-bearing element (if != root) var labels = new Map(); // domId -> label text target (if != root) + // wxSystemColour indices (include/wx/settings.h). C++ reads the same + // globalThis.wxSystemColors array in src/wasm/settings.cpp; CSS variables + // keep DOM-backed controls on that exact palette instead of a second, + // hard-coded classic-light theme. + var SYS = { + SCROLLBAR: 0, MENU: 4, WINDOW: 5, MENUTEXT: 7, WINDOWTEXT: 8, + ACTIVEBORDER: 10, HIGHLIGHT: 13, HIGHLIGHTTEXT: 14, BTNFACE: 15, + BTNSHADOW: 16, GRAYTEXT: 17, BTNTEXT: 18, BTNHIGHLIGHT: 20, + INFOTEXT: 23, INFOBK: 24, LISTBOX: 25, MENUBAR: 30, + LISTBOXTEXT: 31 + }; + + function paletteColor(index, fallback) { + var palette = globalThis.wxSystemColors; + var value = Array.isArray(palette) ? palette[index] : -1; + if (!Number.isInteger(value) || value < 0 || value > 0xffffff) + return fallback; + return '#' + value.toString(16).padStart(6, '0'); + } + + window.wxDomRefreshSystemColors = function () { + var style = document.documentElement.style; + var put = function (name, index, fallback) { + style.setProperty(name, paletteColor(index, fallback)); + }; + put('--wx-scrollbar', SYS.SCROLLBAR, '#d4d0c8'); + put('--wx-menu', SYS.MENU, '#d4d0c8'); + put('--wx-window', SYS.WINDOW, '#ffffff'); + put('--wx-menu-text', SYS.MENUTEXT, '#000000'); + put('--wx-window-text', SYS.WINDOWTEXT, '#000000'); + put('--wx-border', SYS.ACTIVEBORDER, '#808080'); + put('--wx-highlight', SYS.HIGHLIGHT, '#000080'); + put('--wx-highlight-text', SYS.HIGHLIGHTTEXT, '#ffffff'); + put('--wx-button-face', SYS.BTNFACE, '#d4d0c8'); + put('--wx-button-shadow', SYS.BTNSHADOW, '#808080'); + put('--wx-gray-text', SYS.GRAYTEXT, '#808080'); + put('--wx-button-text', SYS.BTNTEXT, '#000000'); + put('--wx-button-highlight', SYS.BTNHIGHLIGHT, '#ffffff'); + put('--wx-info-text', SYS.INFOTEXT, '#000000'); + put('--wx-info-bg', SYS.INFOBK, '#ffffe1'); + put('--wx-listbox', SYS.LISTBOX, '#ffffff'); + put('--wx-menubar', SYS.MENUBAR, '#d4d0c8'); + put('--wx-listbox-text', SYS.LISTBOXTEXT, '#000000'); + }; + window.wxDomRefreshSystemColors(); + // Flag read by the C++ keyboard callback (src/wasm/app.cpp): while a DOM // editable owns browser focus, wx must not swallow/preventDefault keys. window.wxDomEditableFocused = 0; @@ -94,7 +140,7 @@ // Visual chrome only: the wx children of a wxStaticBox are SIBLING // DOM controls, so the fieldset must never intercept their input. root = document.createElement('fieldset'); - root.style.border = '1px solid #b5b2aa'; + root.style.border = '1px solid var(--wx-button-shadow)'; root.style.borderRadius = '2px'; label = document.createElement('legend'); label.className = 'wx-label'; @@ -105,7 +151,7 @@ } case 'statline': { root = document.createElement('div'); - root.style.background = '#909090'; + root.style.background = 'var(--wx-button-shadow)'; root.dataset.wxChrome = '1'; break; } @@ -128,7 +174,7 @@ root = document.createElement('div'); root.dataset.wxScrollbar = '1'; var sbVertical = (typeAttr === 'v'); - root.style.background = '#e8e8e8'; + root.style.background = 'var(--wx-scrollbar)'; root.style.userSelect = 'none'; var sbTrack = document.createElement('div'); sbTrack.className = 'wx-sb-track'; @@ -136,7 +182,8 @@ var sbThumb = document.createElement('div'); sbThumb.className = 'wx-sb-thumb'; sbThumb.style.cssText = - 'position:absolute;background:#a0a0a0;border:1px solid #808080;' + + 'position:absolute;background:var(--wx-button-shadow);' + + 'border:1px solid var(--wx-border);' + 'border-radius:2px;box-sizing:border-box;touch-action:none;' + 'display:none;' + (sbVertical ? 'left:0;right:0;top:0;height:0;' @@ -182,7 +229,7 @@ // one per item, // filled by wxDomSetItems. root = document.createElement('fieldset'); - root.style.border = '1px solid #b5b2aa'; + root.style.border = '1px solid var(--wx-button-shadow)'; root.style.borderRadius = '2px'; label = document.createElement('legend'); label.className = 'wx-label'; @@ -214,8 +261,9 @@ root = document.createElement('div'); root.dataset.wxCheckList = '1'; root.style.overflowY = 'auto'; - root.style.background = '#ffffff'; - root.style.border = '1px solid #b5b2aa'; + root.style.background = 'var(--wx-listbox)'; + root.style.color = 'var(--wx-listbox-text)'; + root.style.border = '1px solid var(--wx-button-shadow)'; break; } case 'menubar': { @@ -223,7 +271,8 @@ // (built by wxDomMenuSetStructure). root = document.createElement('div'); root.dataset.wxMenuBar = '1'; - root.style.background = '#d4d0c8'; + root.style.background = 'var(--wx-menubar)'; + root.style.color = 'var(--wx-menu-text)'; flexCenter(root); break; } @@ -231,7 +280,8 @@ // Horizontal strip of tool buttons (built by wxDomToolbarSetTools). root = document.createElement('div'); root.dataset.wxToolBar = '1'; - root.style.background = '#d4d0c8'; + root.style.background = 'var(--wx-button-face)'; + root.style.color = 'var(--wx-button-text)'; flexCenter(root); break; } @@ -248,8 +298,9 @@ strip.setAttribute('role', 'tablist'); strip.style.cssText = 'position:absolute;left:0;top:0;right:0;display:flex;' + - 'align-items:flex-end;background:#d4d0c8;' + - 'border-bottom:1px solid #808080;pointer-events:auto;' + + 'align-items:flex-end;background:var(--wx-button-face);' + + 'color:var(--wx-button-text);' + + 'border-bottom:1px solid var(--wx-border);pointer-events:auto;' + 'overflow:hidden;'; root.appendChild(strip); break; @@ -292,6 +343,7 @@ el.style.left = '0px'; el.style.top = '0px'; el.style.boxSizing = 'border-box'; + if (!el.style.color) el.style.color = 'var(--wx-button-text)'; el.style.margin = '0'; if (!el.style.padding) el.style.padding = '0'; el.style.overflow = type === 'statbox' ? 'visible' : 'hidden'; @@ -310,6 +362,11 @@ el.style.pointerEvents = el.dataset.wxChrome ? 'none' : 'auto'; var valueEl = built.input || el; + if (valueEl.tagName === 'SELECT' || valueEl.tagName === 'TEXTAREA' || + (valueEl.tagName === 'INPUT' && isEditable(valueEl))) { + valueEl.style.color = 'var(--wx-window-text)'; + valueEl.style.backgroundColor = 'var(--wx-window)'; + } if (built.input) inputs.set(domId, built.input); if (built.label) labels.set(domId, built.label); @@ -343,9 +400,23 @@ }); valueEl.addEventListener('input', function () { - dispatch(domId, EVT.INPUT); + if (valueEl.tagName === 'SELECT') { + // Native select popups commit the picked option through `input` + // before `change`. Dispatch immediately: relayout or control + // destruction in the wx handler can otherwise make the later + // `change` disappear and leave the old selection active. + valueEl._wxSelectionDispatched = valueEl.selectedIndex; + dispatch(domId, EVT.CHANGE); + } else { + dispatch(domId, EVT.INPUT); + } }); valueEl.addEventListener('change', function () { + if (valueEl.tagName === 'SELECT' && + valueEl._wxSelectionDispatched === valueEl.selectedIndex) { + delete valueEl._wxSelectionDispatched; + return; + } dispatch(domId, EVT.CHANGE); }); if (isEditable(valueEl)) { @@ -444,7 +515,8 @@ el.checked = !!on; } else { el.setAttribute('aria-pressed', on ? 'true' : 'false'); - el.style.background = on ? '#b0c4de' : ''; + el.style.background = on ? 'var(--wx-highlight)' : 'var(--wx-button-face)'; + el.style.color = on ? 'var(--wx-highlight-text)' : 'var(--wx-button-text)'; } }; @@ -914,7 +986,8 @@ items.forEach(function (it, idx) { if (it.kind === 'separator') { var sep = document.createElement('div'); - sep.style.cssText = 'border-top:1px solid #808080;margin:2px 4px;'; + sep.style.cssText = + 'border-top:1px solid var(--wx-button-shadow);margin:2px 4px;'; pop.appendChild(sep); return; } @@ -922,15 +995,16 @@ row.textContent = (it.checked ? '✓ ' : ' ') + it.label + (it.kind === 'submenu' ? ' ▸' : ''); row.style.cssText = 'padding:2px 14px 2px 6px;cursor:default;' + - (it.enabled ? '' : 'color:#808080;'); + (it.enabled ? 'color:var(--wx-menu-text);' : + 'color:var(--wx-gray-text);'); if (it.enabled) { row.addEventListener('mouseenter', function () { - row.style.background = '#000080'; - row.style.color = '#ffffff'; + row.style.background = 'var(--wx-highlight)'; + row.style.color = 'var(--wx-highlight-text)'; }); row.addEventListener('mouseleave', function () { row.style.background = ''; - row.style.color = ''; + row.style.color = 'var(--wx-menu-text)'; }); row.addEventListener('click', function (ev) { ev.stopPropagation(); @@ -962,8 +1036,9 @@ pop.className = 'wx-menu-popup'; var a = anchor.getBoundingClientRect(); pop.style.cssText = - 'position:absolute;z-index:10000;background:#d4d0c8;' + - 'border:1px solid #808080;box-shadow:2px 2px 4px rgba(0,0,0,.3);' + + 'position:absolute;z-index:10000;background:var(--wx-menu);' + + 'color:var(--wx-menu-text);border:1px solid var(--wx-border);' + + 'box-shadow:2px 2px 4px rgba(0,0,0,.3);' + 'padding:2px;white-space:pre;min-width:120px;' + 'left:' + (a.left + window.scrollX) + 'px;' + 'top:' + (a.bottom + window.scrollY) + 'px;'; @@ -1023,8 +1098,9 @@ var pop = document.createElement('div'); pop.className = 'wx-menu-popup'; pop.style.cssText = - 'position:fixed;z-index:10000;background:#d4d0c8;' + - 'border:1px solid #808080;box-shadow:2px 2px 4px rgba(0,0,0,.3);' + + 'position:fixed;z-index:10000;background:var(--wx-menu);' + + 'color:var(--wx-menu-text);border:1px solid var(--wx-border);' + + 'box-shadow:2px 2px 4px rgba(0,0,0,.3);' + 'padding:2px;white-space:pre;min-width:120px;left:0;top:0;'; if (Module['canvas']) { pop.style.font = getComputedStyle(Module['canvas']).font; @@ -1122,7 +1198,7 @@ btn.textContent = m.title; btn.style.cssText = 'border:none;background:transparent;padding:2px 8px;margin:0;' + - 'font:inherit;white-space:pre;'; + 'color:var(--wx-menu-text);font:inherit;white-space:pre;'; btn.addEventListener('mousedown', function (ev) { ev.stopPropagation(); }); btn.addEventListener('click', function (ev) { ev.stopPropagation(); @@ -1160,7 +1236,8 @@ if (t.kind === 'separator') { var sep = document.createElement('div'); sep.style.cssText = - 'border-left:1px solid #808080;align-self:stretch;margin:1px 3px;'; + 'border-left:1px solid var(--wx-button-shadow);' + + 'align-self:stretch;margin:1px 3px;'; el.appendChild(sep); return; } @@ -1169,6 +1246,8 @@ // same look as every other tooltip (no native title attribute) tooltipHover(btn, function () { return t.tooltip || t.label || ''; }); btn.style.cssText = 'padding:1px 3px;margin:1px;font:inherit;' + + 'color:var(--wx-button-text);' + + 'background:var(--wx-button-face);' + 'display:flex;align-items:center;'; if (t.img) { var img = document.createElement('img'); @@ -1181,7 +1260,10 @@ btn.textContent = t.label || ''; } btn.disabled = !t.enabled; - if (t.toggled) btn.style.background = '#b0c4de'; + if (t.toggled) { + btn.style.background = 'var(--wx-highlight)'; + btn.style.color = 'var(--wx-highlight-text)'; + } btn.addEventListener('click', function (ev) { ev.stopPropagation(); el.dataset.wxLastCommand = String(t.id); @@ -1308,13 +1390,15 @@ btn.textContent = tab.label; btn.style.cssText = 'font:inherit;margin:1px 0 0 1px;padding:2px 8px;' + - 'border:1px solid #808080;border-bottom:none;' + + 'color:var(--wx-button-text);' + + 'border:1px solid var(--wx-button-shadow);border-bottom:none;' + 'border-radius:3px 3px 0 0;white-space:pre;' + 'overflow:hidden;text-overflow:ellipsis;' + 'flex:0 1 auto;min-width:0;cursor:default;' + (tab.selected - ? 'background:#f5f4f2;font-weight:bold;position:relative;top:1px;' - : 'background:#c8c4bc;'); + ? 'background:var(--wx-window);color:var(--wx-window-text);' + + 'font-weight:bold;position:relative;top:1px;' + : 'background:var(--wx-button-face);'); btn.addEventListener('click', function (ev) { ev.stopPropagation(); el.dataset.wxLastCommand = String(idx); @@ -1398,7 +1482,8 @@ tooltipEl.id = 'wx-tooltip'; tooltipEl.style.cssText = 'position:fixed;z-index:20000;display:none;' + - 'background:#ffffe1;color:#000;border:1px solid #000;' + + 'background:var(--wx-info-bg);color:var(--wx-info-text);' + + 'border:1px solid var(--wx-info-text);' + 'padding:2px 4px;font:12px sans-serif;white-space:pre;' + 'pointer-events:none;max-width:400px;'; document.body.appendChild(tooltipEl); diff --git a/configure b/configure index 2334a89b3d30..bfe6660966d9 100755 --- a/configure +++ b/configure @@ -1051,7 +1051,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -1100,6 +1099,7 @@ with_msw with_directfb with_x11 with_qt +with_wasm enable_nanox enable_gpe with_libpng @@ -1503,7 +1503,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1756,15 +1755,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1902,7 +1892,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2055,7 +2045,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2391,6 +2380,7 @@ Optional Packages: --with-directfb use DirectFB --with-x11 use X11 --with-qt use Qt + --with-wasm use WebAssembly --with-libpng use libpng (PNG image format) --with-libjpeg use libjpeg (JPEG file format) --with-libtiff use libtiff (TIFF file format) @@ -3897,6 +3887,7 @@ USE_WIN32=0 USE_DOS=0 USE_BEOS=0 USE_MAC=0 +USE_WASM=0 USE_AIX= USE_BSD= USE_DARWIN= USE_FREEBSD= @@ -3914,7 +3905,7 @@ USE_ALPHA= NEEDS_D_REENTRANT_FOR_R_FUNCS=0 -ALL_TOOLKITS="GTK OSX_COCOA OSX_IPHONE MOTIF MSW X11 DFB QT" +ALL_TOOLKITS="GTK OSX_COCOA OSX_IPHONE MOTIF MSW X11 DFB QT WASM" DEFAULT_wxUSE_GTK=0 DEFAULT_wxUSE_OSX_COCOA=0 @@ -3924,6 +3915,7 @@ DEFAULT_wxUSE_MSW=0 DEFAULT_wxUSE_X11=0 DEFAULT_wxUSE_DFB=0 DEFAULT_wxUSE_QT=0 +DEFAULT_wxUSE_WASM=0 DEFAULT_DEFAULT_wxUSE_GTK=0 DEFAULT_DEFAULT_wxUSE_OSX_COCOA=0 @@ -3933,6 +3925,7 @@ DEFAULT_DEFAULT_wxUSE_MSW=0 DEFAULT_DEFAULT_wxUSE_X11=0 DEFAULT_DEFAULT_wxUSE_DFB=0 DEFAULT_DEFAULT_wxUSE_QT=0 +DEFAULT_DEFAULT_wxUSE_WASM=0 PROGRAM_EXT= SAMPLES_CXXFLAGS= @@ -4121,6 +4114,14 @@ case "${host}" in DEFAULT_DEFAULT_wxUSE_QT=1 ;; + *-*-emscripten* ) + USE_WASM=1 + $as_echo "#define __WASM__ 1" >>confdefs.h + + DEFAULT_DEFAULT_wxUSE_WASM=1 + PROGRAM_EXT=".js" + ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** System type ${host} is unknown, assuming generic Unix and continuing nevertheless." >&5 $as_echo "$as_me: WARNING: *** System type ${host} is unknown, assuming generic Unix and continuing nevertheless." >&2;} @@ -4634,6 +4635,19 @@ fi + +# Check whether --with-wasm was given. +if test "${with_wasm+set}" = set; then : + withval=$with_wasm; + if test "$withval" != yes; then + as_fn_error $? "Option --with-wasm doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_WASM="$withval" CACHE_WASM=1 TOOLKIT_GIVEN=1 + +fi + + + enablestring= defaultval= if test -z "$defaultval"; then @@ -4739,7 +4753,7 @@ if test "$wxUSE_GUI" = "yes"; then NUM_TOOLKITS=`expr ${wxUSE_GTK:-0} \ + ${wxUSE_OSX_COCOA:-0} + ${wxUSE_OSX_IPHONE:-0} + ${wxUSE_DFB:-0} \ + ${wxUSE_MOTIF:-0} + ${wxUSE_MSW:-0} \ - + ${wxUSE_X11:-0} + ${wxUSE_QT:-0}` + + ${wxUSE_X11:-0} + ${wxUSE_QT:-0} + ${wxUSE_WASM:-0}` case "$NUM_TOOLKITS" in @@ -31222,6 +31236,12 @@ $as_echo "yes" >&6; } fi fi fi + + if test "$wxUSE_WASM" = 1; then + TOOLKIT=WASM + GUI_TK_LIBRARY="-sUSE_LIBPNG=1 -sUSE_ZLIB=1" + fi + TOOLKIT_DIR=`echo ${TOOLKIT} | tr '[A-Z]' '[a-z]'` if test "$wxUSE_UNIVERSAL" = "yes"; then @@ -33724,10 +33744,10 @@ $as_echo "$as_me: WARNING: OpenGL libraries not available, disabling support for fi fi elif test "$USE_WASM" = 1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using WebGL for OpenGL support on WASM" >&5 -printf "%s\n" "$as_me: Using WebGL for OpenGL support on WASM" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Using WebGL for OpenGL support on WASM" >&5 +$as_echo "$as_me: Using WebGL for OpenGL support on WASM" >&6;} OPENGL_LIBS="" - printf "%s\n" "#define wxUSE_OPENGL_EMULATION 1" >>confdefs.h + $as_echo "#define wxUSE_OPENGL_EMULATION 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: wxGLCanvas not implemented for this port, library will be compiled without it." >&5 @@ -44546,7 +44566,8 @@ fi *-*-sunos4* | \ *-*-osf* | \ *-*-dgux5* | \ - *-*-sysv5* ) + *-*-sysv5* | \ + *-*-emscripten ) ;; *) diff --git a/src/common/bmpbndl.cpp b/src/common/bmpbndl.cpp index dc4fd77cf636..a4eeffd97c21 100644 --- a/src/common/bmpbndl.cpp +++ b/src/common/bmpbndl.cpp @@ -564,7 +564,15 @@ wxSize wxBitmapBundle::GetPreferredLogicalSizeFor(const wxWindow* window) const { wxCHECK_MSG( window, wxDefaultSize, "window must be valid" ); +#ifdef __WXWASM__ + // Browser layout uses CSS pixels, independently of devicePixelRatio. + // GetPreferredBitmapSizeAtScale() returns physical asset pixels, so using + // it directly doubles sizer dimensions on a 2x display. + const double scale = window->GetDPIScaleFactor(); + return GetPreferredBitmapSizeAtScale(scale) / scale; +#else return window->FromPhys(GetPreferredBitmapSizeAtScale(window->GetDPIScaleFactor())); +#endif } wxSize wxBitmapBundle::GetPreferredBitmapSizeAtScale(double scale) const diff --git a/src/wasm/anybutton.cpp b/src/wasm/anybutton.cpp index f20dc276a3ba..2a56bedab641 100644 --- a/src/wasm/anybutton.cpp +++ b/src/wasm/anybutton.cpp @@ -15,7 +15,7 @@ wxBitmap wxAnyButton::DoGetBitmap(State state) const { - return m_bitmaps[state].GetBitmap(wxDefaultSize); + return m_bitmaps[state].GetBitmapFor(this); } void wxAnyButton::DoSetBitmap(const wxBitmapBundle& bitmap, State which) @@ -28,7 +28,7 @@ void wxAnyButton::DoSetBitmap(const wxBitmapBundle& bitmap, State which) // TODO(dom-phase-3): reflect the other states (hover/pressed/disabled). if (which == State_Normal && WasmGetDomId()) { - const wxBitmap bmp = m_bitmaps[which].GetBitmap(wxDefaultSize); + const wxBitmap bmp = m_bitmaps[which].GetBitmapFor(this); if (bmp.IsOk()) wxDomSetImageDataURL(WasmGetDomId(), wxDomBitmapToDataURL(bmp), bmp.GetWidth(), bmp.GetHeight()); diff --git a/src/wasm/app.cpp b/src/wasm/app.cpp index 134a6a0aabd8..a72075e0b689 100644 --- a/src/wasm/app.cpp +++ b/src/wasm/app.cpp @@ -661,7 +661,11 @@ EM_BOOL KeyCallback(int eventType, } else { - preventDefault = false; + // The CHAR_HOOK handler consumed this key and did not allow + // the next wx event. Cancel the browser keydown as well, or + // printable keys generate a later keypress which we translate + // to wxEVT_CHAR and dispatch the same hotkey a second time. + preventDefault = true; } } else diff --git a/src/wasm/domevents.cpp b/src/wasm/domevents.cpp index 5fd73ed8212a..4f8a1e883f91 100644 --- a/src/wasm/domevents.cpp +++ b/src/wasm/domevents.cpp @@ -53,7 +53,15 @@ wxString wxDomBitmapToDataURL(const wxBitmap& bitmap) if ( !bitmap.IsOk() ) return wxString(); - const wxImage image = bitmap.ConvertToImage(); + // GetWidth()/GetHeight() are logical dimensions for a scaled WASM + // bitmap, but the backing store contains scale-factor-sized pixel data. + // Export a detached copy at scale 1 so the PNG retains all of those + // pixels; wxDomSetImageDataURL() still sizes the in logical CSS px. + wxBitmap exportBitmap(bitmap); + if ( exportBitmap.GetScaleFactor() != 1.0 ) + exportBitmap.SetScaleFactor(1.0); + + const wxImage image = exportBitmap.ConvertToImage(); if ( !image.IsOk() ) return wxString(); diff --git a/src/wasm/statbmp.cpp b/src/wasm/statbmp.cpp index 462bf47a99b3..5030a1aa0ac8 100644 --- a/src/wasm/statbmp.cpp +++ b/src/wasm/statbmp.cpp @@ -53,7 +53,10 @@ void wxStaticBitmap::SetBitmap(const wxBitmapBundle& bitmap) if (WasmGetDomId()) { - const wxBitmap bmp = m_bitmapBundle.GetBitmap(wxDefaultSize); + // Select the representation for the current display scale. The PNG + // keeps its physical pixels while the dimensions passed below remain + // logical CSS pixels. + const wxBitmap bmp = m_bitmapBundle.GetBitmapFor(this); if (bmp.IsOk()) wxDomSetImageDataURL(WasmGetDomId(), wxDomBitmapToDataURL(bmp), bmp.GetWidth(), bmp.GetHeight()); diff --git a/src/wasm/toolbar.cpp b/src/wasm/toolbar.cpp index 9c03cd5c7514..402386360f4f 100644 --- a/src/wasm/toolbar.cpp +++ b/src/wasm/toolbar.cpp @@ -197,8 +197,10 @@ void wxToolBar::WasmRebuildTools() img = wxDomBitmapToDataURL(bmp); if (!img.empty()) { - imgW = bmp.GetWidth(); - imgH = bmp.GetHeight(); + // Bitmap dimensions are logical after bundle scaling; the + // encoded PNG retains the high-resolution backing pixels. + imgW = wxRound(bmp.GetLogicalWidth()); + imgH = wxRound(bmp.GetLogicalHeight()); } } From 68b65ba26e5e2350dea1fd4f5fa5767356ff94f2 Mon Sep 17 00:00:00 2001 From: rubenbaldewsing <94007802+rubenbaldewsing@users.noreply.github.com> Date: Fri, 17 Jul 2026 19:31:05 -0700 Subject: [PATCH 416/416] fix(wasm): repair keyboard and listbox events --- build/wasm/wx-dom.js | 40 +++++++++++++++++++++++++++++------ include/wx/wasm/listbox.h | 1 + include/wx/wasm/private/dom.h | 16 +++++++------- src/wasm/app.cpp | 40 ++++++++++++++++++----------------- src/wasm/checklst.cpp | 15 ++----------- src/wasm/listbox.cpp | 34 +++++++++++++---------------- src/wasm/mouse.cpp | 8 ++++++- 7 files changed, 88 insertions(+), 66 deletions(-) diff --git a/build/wasm/wx-dom.js b/build/wasm/wx-dom.js index 4508fd1435cc..697e44e05842 100644 --- a/build/wasm/wx-dom.js +++ b/build/wasm/wx-dom.js @@ -847,6 +847,33 @@ } }; + window.wxDomIsItemSelected = function (domId, index) { + var el = controls.get(domId); + if (!el) return false; + if (el.dataset.wxCheckList) { + var boxes = el.querySelectorAll('input[type=checkbox]'); + return !!(boxes[index] && boxes[index].checked); + } + return !!(el.tagName === 'SELECT' && el.options[index] && + el.options[index].selected); + }; + + // Map wx client coordinates to the native