Skip to content

update to upstream wxWidgets v3.2.11 + apply fixes#1

Draft
rubenbaldewsing wants to merge 423 commits into
atopile/mainfrom
integration/wx-3.2.11
Draft

update to upstream wxWidgets v3.2.11 + apply fixes#1
rubenbaldewsing wants to merge 423 commits into
atopile/mainfrom
integration/wx-3.2.11

Conversation

@rubenbaldewsing

Copy link
Copy Markdown

add all commits from wxWidgets v3.2.11

add these fixes on top:

  • Fixed dropdown options not being selectable.
  • Fixed R rotating footprints 180° instead of 90°.
  • Fixed unreadable gray/white UI colors and menu styling.
  • Fixed incorrect HiDPI scaling for icons, buttons, and toolbars.
  • Rebased the WASM port onto stable wxWidgets 3.2.11.
  • Added browser regression tests for keyboard, dropdown, theme, and scaling behavior.

vadz and others added 30 commits April 17, 2025 15:01
This is an ABI-compatible alternative to 98695b4 (Work around
spurious gcc 15 -Wdangling-pointer with -O2, 2025-04-17) in master.

See wxWidgets#25338.
Fix versioned symbols version in 3.2.

See wxWidgets#25329.
Add GCC 14.2.0 to the list of MSYS GCC versions for which the
Windows prebuilt binaries are available.
Extend the hack of 22bcdf0 (Don't use Cmd+C accelerator in dilogs on
Mac by default., 2016-07-17) (later amended by 7a45b79 (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 wxWidgets#15678, wxWidgets#25346.

(cherry picked from commit 2b0b6d4)
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 wxWidgets#25348.

(cherry picked from commit 9537141)
Implement GetMainWindowOfCompositeControl() in the generic version of
wxDataViewCtrl so that focus is reported correctly.

See wxWidgets#25372.

(cherry picked from commit 863e18f)
Unfortunately the changes of f3eb19c (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 wxWidgets#25327.

Closes wxWidgets#25436.
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 wxWidgets#25438.
Document that these changes were made in 3.2.8.1 and not 3.2.9 as
initially planned.
Information about the returned value was incomplete, list all the
possibilities.

See wxWidgets#25452.

(cherry picked from commit ce7273b)
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 wxWidgets#25451.

(cherry picked from commit dce8b09)
Fix the workaround for not getting the correct best size when the
control is empty (see wxWidgets#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 wxWidgets#25468.

(cherry picked from commit 7c38afe)
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 wxWidgets#23733, wxWidgets#25465.

(cherry picked from commit 7f0bc5c)
Do not apply an additional fontScalingFactor, the font has
already the correct size for the DPI of the display.

See wxWidgets#25277.

(cherry picked from commit ae310f0)
With backports of:

5513114
CMake: Create all mswu include directories when installing

1dc7334
CMake: Fix monolithic build with static wxWebviewEdge

3a48ac7
CMake: Add option to force all builtin libraries

51037ff
Add wx/msw/mfc.h to file list

ecf2b0d
Fix wx-config created in CMake build with custom flavour

2ec276a
CMake: Fix iOS OpenGL warning

e1f0a93
CMake: Fix using Cotire for precompiled headers

35e3c14
Fix library naming when cross compiling for Windows using CMake
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 wxWidgets#25561.

(cherry picked from commit 5de590f)
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 wxWidgets#25568.

(cherry picked from commit 1be2e48)
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 wxWidgets#25569.

(cherry picked from commit c7e5ac1)
When the sizer is completely empty, it makes more sense to return 0
from these functions without asserting.

See wxWidgets#25642, wxWidgets#25641.

(cherry picked from commit d1be72a)
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 wxWidgets#25638, wxWidgets#25631.

(cherry picked from commit 0396c26)
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 wxWidgets#24703, wxWidgets#24705.

(cherry picked from commit a6203be)
MSVS 2019 is only available in windows-2019 image which is being retired
by GitHub, see actions/runner-images#12045

(cherry picked from commit b9e3dc1)
Don't rely on implicit conversion to "char*" which may be unavailable
and call utf8_str() explicitly instead.

See afb11cf (Use system default titlebar decorations under Wayland,
2025-06-25) and wxWidgets#25562.

(cherry picked from commit 666f748)
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 wxWidgets#25443.

(cherry picked from commit a2ed8ac)
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 wxWidgets#25384, wxWidgets#25385.

(cherry picked from commit 57c33bb)
dxbjavid and others added 29 commits June 22, 2026 16:22
Don't set background colour to uninitialized memory contents, just
ignore the invalid index.

See wxWidgets#26582.

(cherry picked from commit 7ee01fa)
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 wxWidgets#26595.

(cherry picked from commit 788b458)
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 wxWidgets#25656

(cherry picked from commit ecb37e8)
Run ./misc/scripts/inc_release, bakefile and autoconf.
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 wxWidgets#26617.

(cherry picked from commit e069b7f)

Co-authored-by: Vadim Zeitlin <vadim@wxwidgets.org>
Amend the changes of 644b99d (Make wxSocket::Peek() work with UDP
too, 2023-06-03), see wxWidgets#23594, wxWidgets#23604.
Limit sscanf field widths to avoid overflowing fixed size buffers in
wxPostScriptDC code.

See wxWidgets#26645.

(cherry picked from commit b0e297a)
Use wide-char literal string instead of an ASCII one to fix compilation.

See wxWidgets#26651.

(cherry picked from commit aae2d70)
backport of 62403ce

Import install properties of static libraries
backport of b17a03d
backport of a967bea

Get rid of macro to link sample libraries
backport of 54bbd31

Enable MFC sample when MFC is available
backport of f2ff34b

Fix building wxBase under Android
backport of c52190e
Automatically update outdated WebView2 package
backport of 210d1db

Don't use /MP option when not using MSVS CMake generator
backport of 8ef84ab

Set the wx-config RESCOMP value
backport of 48092f2

Allow to override wx_option_auto
backport of 764d775

Don't install release PDBs when stripped releases is enabled
backport of 8c1ede6

Slightly simplify and make more robust CMake version parsing
backport of 8933626

Build wxxml in non-GUI builds too
backport of 8af1ec0

change wxUSE_CONFIG_NATIVE setting logic in
backport of 9377ec7

Add detection of SM library to CMake
backport of f275d6f

Re-enable wxUSE_DETECT_SM by default in CMake builds
backport of cfb3856

Improve checks for GTK3 on macOS
backport of 92820ce

Only enable wxUSE_HOTKEY on wxMSW and wxOSX
backport of 32ca366

Disable wxUSE_FSVOLUME in the ports not supporting it
backport of 6e8eac9

Backport RES_BUNDLE option
backport of 57edf80

Skip some CMake checks that always fail under Windows
partial backport of 94f5318
…gets into 3.2

Backport some/most CMake improvements from master.

See wxWidgets#26653.
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 a0f5c92)
This is in line with the changes in a0f5c92 and 3d88038

(cherry picked from commit f5cb9a6)
Change WX_VERSION in all Makefile.in files.
(cherry picked from commit 9006641)
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 wxWidgets#26658.

(cherry picked from commit bc73166)
Update version and date.
This should have been part of the parent commit.
Make it possible to (re)generate the docs for some version, e.g. if the
old documentation was somehow lost.
The problem that had been previously fixed in our fork should be fixed
upstream too by now.

(cherry picked from commit 2fd8945)
- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.