Commit Graph
100 Commits
Author SHA1 Message Date
Vadim Zeitlin 670835aec7 Update release files for 3.3.3
Update READMEs, change log etc.
2026-07-05 18:01:58 +02:00
Vadim Zeitlin 12c509664b Add a disabled by default test for checking loading TAR files
See #26607.
2026-07-05 17:25:59 +02:00
Vadim Zeitlin e56a76dc63 Fix wxSpinCtrl border in wxMSW dark mode
The changes of 8a573dd7e7 (Improve handling of the borders in MSW dark
mode, 2026-06-08) resulted in using wxBORDER_SUNKEN for wxSpinCtrl by
default, but this didn't look right in the dark mode, so change its code
to explicitly prefer wxBORDER_SIMPLE now that DoTranslateBorder()
doesn't use it for dark mode any more.

See #26656.

Closes #26655.
2026-07-04 19:56:24 +02:00
Vadim Zeitlin 055d882eaf Merge branch 'fileconfig-fixes'
Fix assert on duplicate group in wxFileConfig.

See #26654.
2026-07-02 23:49:52 +02:00
Vadim Zeitlin b03b365a17 Merge branch 'osx-macos-27'
macOS 27 adaptions.

Closes #26578.
2026-07-02 23:49:20 +02:00
Vadim Zeitlin 8a5360b3d0 Use earliest supported macOS version in configure by default
Use the first value of DEPLOYMENT_TARGET_SUGGESTED_VALUES plist key
instead of MACOSX_DEPLOYMENT_TARGET.

Also drop support for using "buildSettings" key, this is something very
old and certainly not used by any of the still supported Xcode versions.

And simplify the commands used in a configure, in particular use a
single sed command with "p" modifier instead of using grep and then sed.
2026-07-02 23:48:22 +02:00
Vadim Zeitlin 3ac810a234 Warn about multiple groups in wxFileConfig instead of asserting
It's not clear whether we handle them correctly, and so it might be
better to refuse input with duplicated groups entirely, but for now at
least avoid asserting when encountering them.
2026-07-02 20:48:43 +02:00
Vadim Zeitlin 5a9bcab361 Add pseudo-test allowing to create wxFileConfig for any file
This is convenient for testing problems, for example those found by
OSS-Fuzz (see #26597).
2026-07-02 20:48:41 +02:00
Vadim Zeitlin dd5a0cea4f Guard test for wxPropertyGrid macros with wxUSE_PROPGRID
This is another correction to the test added in the grandparent commit.

See #26651.
2026-07-01 18:48:15 +02:00
Vadim Zeitlin 317610ed4b Suppress spurious warning introduced in parent commit
We get unexpected and unwanted -Wsuggest-attribute=const for the test
code added in the last commit.

See #26651.
2026-07-01 18:42:17 +02:00
Vadim Zeitlin a04dceefea Test wxPropertyGrid macros with wxNO_IMPLICIT_WXSTRING_ENCODING
Verify that these macros produce compilable code.

See #26651.
2026-07-01 16:34:39 +02:00
Vadim Zeitlin 98d4499e6a Reformat recently added wxOSX border code to follow wx style
Put "{" opening a block on its own line.

No real changes.
2026-06-30 22:34:07 +02:00
Vadim Zeitlin 5426a72f95 Merge branch 'osx-window-invalidate-inset-cache' of github.com:ryancog/wxWidgets
Add wxWindow::MacInvalidateInsetCache() to wxOSX/Cocoa.

See #26625.

Closes #26622.
2026-06-30 22:32:30 +02:00
Vadim Zeitlin 46cd33e2be Revert "Ensure the window origin is visible after DPI change"
This reverts commit 75284bb8f0 because it
doesn't always use the right window: at least under Windows 11 25H2 it
is possible that the center of the window is still on the old display
when we receive WM_DPICHANGED and so the window is moved to a wrong
position because of the check added in that commit.

Because this check was mostly needed to work around other issues that
made the window become too big, it seems better to revert it rather than
break something that worked correctly before.

See #26604.
2026-06-30 22:19:58 +02:00
Vadim Zeitlin 7b2bc588e3 Really fix wxStyledTextCtrl::GetMarginCount() documentation
This was done manually in 9864777203 (Upgrade to Doxygen 1.15.0,
2026-05-05) but the changes were lost after regeneration, so add an
override for this function documentation to the generating script itself
to ensure that they're preserved.

This also has the nice side effect of generating a better comment in the
header.

See #26431.
2026-06-27 19:54:44 +02:00
Vadim Zeitlin b7f4cb4f74 Initialize wxRibbonBar members in their declarations
This ensures that they are always initialized, even when the default
ctor is used, which wasn't the case before for m_help_button_hovered
which was never set in this case, resulting in UBSAN errors when running
the ribbon sample.
2026-06-27 19:07:09 +02:00
Vadim Zeitlin 3d8aea230c Add debug logging for unexpected input in wxIPCSocketStream
It could be useful to get more information in case of a problem, so log
unexpected situations.
2026-06-27 19:00:14 +02:00
Vadim Zeitlin 2209580741 Refuse to read 0-sized data packets in wxIPCSocketStream
This doesn't make sense and must also indicate a problem with either the
connection or the peer.

See #26628.
2026-06-27 18:57:14 +02:00
Vadim Zeitlin 8262667a71 Use vector<> instead of manual malloc/free in PCX image handler
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / macOS latest wxGTK 3 Unix Makefiles (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.10 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS Simulator on Silicon Mac (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Update Documentation / Update Online Documentation (push) Has been cancelled
No real changes, just use vector<> to avoid having to explicitly call
free().
2026-06-23 20:01:45 +02:00
Vadim Zeitlin aeb11b8b7f Fix recently broken min size computation on DPI change
Use fitting window size, not client size, which was wrongly used in
8386a98409 (Restrict the new size after DPI change to the display size,
2026-06-16).

See #26604.
2026-06-23 19:29:16 +02:00
Vadim Zeitlin 0a6b26ea43 Merge branch 'msw-button-fg-col'
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / macOS latest wxGTK 3 Unix Makefiles (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.10 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS Simulator on Silicon Mac (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Update Documentation / Update Online Documentation (push) Has been cancelled
Respect user-set button foreground colour in wxMSW.

See #26618.
2026-06-22 14:34:26 +02:00
Vadim Zeitlin 17e1af0a6b Merge branch 'msw-dpi-change-fixes'
Fixes for behaviour after DPI change in wxMSW.

Closes #26498.

See #26604.
2026-06-22 14:29:16 +02:00
Vadim Zeitlin 52360028b9 Merge branch 'svggc-pen-brush' of github.com:MaartenBent/wxWidgets
Support pen and brush styles in wxSVGGraphicsContext.

See #26586.
2026-06-21 16:30:59 +02:00
Vadim Zeitlin e786a4c78e Use a variant of background colour in hot state for the buttons
Instead of ignoring the user-set background colour and always using the
system default colour in the hot (a.k.a. current) state, use a slightly
different shade of the custom colour.

This avoids, or at least reduces, problems with the button text becoming
unreadable on the default background but still makes the button change
its visual appearance when the mouse hovers over it.

See #22721, #25806, #26453.
2026-06-21 16:21:54 +02:00
Vadim Zeitlin a5932c8af0 Revert "Force standard button foreground color when highlighted on MSW"
This reverts commit f3ab568a02 because
people do want to use the selected foreground colour even in "current"
state, see #26453.

A better solution will be implemented for the problem of #22721 which
was originally solved by this commit, see #25806.
2026-06-20 18:36:58 +02:00
Vadim Zeitlin 81ac052c6e Always set both components of pane sizer item min size
wxAUI layout uses min size (1,1) if no min size is explicitly set for
the pane but if an explicit size was given in one direction, it used
best size in the other, unspecified, direction, which was unexpected,
especially if the best size of the window was big, as setting min size
resulted in dramatically increasing the pane size.

Now we still set the other component of min size to 1 in this case,
which avoids such surprises.

Closes #26557.
2026-06-20 16:57:52 +02:00
Vadim Zeitlin 0245dea951 Update wxGridSizer gap sizes on DPI change
Rescale gaps between rows/columns when the DPI changes.

See #26498.
2026-06-20 15:51:21 +02:00
Vadim Zeitlin 3a1bcddd2e Update wxSizer own min size on DPI change
We already updated the min size of wxSizerItem containing the sizer, but when
the sizer has a fixed min size set, this size needs to be updated as well, so
do it too in UpdateOnDPIChange().

See #26498.
2026-06-20 15:50:14 +02:00
Vadim Zeitlin 2da4ea9744 Move code for updating sizers on DPI change to wxSizer itself
Replacing the existing global UpdateSizerOnDPIChange() with a member
function will allow accessing private wxSizer variables in it (see the
next commit) and making it virtual will allow overriding it in the
derived classes to update more fields on DPI change.

No real changes yet.

This commit is best viewed with Git --color-moved option.
2026-06-20 15:48:13 +02:00
Vadim Zeitlin 4dd107ae7d Merge branch 'windows10-darkmode_darktheme2' of github.com:stevecor/wxWidgets
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Only use DarkMode_DarkTheme if available by testing for the earliest
Windows version in which it appeared.

See #26613.
2026-06-20 03:18:40 +02:00
Vadim Zeitlin 934705ef82 Replace wxTopLevelWindow::GeometrySerializer with GeometryStore
The old class used incorrect const qualifiers on its member functions:
saving function typically modifies the object being saved into, and so
must not be const, while loading function should be const, but the old
class reversed this.

Do it right this time in the new GeometryStore class and keep the old
class for compatibility only.

See #26602.
2026-06-19 17:14:39 +02:00
Vadim Zeitlin 32d9ea2b08 Use std::vector<> in wxDataInputStream code
Prefer using the standard container instead of manual memory management.

No real changes.
2026-06-17 02:06:28 +02:00
Vadim Zeitlin 863e46bb53 Limit maximum height of wxTreeCtrl best size
A tree control with many items could return a size much bigger than the
size of the screen, resulting in any window containing it and computing
its fitting size becoming vertically maximized, which is not the
expected behaviour as other controls, e.g. multiline wxTextCtrl, don't
behave like this.

Arbitrarily limit the best height to ~20 items.
2026-06-16 20:19:11 +02:00
Vadim Zeitlin 75284bb8f0 Ensure the window origin is visible after DPI change
Keep the window origin on its display to avoid moving it out of visible
area, which is unexpected and inconvenient.
2026-06-16 20:05:11 +02:00
Vadim Zeitlin 8386a98409 Restrict the new size after DPI change to the display size
wxSizer::GetMinSize() can return a size bigger than the display size,
but we never want to use such size for the window, so ensure that it
fits the display client area.

This also ensures that the window doesn't become bigger than its max
size.
2026-06-16 20:00:59 +02:00
Vadim Zeitlin 0ebc0e51ec Don't scale AUI layout on platforms using DPI-independent pixels
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / macOS latest wxGTK 3 Unix Makefiles (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.10 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS Simulator on Silicon Mac (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Disable changes of d32c574141 (Update AUI layout on DPI change,
2026-06-01) for the platforms with wxHAS_DPI_INDEPENDENT_PIXELS, i.e.
wxGTK and wxOSX, because it's not just unnecessary but wrong to scale
layout by DPI scale factor there.
2026-06-16 14:41:51 +02:00
Vadim Zeitlin 6af5df1d43 Check that page inserted in wxAuiNotebook has correct parent
The page isn't shown correctly otherwise (at least in wxMSW) and this
check is consistent with a similar one in wxNotebook.
2026-06-16 14:34:46 +02:00
Vadim Zeitlin 753de29cae Merge branch 'darkmode-custom-colour' of github.com:stevecor/wxWidgets
Preserve custom colours upon dark mode switch.

Also remove wxStaticText::MSWSetDarkOrLightMode() as it appears to be
unnecessary.

See #26596.
2026-06-16 00:29:38 +02:00
Vadim Zeitlin 0af78f6896 Fix active tab index value saved in AUI layout
This value must be the page index, independent of the page current
position in its tab control, but we saved the page position instead.
Get the active page position in the "m_tabs" pseudo tab control which
always stores pages in their addition order to fix this.
2026-06-15 00:37:18 +02:00
Vadim Zeitlin a1e910f517 Use "windows-2022" image for wxQt CI builds using MSVS 2022
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / macOS latest wxGTK 3 Unix Makefiles (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.10 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS Simulator on Silicon Mac (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Update Documentation / Update Online Documentation (push) Has been cancelled
Somehow using "windows-2025" still results in "windows-2025-vs2026"
image being used (GitHub Actions bug?).
2026-06-13 22:25:53 +02:00
Vadim Zeitlin 47945b13b0 Use "windows-2025" image for wxQt builds using MSVS 2022
This MSVS version is not available in "windows-2025-vs2026" image to
which "windows-latest" maps now.
2026-06-13 20:52:51 +02:00
Vadim Zeitlin fd35f189b6 Merge branch 'msw-dark-taskdlg'
Add dark mode support to wxMSW task dialog-based dialogs.

See #26570.
2026-06-13 20:28:01 +02:00
Vadim Zeitlin 5bedad68dd Remove note about wxToolBar::SetDropdownMenu() in dark mode
This remark is obsolete, the problem described by it was fixed by
c301af42f9 (Fix wxMSW toolbar drop down arrow appearance in dark mode,
2024-10-22).
2026-06-13 20:21:58 +02:00
Vadim Zeitlin c3c3b70aca Don't say that task dialogs don't support dark mode any more
This limitation is lifted by the changes in this branch.
2026-06-12 18:42:17 +02:00
Vadim Zeitlin 57def0bcdc Merge branch 'darkmode-switching-checkbox' of github.com:stevecor/wxWidgets
Fix dark mode switching for wxCheckBox and wxRadioButton in wxMSW.

See #26572.
2026-06-11 23:50:50 +02:00
Vadim Zeitlin 767e9c8bb9 Fix leak in wxHtmlHelpData::LoadCachedBook() after previous commit
Don't leak wxHtmlHelpDataItem memory, even if the data is invalid.

See #26577.
2026-06-11 23:45:37 +02:00
Vadim Zeitlin afe8b984a5 Simplify check for null element class
Return early in this case to ensure that the pointer can be used without
any checks in the code below.

No real changes.
2026-06-11 23:23:34 +02:00
Vadim Zeitlin aeef45946c Fix progress dialog background
Pass the dark brush to use in the dialog subclass proc and do not set
the class background brush to avoid it being freed.
2026-06-11 04:14:50 +02:00
Vadim Zeitlin 6132c17059 Add AutoBSTR helper to fix BSTR leaks in task dialog code
Also check that the returned BSTR is non-NULL before using it, as it can
be NULL even if the accessor returned S_OK.
2026-06-11 04:09:12 +02:00
Vadim Zeitlin a36ff353aa Take wxWindowMSW parameter in wxUxThemeHandle ctor
We don't need wxUniv wxWindow deriving from wxWindowMSW in that build
configuration here, just wxWindowMSW is enough and avoids the need to
cast wxWindowMSW pointers to wxWindow ones in wxUniv/MSW build.
2026-06-10 17:28:48 +02:00
Vadim Zeitlin ec85de78d3 Fix problem with wrongly deleting the background brush
We shouldn't install HBRUSH owned by us as class background brush
because this brush is deleted by Windows itself, invalidating the HBRUSH
and resulting in visible problems when the background is painted using
this HBRUSH after showing a task dialog in dark mode.

Fix this by uninstalling the brush before deleting the window.

This also avoids the awkward code deleting the old class brush only if
it's not one of the standard brushes: now we don't need to do it any
longer, as we restore this brush before deleting the window.
2026-06-10 16:35:25 +02:00
Vadim Zeitlin bbb3fc78bb Keep a single real implementation of SetWindowSubclassIfNeeded()
Don't duplicate it for the special case of passing 0 as data, the
compiler should be able to optimize out the trivial lambda and doing it
like this reduces code duplication.

No real changes.
2026-06-10 16:34:31 +02:00
Vadim Zeitlin af620105cf Add GitHub user name of Mohmed Abdel-Fattah to "Author" lines
See https://github.com/wxWidgets/wxWidgets/pull/26570#discussion_r3385217953
2026-06-10 16:12:39 +02:00
Vadim Zeitlin 53d16f0144 Fix HICON leak in task dialog dark mode support code
Destroy the icon returned by SHGetStockIconInfo().
2026-06-08 03:18:33 +02:00
Vadim Zeitlin 97c1f3bbfb Ignore unused parameters when dark mode support is disabled
Suppress harmless warnings.
2026-06-08 03:10:24 +02:00
Vadim Zeitlin 37ff69e8d4 Disable support for dark mode in task dialog for wxUniv
Native dialogs shouldn't be used anyhow when using wxUniv.
2026-06-08 03:06:00 +02:00
Vadim Zeitlin 1ec6163e9e Include wx/brush.h to fix the build when not using PCH 2026-06-08 03:06:00 +02:00
Vadim Zeitlin a2d7a75a1e Fix HBRUSH leaks in task dialog dark mode code
For not totally clear reasons, the brushes allocated here were not
freed, resulting in the number of allocated brushes growing every time a
dialog was shown.

Use brushes from wxBrushList to prevent this from happening.

This doesn't fix all GDI leaks yet, there is still a USER handle and 3
GDI handlers leaked for every dialog shown, but they don't seem to be
brushes any more.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 272875a9c6 Add wrappers around window subclassing functions
Simplify the code a bit more by avoiding calls to GetWindowSubclass()
and then SetWindowSubclass() or RemoveWindowSubclass() with redundant
parameters.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 361dbd9626 Use wx-specific subclass IDs
Use the same prefix for all of our subclass IDs, this should hopefully
minimize the probability of a clash.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin b5baa3e60f Remove unnecessary "static" from functions in anonymous namespace
Use of "static" is unnecessary, these functions already have internal
linkage.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 8ab0173ea3 Add GetCurrentAutomationId() helper
Wrap calls to IUIAutomationElement::get_CurrentAutomationId().
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 5acd403f4f Reformat task dialog dark mode support code
No real changes, a lot of formatting and indentation fixes and some
minor changes restructuring the code to be simpler and more readable.

This commit is best viewed ignoring whitespace-only changes.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 26bf503af8 Use recently added wxUxThemeHandle::GetFont()
No real changes, just simplify the code by using wx wrapper.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 3de0aec9a5 Add WinStructWordSize<> helper and use it
This is similar to WinStruct<> but initializes dwSize and not cbSize
struct member.

In the future we should auto-detect the xxSize existence in WinStruct
using either SFINAE or, preferably, concepts, but for now keep things
simple.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 847561bdf6 Extend wxUxThemeHandle and use it more in dark task dialog code
Add HDC parameter to ::GetThemePartSize() wrappers and also add wrappers
for ::GetThemeMargins() and ::GetThemeFont().

The net effect is a small simplification of the task dialog code and
checking and logging of errors when calling these functions.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 23409e05b8 Don't do anything in TDPaintGlyphs() when using native dark theme
This function effectively didn't do anything anyhow in this case, just
make it more clear and save some useless work by returning immediately.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 39691558d3 Remove TDPageState::isDark
This wasn't used consistently, in many places TDHasNativeDarkTheme()
(which is used to initialize this member variable) was called directly,
so just stop storing its value in this variable and always call this
function, which is cheap as it caches the return value.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 683d735280 Remove TDPageState::hTDS which was same as hTD
The 2 themes handles were always identical, so remove one of them.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 6d45067a3c Remove TDPageState::CloseThemes()
Calling this function to reset "themesOk" member variable was
inconsistent with resetting similar "elemsOk" directly, just remove the
function to make things simpler and more consistent.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 026e93d23a Check for error after calling ::SetWindowTheme()
Reuse the already existing code in darkmode.cpp by extracting it into
SetTheme() function and call it from task dialog dark mode code.

Also add a helper wxHasRealDarkTheme() function to make the code more
readable.
2026-06-08 02:44:16 +02:00
Vadim Zeitlin 88b1cafa4b Reuse GetWindowDPI() from task dialog dark mode code
Don't duplicate this function definition, make it internally public,
i.e. declare it, with "wx" prefix, in a private header and reuse it.
2026-06-07 21:58:06 +02:00
Vadim Zeitlin bd03fbb6b8 Don't pass IUIAutomation as parameter to TDApplyToChildren()
Similar to the last comment, this IUIAutomation pointer is stored in a
global variable, so just access it directly for consistency.
2026-06-07 21:51:44 +02:00
Vadim Zeitlin dede73a596 Don't store IUIAutomation in TDEnumData
This is unnecessary, as this pointer is stored in a global variable
already accessed directly from the other function, so just access it
from here as well.
2026-06-07 21:49:56 +02:00
Vadim Zeitlin e0a95d55e4 Rename LPARAM parameter to standard "lParam" name
No real changes, just don't deviate from the usual convention
unnecessarily.
2026-06-07 21:49:21 +02:00
Vadim Zeitlin db39a68c08 Stop using wxBasicString unnecessarily
Just use wcscmp() to check BSTR contents directly.
2026-06-07 21:47:49 +02:00
Vadim Zeitlin a5979f400d Add helper GetHWNDFromElement(IUIAutomationElement) function
Hide ugly cast from UIA_HWND to HWND in a function and also add error
handling after IUIAutomationElement::get_CurrentNativeWindowHandle()
call.
2026-06-07 21:46:43 +02:00
Vadim Zeitlin 1c6d7e96de Don't use thread-local in task dialog dark mode support code
The global variables are only ever accessed from the GUI thread and
don't need to be thread-local.

Also add a wxModule to clean them up on exit.
2026-06-07 18:30:53 +02:00
Vadim Zeitlin fac69ca3f2 Add default ctor and move assignment to wxUxThemeHandle
Simplify the code in task dialog dark mode support by using the new
special member functions instead of ugly workarounds that were used
before.
2026-06-07 18:14:59 +02:00
Vadim Zeitlin 8b2b9069b3 Don't define CLSID_CUIAutomation and IID_IUIAutomation ourselves
They should be already defined in the SDK headers.
2026-06-07 18:14:59 +02:00
Vadim Zeitlin e1ca1dd77f Use wxColour and wxUxThemeHandle instead of raw Windows API
Also don't try to get TDLG_SECONDARYPANEL and TDLG_FOOTNOTESEPARATOR
from the "TaskDialog" theme under Windows 10 as it doesn't define them.

No real changes.
2026-06-07 18:14:59 +02:00
Vadim Zeitlin 739cefeb27 Localize GET_[BGR] macros
Ideal would be to replace them with wxColour functions but for now at
least make their scope as small as possible.
2026-06-07 18:14:59 +02:00
Vadim Zeitlin 3ed49f0187 Use safer wxIID_PPV_ARGS() instead of cast to "void**"
The macro ensures that the pointer is of the correct type.
2026-06-07 18:14:59 +02:00
Vadim Zeitlin 8048524701 Return TRUE, not 1, when handling WM_ERASEBKGND
No real changes, just use the usual convention.
2026-06-07 18:14:59 +02:00
Vadim Zeitlin 12eed00ef7 Make IUIAutomation pointer a local variable
There is no need to make it a global.

Also reformat the code a bit.
2026-06-07 18:14:58 +02:00
Vadim Zeitlin 0dce46f5a1 Use AutoHBRUSH instead of manually allocating/deleting HBRUSHes
This allows to remove DestroyBrushes() and Destroy() itself as it was
only called before destroying TDPageState object and the brushes are now
deleted by the dtor.

Also allocate the brushes immediately when creating this object, they
will be always used and so it doesn't seem worth it to postpone doing
this.
2026-06-07 18:14:58 +02:00
Vadim Zeitlin 091ba7a895 Remove unnecessary member initialization in TDPageState ctor
Members are already initialized in their declarations.
2026-06-07 18:14:58 +02:00
Vadim Zeitlin 2ebde404ab Remove WM_SETTINGCHANGE handling from task dialog proc
Task dialog callback never gets this message, so this code is useless.
2026-06-07 18:14:58 +02:00
Vadim Zeitlin 92254ce2db Factor out wxIsSystemColourChange() helper function
Check whether the LPARAM of WM_SETTINGCHANGE is "ImmersiveColorSet".

No real changes yet, just make it possible to reuse this in the upcoming
commits.
2026-06-07 18:14:58 +02:00
Vadim Zeitlin d93210dd5e Fix drawing of wxCheckListBox in dark mode in wxMSW
Use "DarkMode_Explorer::Button" for the check box metrics and drawing as
"BUTTON" theme simply doesn't support them in dark mode and using it
resulted in check boxes in wxCheckListBox not being drawn at all.

Closes #26561.
2026-06-07 03:07:30 +02:00
Vadim Zeitlin 3c79303182 Merge branch 'cmake-install-all-headers' of github.com:MaartenBent/wxWidgets
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / macOS latest wxGTK 3 Unix Makefiles (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.10 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS Simulator on Silicon Mac (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Always install common headers when using CMake.

And fix building when some options are disabled.

See #26562.
2026-06-06 15:55:40 +02:00
Vadim Zeitlin ddd2b3fa63 Capture "this" explicitly in lambda used in wxMSW wxJoystick code
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / macOS latest wxGTK 3 Unix Makefiles (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.10 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS Simulator on Silicon Mac (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW builds / wxMSW vs2026 DLL Release x64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
Avoid warning about implicit "this" capture being deprecated in C++20.
2026-06-04 17:44:58 +02:00
Vadim Zeitlin 3d245236f9 Merge branch 'dpi-non-resizeable'
Improve TLW resizing on DPI change.

See #26550.
2026-06-02 14:45:54 +02:00
Vadim Zeitlin a935e63c40 Merge branch 'pg-dpi-change'
Fix text size in wxPropertyGrid after DPI change.

See #26549.
2026-06-02 14:44:59 +02:00
Vadim Zeitlin 09234b9ea3 Merge branch 'aui-dpi-change'
Improve handling of DPI changes in wxAUI.

Currently pane positions are scaled linearly, which may result in small
discrepancies between the initial layout at the given DPI and the layout
at the same DPI after a change from another value, but this is still
much better than not doing anything.

See #26075, #26546.
2026-06-02 14:41:43 +02:00
Vadim Zeitlin 7c4ec03107 Avoid error messages from wxGetOsDescription() under Windows
The changes of 90880faafc (Output Windows 'feature update' version in
wxGetOsDescription(), 2026-06-01) could result in an error message being
logged if "DisplayVersion" value didn't exist in the registry.

Check for its existence before trying to read it to avoid this.

See #26544.
2026-06-02 14:38:48 +02:00
Vadim Zeitlin 42c12b2d8f Fix size of the icons loaded by wxICOResourceHandler
Changes of b45b02c227 (Fix loading of standard icons recently broken in
wxMSW, 2026-05-02) broke computation of the icon size which was left
empty for the non-scaled icons.

Fix this by always computing this size.

See #26370.
2026-06-02 14:31:54 +02:00
Vadim Zeitlin 5aba16a7ce Decrease the size of non-resizeable TLWs on DPI change
We avoid decreasing the size of the TLW on DPI change to preserve the
user-set size, but this logic doesn't apply to non-resizeable windows as
the user couldn't have changed their size, so do shrink them.

Closes #26485.
2026-06-02 03:34:42 +02:00
Vadim Zeitlin 0ce04fca49 Fix adjusting TLW size after DPI change in wxMSW
We changed the size proposed by Windows by the double of the needed
amount.

Call wxRect::Inflate() with one half of the needed change. This may
result in 1px being lost for odd sizes but this is probably not
noticeable in practice.
2026-06-02 03:32:31 +02:00
Vadim Zeitlin cda683d85b Fix size of text in wxPropertyGrid after DPI change in wxMSW
Recreate the bitmap used for double buffering on DPI change to ensure
that it uses the correct scaling factor -- otherwise text was not scaled
correctly after a DPI change.

Closes #26490.
2026-06-02 01:33:12 +02:00