-------------------------------------------------------------------------------
                             wxWidgets Change Log
-------------------------------------------------------------------------------

Note: This file contains the list of changes since wxWidgets 3.2, please see
      docs/changes_32.txt for the earlier changes.

INCOMPATIBLE CHANGES SINCE 3.2.x:
=================================

Changes in behaviour not resulting in compilation errors
--------------------------------------------------------

- wxMSW doesn't support versions of Microsoft Windows before Windows 7. If you
  need Windows XP or Vista support, please use wxWidgets 3.2.

- Default exit code in case of fatal error is now consistently 255, including
  when using MSVC for which it was 127 previously. Use wxApp::SetErrorExitCode()
  and wxApp::SetFatalErrorExitCode() to change this to old value if needed.

- wxGLCanvas doesn't use multi-sampling by default any longer, please use
  wxGLAttributes::Samplers(1).SampleBuffers(4) explicitly if you need to keep
  using the same attributes that were previously used by default.

- Default location of file used by wxFileConfig under Unix has changed to
  XDG-compliant ~/.config/appname.conf instead of ~/.appname but note that
  any existing files at the old location will still continue to be used.
  See wxCONFIG_USE_XDG and wxCONFIG_USE_HOME for how to customize this
  behaviour. You may also find wxFileConfig::MigrateLocalFile() useful.

- Values of many colours in wxColourDatabase have been changed to use the
  values from the CSS standard. Use wxColourDatabase::UseScheme() to revert to
  using the traditional values if your application appearance depends on them.

- Default art provider (theme) used by wxAuiNotebook has changed. Set the art
  provider to wxAuiNativeTabArt in the code or use "native" in XRC to switch
  to the previously used default theme.

- As first mentioned in 3.0 release notes, the value of wxTHREAD_WAIT_DEFAULT,
  used by wxThread::Delete() and Wait() by default, has changed from
  wxTHREAD_WAIT_YIELD to wxTHREAD_WAIT_BLOCK for safety and consistency.

- wxDocument::OnCloseDocument() was called twice in previous versions when
  closing the document from the menu. Now it is only called once and after
  destroying all the existing document views. If you overrode this function,
  please check that you don't rely on any views existing when it's called.

- wxGrid::FreezeTo() now asserts when passed invalid (out of range) number of
  rows or columns to freeze. But it also does freeze the requested rows/columns
  even if the grid is currently too small to show all of them or if there are
  no unfrozen rows/columns remaining.

- Calling wxImageList methods on an invalid wxImageList object now consistently
  results in assert failures instead of just failing silently. To avoid these
  asserts, make sure that wxImageList is created with a valid size before
  operating on it.

- wxTRANSPARENT_WINDOW doesn't do anything and shouldn't be used any more. If
  you ever used it under MSW (it never did anything in the other ports), you
  can turn on the native WS_EX_TRANSPARENT extended style if really needed.

- In wxMSW, size passed to wxTextDataObject::SetData() must include the size of
  the trailing NUL (in bytes, i.e. 2) now, for consistency with GetDataSize().
  Typically this function shouldn't be used directly as SetText() should be
  used instead, but if you do use it, you need to update your code to prevent
  the last character of the data from being chopped.

- Calling wxListCtrl::EditLabel() now asserts if the control doesn't have
  wxLC_EDIT_LABELS style: previously this silently didn't work in wxMSW.

- wxSystemAppearance::IsDark() now returns whether this application uses dark
  mode under MSW, use the new AreAppsDark() or IsSystemDark() to check if the
  other applications or the system are using dark mode.

- wxUILocale::IsSupported() now returns false for unavailable locales under
  Unix systems without trying to fall back on another locale using the same
  language in a different region, e.g. it doesn't use fr_FR if fr_BE is not
  available. If any locale using the given language is acceptable, the region
  must be left empty, e.g. just "fr" would use any available "fr_XX".

- Deprecated wxPGCellRenderer::DrawCaptionSelectionRect() overload is not
  called any longer by default, you need to explicitly enable 3.0 compatibility
  or change your code to override the newer overload, taking a wxWindow pointer.

- wxImageList size is now expressed in physical pixels, i.e. its size must be
  the same as the size of bitmaps added to it, in pixels. This is inconvenient
  but should be viewed as a hint not to use wxImageList (but wxBitmapBundle)
  in the applications supporting high DPI.

- wxWebRequest doesn't use persistent storage under Mac any longer, as this
  made its behaviour there incompatible with the other platforms. Please call
  wxWebRequest::EnablePersistentStorage() explicitly if you need it.

- In wxMSW, behaviour of wxBitmap::Create(size, dc) overload has changed to
  not scale the size by the content scale factor of the DC any longer, as the
  size here is expressed in physical pixels and not in DIPs.

- wxIMAGE_QUALITY_NEAREST has a different numeric value and is not the same
  as wxIMAGE_QUALITY_NORMAL any longer, see documentation for more details.

- wxTextCtrl::{Save,Load}File() will use RTF format when saving/loading files
  with .rtf extension, and not plain text any longer, by default for the
  platforms with RTF support. If you need to save/load plain text even for the
  files with the .rtf extension, specify wxTEXT_TYPE_PLAIN explicitly.

- wxClientDC and wxPaintDC now correctly offset their origin by wxFrame
  toolbar, if any. This is consistent with the behaviour of the other ports
  but may require removing any compensation for not doing this before that may
  be present in the application code.

- Calling wxTextCtrl::SetLabel() now consistently does nothing and asserts
  under all platforms instead of behaving as SetValue() under MSW and doing
  nothing elsewhere.

- If you have a custom class deriving from wxAuiGenericTabArt, possibly
  indirectly, e.g. via wxAuiMSWTabArt, you need to update it to override the
  new virtual functions DrawPageTab() and GetPageTabSize() instead of
  overriding the old DrawTab() and GetTabSize(). Note that this is not needed
  if your class inherits directly from wxAuiTabArt, as it will continue to work
  in this case (but switching to the new functions is still recommended).

- The meaning of page index in wxAuiNotebook has changed if the pages have
  been reordered (see wxAUI_NB_TAB_MOVE) and now always refers to the page
  logical index, which is not affected by reordering. To get the position of
  the page on screen, which doesn't make sense without reference to the tab
  control containing it, use GetPagePosition() to retrieve both of them.

- wxListbook and wxChoicebook now interpret (but ignore) mnemonics in their
  page titles, just as the other wx*book classes already did. Double "&"
  in the page text if it should be interpreted as a literal "&".

- wxAUI_MGR_HINT_FADE is not included in default wxAuiManager style any longer,
  please add it explicitly if you really want to use it.

- Behaviour of wxPrintDialogData::SetAllPages() and SetSelection() has
  changed when called with "false" argument, please review the documentation
  and update your code if you called them with "false" (which is rarely done).

- wxWindow::Raise() doesn't show the window in all the ports now, just as it
  already didn't do it in wxMSW. Call Show() explicitly before Raise() if
  necessary.

- wxDF_TEXT on macOS now corresponds to the text in UTF-8 encoding instead of
  previously used MacRoman. No changes are necessary for the programs using
  wxTextDataObject, but for the code working with the raw bytes in this format
  you may need to change it to use wxConvUTF8 instead of wxConvLocal.


Changes in behaviour which may result in build errors
-----------------------------------------------------

- Symbols deprecated in 3.0 are still available in this version but disabled by
  default, you need to set WXWIN_COMPATIBILITY_3_0 to 1 to enable them. Symbols
  deprecated in 2.8 are not available any longer.

- Building with wxUSE_UNICODE=0 is not supported any longer.

- wxUSE_STD_CONTAINERS is now set to 1 by default, see "Container Classes"
  overview in the manual for the description of the changes this may require in
  the existing code. Alternatively, explicitly set wxUSE_STD_CONTAINERS=0 when
  compiling the library to preserve full compatibility with the old versions.

- wxUSE_STL option doesn't exist any longer, standard library is always used.
  However, previously setting wxUSE_STL=1 enabled implicit conversion from
  wxString to std::[w]string which are not enabled by default now, please set
  wxUSE_STD_STRING_CONV_IN_WXSTRING=1 explicitly if you need them.

- wxMSW now requires linking with gdiplus.lib and msimg32.lib.
  This is done automatically in most cases, but if you use a static build of
  the library with a non-MSVC compiler such as MinGW and do not use wx-config,
  then you will need to add these libraries to your make or project files
  yourself.

- wxMotif and wxGTK1 ports have been removed, please use wxWidgets 3.2 if you
  still need them.

- Several private container classes that never made part of wxWidgets public
  API have been removed. If you used any of them (e.g. wxSimpleDataObjectList)
  in your code, please switch to using std::vector<> or std::list<> instead.
  Some other legacy "object array" classes (e.g. wxImageArray) still exist, but
  are now similar to std::vector<> containing the objects -- they remain mostly
  compatible with the previous wxWidgets versions, but now compare values, and
  not pointers, in their Index() member function.

- All operators (e.g. "==", "+", etc) on wx types are not defined in global
  scope any more, resulting in much better error messages but also preventing
  them from implicitly being used with types convertible to wx types. If you
  really need to use these operators with your own types, please use explicit
  conversions.

- Due to the possibility to construct wxString from std::string_view some
  previously valid code, such as "wxstr = {"Hello", 2}", is now ambiguous.
  Please use explicit class name, e.g. "wxstr = wxString{"Hello", 2}" to
  preserve the previous behaviour.

- Generic wxSearchCtrl doesn't provide methods that make sense only for
  multiline text controls any longer, for consistency with the other ports.

- wxOnAssert() overload taking wide character file name was removed. If you
  call it for any reason, please use one of the other overloads instead.

- 64-bit DLLs now use "x64" suffix in their names for all builds, not just
  the official ones and those using MSVS projects, but also when using
  makefile.vc or CMake, for consistency.

- CMake files are now installed in a versioned subdirectory, e.g.
  lib/cmake/wxWidgets-3.3, to allow installing multiple versions of wxWidgets
  simultaneously, and not just "wxWidgets" as before. Please update your
  CMake files if you rely on the exact name of this directory. Note that
  nothing needs to be done if you simply use find_package(wxWidgets) as it
  still works in the same way as before.

- Support for memory debugging that was previously disabled but could be
  activated by using wxUSE_MEMORY_TRACING, wxUSE_GLOBAL_MEMORY_OPERATORS etc
  options was completely removed. Please use address sanitizer or similar
  tools that are incomparably more useful for this than that legacy code.

- wxTEST_DIALOG() macro now must be followed by semicolon, whereas previously
  it was only supposed to, but it wasn't mandatory to use one after it.

- wxWindow::GetDefaultBorderForControl() is not virtual any longer and will
  be completely removed in the future. If you overrode this function, don't
  do it any longer. If you call it, replace it with wxBORDER_THEME constant.

- wxGTK wxDirButton::Create() doesn't have unused "wildcard" parameter any
  longer, please just remove it from your code if you used it.

- Several functions now take wxReadOnlyDC instead of wxDC as argument. While
  any code calling these functions keeps compiling and working, classes that
  override these functions must be updated to use the new argument type too.
  Simply replacing wxDC with wxReadOnlyDC should be sufficient.

- wxSizer::Detach() takes wxWindowBase pointer now instead of wxWindow.
  This only matters if you override this virtual function in your own classes
  deriving from wxSizer, please change the function in the derived class to
  take wxWindowBase pointer too in this case.

- wx/cursor.h doesn't include wx/utils.h any longer, please include it
  explicitly if you need to use any functions defined there other than
  cursor-related ones.

- wxStyledTextCtrl::AddSelection() erroneously returned int, while the
  corresponding Scintilla doesn't have any return value, so it was changed
  to return void, please update your code to not use its return value.

- Code unintentionally and mistakenly using wxColour ctor from bool that
  previously compiled doesn't compile any longer, please fix it to use either
  the ctor from RGB value or from string explicitly.

- wxGLCanvas::CreateSurface() which was previously enabled in build
  configurations using EGL is not available any longer as exposing it doesn't
  make sense when wxGLCanvas may use either EGL or GLX.

- wxWithImages::GetImageLogicalSize() overload taking the icon index didn't
  make sense and was removed, please use the other overload instead if needed.


3.3.3: (released 2026-07-07)
----------------------------

Please note that this is a list of changes compared to 3.2.11, the full list of
changes since 3.3.2 also includes all changes between 3.2.10 and 3.2.11.

All:

- Add wxMoveToTrash() function (Blake-Madden, #26256).
- Add wxTarInputStream::SetMaxExtendedHeaderSize() (Arthur Chan, #26607).
- CMake improvements to installation and wxbase_only (Maarten Bent, #26325).
- Implement C++20 <=> operator for wxString (#26306).
- Make wxGetOsDescription() more useful under Linux (Lauri Nurmi, #26231).
- Treat truncated reads as errors in wxDataInputStream (dxbjavid, #26600).

All (GUI):

- Add accessibility support to wxSVGFileDC (Blake-Madden, #26379).
- Add fluent UI-like wxRibbon art provider (Blake-Madden, #26253).
- Add support for print settings to wxWebView::Print() (Blake-Madden, #26239).
- Add wxGrid::GetFrozenRowLabelWindow() and GetFrozenColLabelWindow() (Jorge Moraleda, #26617).
- Add wxSVGFileDC::GetSVGDocument() (Blake-Madden, #26344).
- Add wxSizer::DetachItem() (Ryan Ogurek, #26512).
- Add wxWebView::PrintToPDF() (Blake-Madden, #26583).
- Add wxWebViewConfiguration::DisableGPUAcceleration() (Blake-Madden, #26626).
- Fix wxRibbon icons in high DPI (Blake-Madden, #26409).
- Use wxBitmapBundle in wxRibbon (Randalphwa, #26117).

wxGTK:

- Add support for high DPI bitmaps to wxAboutBox (#22192).
- Fix assert when clipboard has non-ASCII targets (#26263).
- Fix regression in building with GTK without Wayland support (#26269).
- Fix regression when using wxImageList in high DPI (#26349).
- Fix wxStaticText label wrapping.

wxMSW:

- Add dark mode support to wxMessageDialog (Mohmed abdel-fattah, #26570).
- Add support for stylus events (Iulian-Nicu Serbanoiu, #26223).
- Enable drawing color emoji using Direct2D (Tobias Predel, #26657).
- Fix combo/listbox colours in dark mode in latest Windows 11 (Fefedu973, #26535).
- Fix regression in drawing text with Direct2D graphics context (#26259).
- Fix regression with wxCheckBox label in screen readers (#26270).
- Fix regression with wxPD_CAN_SKIP in 3.3.2 (#26287).
- Implement support for switching between light/dark modes (Steve Cornett, #26516).
- Use inches in page setup dialog if needed (Richard, #9177).

wxOSX:

- Fix dataview icons rendering under macOS 26 (#26374).
- Fix wxOverlay leaving phantoms in Mission Control (Daniel DeMoney, #26380).
- Set value in EVT_DATAVIEW_ITEM_EDITING_DONE (Robert Roebling, #26367).
- Update XCode project to support macOS 27 (#26578).

wxQt

- Add support for private fonts (AtesComp, #26403).


3.3.2: (released 2026-03-03)
----------------------------

Please note that this is a list of changes compared to 3.2.10, the full list of
changes since 3.3.1 also includes all changes in 3.2.9 and 3.2.10 releases.

All:

- Add wxWebRequestDebugLogger (#26086).
- Fix bitmap position in wxDC::DrawLabel() in high DPI (Blake Madden, #25888).
- Fix using wxSOCKET_NOWAIT_READ|wxSOCKET_WAITALL_WRITE (#17114).
- Improve number and currency formatting (Ulrich Telle, #25765).
- Support configurable timeouts in wxWebRequest (Brian Delalex, #25673).
- Update all 3rd party libraries to latest versions (Maarten Bent, #26010).

All (GUI):

- Add support for minimizing panes in wxAUI (#23986).
- Add support for using LunaSVG (Randalphwa, #25902).
- Add wxDisplay::GetRawPPI() (#26082).
- Add wxGLCanvas::ClearCurrent() (#25958), SetSwapInterval() (#25449)
  and GetProcAddress() (#9215).
- Add wxStyledTextCtrlMiniMap (#25887).
- Add wxTextEntryDialog::SetHint() (Lauri Nurmi, #26176).
- Fix crash on mouse hover after closing tab in wxAuiNotebook (#25959).
- Implement automatic wrapping of wxStaticText (Robert Roebling, #25753).
- Improve splitting behaviour in wxAuiNotebook (#26081).
- Make generic wxCalendarCtrl DPI-aware (Maarten Bent, #25713).
- Make wxDC-derived objects moveable (#25726).
- Make wxScrolled<> autoscroll configurable (Bill Su, #25978).
- Many RTL layout fixes in wxMSW and wxGTK (AliKet, #25426).
- Provide safer API for detecting closing wxTipWindow (Bill Su, #26070).
- Restore columns positions in wxPersistentDVC (Vadym Hrynchyshyn, #26222).
- Significant wxSVGFileDC improvements (Maarten Bent, #25723).

wxGTK:

- Allow using GLX and EGL in same program (#26023).
- Fix multiple bugs in gesture handling (Filip Hejsek, #26241).
- Make WarpPointer() work with supported Wayland compositors (#23778).
- Support wxDIRP_DIR_MUST_EXIST in wxDirPickerCtrl.

wxMSW:

- Accessibility: fix support for it in wxCheckBox in dark mode (Quin Gillespie,
  #26184), implement full support for it in wxCheckListBox (Glen Gordon,
  #25948) and wxStyledTextCtrl (Maarten Bent, #25956) and basic support in
  wxRichTextCtrl (Joshua Lee Ockert, #26202).
- Add MSVS 2026 projects and solution files (PB, #26131).
- Add wxNO_WIN32_W (Maarten Bent, #25965).
- Dark mode improvements: rendering of several controls (Thomas Modes, #25835),
  toolbar (#25892) and menus (Mohmed abdel-fattah, #26182).
- Fix MSVS debug visualizer for wxString (#25684).
- Revert use of WS_EX_COMPOSITED in previous 3.3 versions (#25808).

wxOSX:

- Add support for more axis in wxJoystick (Sean Maas, #26216).
- Add support for suspend/resume event generation (Tijs Van Buggenhout, #25778).
- Fix grid lines in dark mode (Daniel Kulp, #25783).
- Fix nested markup attributes handling (Václav Slavík, #25864).
- Make click events consistent with wxMSW (Robert Roebling, #25886).
- Use threaded animation for wxGA_SMOOTH (Will Cosgrove, #25906).
- Visual fixes for macOS 26 Tahoe (#25766, #25743, #25767)

wxQt:

- Add printing support (AliKet, #26126).
- Implement wxArtProvider (AliKet, #26210).
- Many fixes for RTL layout (AliKet, #25822).

wxiOS:

- Implement scrolling support (Robert Roebling, #25827).
- Implement wxListBox (Robert Roebling, #25858).
- Implement wxNotebook (Robert Roebling, #25857).


3.3.1: (released 2025-07-21)
----------------------------

All:

- Add persistence support for groups of wxRadioButtons (#25530).
- Add persistence support for wxCheckBox (#25515).
- Add support for PNG "Description" text chunk (GenevensiS, #25556).
- Add wxAuiPaneInfo::FloatingClientSize() (Bill Su, #25483).
- Allow setting app id under supported platforms (#25548).
- Avoid wxEVT_GRID_SELECT_CELL when creating wxGrid (#25498).
- CMake fixes and improvements (Maarten Bent, #25466, #25503, #25592).
- Don't assert in wxGridSizer if sizer is empty (#25641).
- Fix calling wxDVC::Collapse() from event handler (#25631).
- Fix overwriting IDs of buttons added to wxPGMultiButton (alilie, #25514).
- Improve wxRect2DDouble (Blake-Madden, #25497).
- Restore compatibility in wxPropertyGrid (#25627).
- wxNumberFormatter improvements (#25614, #25635).
- Make static reproducible builds under Unix really reproducible (#25502).

wxGTK:

- Fix crash when sorting wxDataViewCtrl with single leaf node (#25625).
- Fix losing wxListCtrl contents after AppendColumn() (#25519).

wxMSW:

- Fix buffer overrun when getting preferred languages list (#25612).
- Fix crash when using per-window menu in MDI applications (#25522).
- Fix crash with wxStaticBitmap inside wxNotebook in dark mode (#25499).
- Fix disabled wxButton bitmaps appearance in dark mode (#25575).
- Fix disabled wxStaticText appearance in dark mode (#25574).
- Fix notebook background in dark high contrast themes (#25542).
- Fix regression in creation of wxAcceleratorTable with 0 entries (#25517).
- Fix regression in wxDataViewCtrl border in light mode (#25532).
- Fix regression in wxTreeCtrl::EnsureVisible() while frozen (#18435).
- Fix selected toolbar buttons in dark mode (Stefan Ziegler, #25616).
- Fix wxComboCtrl appearance in dark mode (#23766).
- Fix wxTE_RICH wxTextCtrl appearance in dark mode (#25602).
- Restore date/time pickers behaviour under non-English OS (#25511).

wxOSX:

- Fix border look for wxDVC, wxListBox, wxTextCtrl (Will Cosgrove, #25570).
- Fix crash on startup when using Farsi as system language (#25561).


3.3.0: (released 2025-06-06)
----------------------------

This release contains the following major changes compared to 3.2.8:

- Add experimental dark mode support to wxMSW (#23028)
- Add Chromium-based wxWebView backend (#706).
- Add support for WebP images (Hermann Höhne, Maarten Bent, #25205).
- Add support for pinned/locked (#25187) and multi-row (#25076) wxAUI tabs.
- Add synchronous (blocking) version of wxWebRequest (#24760).
- Add API for raw touch events (Martin Koegler, #17077).
- Implement accessibility support for wxGrid (Dietmar Schwertberger, #24368).
- Implement power events and blockers support under Unix (#22396, #23717)
- Use native file dialogs if possible in wxGTK (#24486, #25104).
- Provide access to native wxTextCtrl contents (Blake-Madden, #24626, #24912).

Other changes are listed in alphabetical order in platform-specific sections:

All:

- Accept std::initializer_list in wxArray ctor (Lotendan, #23309).
- Add US Catholic Feasts support to wxDateTime (Blake Madden, #24094)
- Add WXLOG_TIME_FORMAT environment variable (#23576).
- Add __WXFUNCTION_SIG__ (Blake-Madden, #24554).
- Add catch-unhandled-exceptions system option (Lauri Nurmi, #25257).
- Add date-related localization functions (Ulrich Telle, #23556).
- Add support for setting base URL in wxWebRequest (#24769).
- Add support for setting the proxy to use in wxWebRequest (#24762).
- Add wxGrid::Enable{Row,Col}Resize().
- Add wxNODISCARD and use it for some functions (PB, #22943).
- Add wxNO_REQUIRE_LITERAL_MSGIDS (Lauri Nurmi, #24957).
- Add wxString::wc_string() (#23463).
- Add wxURI::SetUserAndPassword() (#25240).
- Add wxWARN_UNUSED and use it for wxString (Lauri Nurmi, #24833).
- Add wxWebSession::EnablePersistentStorage() (Tobias Taschner, #23743).
- Add wxXmlParseError to wxXmlDocument::Load() (Randalphwa, #24215).
- Allow customizing exit code in case of error (#24770).
- Allow using lambdas with Bind() without RTTI (MapleLeaf-X, #14850).
- Allow using wxMessageQueue with move-only types (#25026).
- Avoid DNS lookup when constructing wxIPV4address from IP (SMMB-DEV, #23109).
- Fix multiple bugs in wxURI parsing (Ryan Norton, #23360).
- Fix wxSocket::Peek() with UDP sockets (Brian Nixon, #23594).
- Fix wxWebResponse::GetMimeType(), add GetContentType() (Blake-Madden, #23461).
- Improve locale matching algorithm (Ulrich Telle, #24855)
- Make wxLogXXX(string) safe to use (#25414).
- Make wxPlatformInfo::Get() thread-safe (#25459).
- Make wxString {To,From}CDouble() faster and more robust (#23287).
- Make wxrc-generated code faster to build (DoctorNoobingstoneIPresume, #24579).
- Multiple headers with same name in wxWebRequest (Stefan Dinkelacker, #24878).
- Operators on wx types are not defined in global scope any more (#24190).
- Optimize wxString by supporting move operations (Pavel Tyunin, #23215)
- Optimize wxString::operator<<() for numeric types (#25388).
- Preserve errno in wxString methods (Lauri Nurmi, #23113).
- Support constructing wxString from std::string_view (Ian McInerney, #23711).
- Update 3rd party libraries to latest versions (Maarten Bent, #25112, #25325).
- Update translations for Brazilian Portuguese (Felipe), Corsican (Patriccollu,
  #25420), Czech (PB, #25412), French (#25400), German (tstkr),
  Romanian (Cătălin Răceanu, #25403), Simplified Chinese (0tkl, #25450),
  Turkish (Kerim Demirkaynak, #25267) and Ukrainian (Yuri Chornoivan, #25410).
- Update language database (Ulrich Telle, #23437).
- Use UTF-8 for environment variables (#25101).
- Use variadic templates for vararg functions (#22981).
- Use XDG-compliant location by default in wxFileConfig under Unix (#24195).

All (GUI):

- Add "feature" attribute to XRC (#23184).
- Add RTF support to wxTextCtrl (Blake-Madden, #24626).
- Add WXK_NUMPAD_CENTER (Ivan Sorokin, #23478).
- Add XRC handler for wxVListBox (Bill Su, #24361).
- Add checks for incorrect use of wxGridTable messages.
- Add high DPI support to generic wxListCtrl (Gerhard Stein, #22916).
- Add support for "id" attribute in wxHTML (Oleg Tolmatcev, #24968).
- Add support for high DPI animations (#23817).
- Add support for high DPI cursors via wxCursorBundle (#25374).
- Add support for loading wxPropertyGrid from XRC (#24274).
- Add support for printing multiple page ranges (Stefan Ziegler, #25030).
- Add wxApp::SetAppearance() to explicitly set dark or light mode (#24461).
- Add wxAuiManager::{Save,Load}Layout() (#24235).
- Add wxGrid::CopySelection() (Blake Madden, #24124).
- Add wxInfoBar::ShowCheckBox() (Blake Madden, #25394).
- Add wxRadioButton group support to wxGenericValidator (Bill Su, #24264).
- Add wxRibbonBar::GetPageById() (Blake Madden, #24211).
- Add wxStatusBar::AddFieldControl() (AliKet, #24092).
- Add wxTexTCtrl::SearchText() (Blake-Madden, #24756).
- Allow resizing row and column labels in wxGrid (Dietmar Schwertberger, #24362).
- Allow setting fonts in wxAuiTabArt to work (#24829).
- Allow specifying size of wxTextEntryDialog (Blake-Madden, #24467).
- Allow using wxVListBox wxXRC_NO_SUBCLASSING (Bill Su, #25144).
- Derive wxSearchCtrl from wxTextEntry in all ports (Martin Corino, #23686).
- Fix default background of RLE bitmaps (Brian Nixon, #23599).
- Fix handling of sizers inside <windowlabel> XRC tag.
- Fix loading some bitmaps using BI_BITFIELDS (Brian Nixon, #23601).
- Fix print preview in high DPI (taler21, #24666).
- Fix wxAUI dock art appearance after DPI change (Maarten Bent, #23420).
- Fix wxFontList::FindOrCreateFont() for non-integral sizes (PB).
- Fix wxGrid::GetDropTarget() (Dan Allen, #24448)
- Fix wxNUM_VAL_ZERO_AS_BLANK behaviour on focus loss (#24859).
- Fix wxPGVIterator used in wxPropertyGridManager (#23273).
- Fix wxTextCtrl proof checking functions return values (mcorino, #23832).
- Implement client data support in wxAuiToolBar (Miguel Gimenez, #23271).
- Improve generic and MSW "About" dialog appearance (#23196).
- Improve item sorting in generic wx{File,Dir}Ctrl (PB, #23962).
- Improve wxImage resizing quality (Alex Shvartzkop, #25252).
- Make date/time picker controls locale-aware (Ulrich Telle, #23965).
- Make wxEL_ALLOW_NEW without wxEL_ALLOW_EDIT work (Martin Corino, #24099).
- Make wxGenericValidator more flexible (Bill Su, #24134).
- Make wxGrid::ProcessTableMessage() more convenient to use (Joachim Wiesemann).
- Provide reason for wxNotificationMessage dismissal (Lauri Nurmi, #24340).
- Respect menu path style in wxFileHistory::AddFilesToMenu() (Bill Su, #25451).
- Restore non-live-resize in wxAUI and wxSplitterWindow (AliKet, #24193).
- Save/restore wxAuiNotebook layout (#24950).
- Several fixes to scrolling in wxVListBox (Bill Su, #24278).
- Support high DPI bitmaps in wxBusyInfo (#23813).
- Support specifying dark mode colours in XRC (#23571).
- Support wxCHK_UNDETERMINED in wxUpdateUIEvent (Bill Su, #24764).
- Update Scintilla to 5.0 and Lexilla to 5.3 (Maarten Bent, #23117, #24369).
- Update nanosvg to fix possible crashes (#24213).
- Use CSS colour names (#23518).
- Use new default flat tab art provider in wxAUI (#25316).
- Use thousands separators in page numbers when printing (Blake-Madden, #25320).

All (CMake):

- Add CMake presets (Tobias Taschner, #23335).
- Add option to use all built-in libraries (Maarten Bent).
- Build mfc sample too (Maarten Bent, #25402).
- Fix generated wx-config when using custom flavour (#25398).
- Fix using static runtime with msvc (Maarten Bent, #25098).

All (WebView):

- Add support for clearing browsing data (Tobias Taschner, #24431).
- Add advanced requests (Tobias Taschner, #22797).
- Add child window handling (Tobias Taschner, #23334).
- Add new wxEVT_WEBVIEW_CREATED (#706).
- Add wxWebView::EnableBrowserAcceleratorKeys() (Tobias Taschner, #23070)
- Add wxWebView::EnablePersistentStorage() (Tobias Taschner, #24405).
- Add wxWebView::GetNativeConfiguration() (Tobias Taschner, #22781).
- Add wxWebView::SetProxy() (#23854).
- Add wxWebView::ShowDevTools() (#24799).
- Add wxWebViewConfiguration (Tobias Taschner, #23374).
- Add wxWebViewEvent::IsTargetMainFrame() (Tobias Taschner, #23238).
- Allow setting wxWebViewEdge UA after creation (Tobias Taschner, #23225).
- Implement StartRequest() in wxWebViewChromium (John R. Patek, #25395).
- Queue Edge wxWebView events (Tobias Taschner, #22744, #19075).

wxGTK:

- Add support for building with libwebkit2gtk-4.1 (Scott Talbert, #23633).
- Add support for wxRB_SINGLE (Stefan Hansson, #23652).
- Add wxTextCtrl::GTKSetPangoMarkup() (Blake-Madden, #24912)
- Add wxWindow::GTKGetWin32Handle() (Ryan Ogurek, #24675).
- Don't require libsecret-1.so presence at run-time (#25355).
- Fix handling of binary secrets in wxSecretStore (Martin Corino, #24352).
- Fix handling total window size with GNOME with X11 (#25348).
- Fix height of read-only wxBitmapComboBox (#25468).
- Fix missing enter/leave window events (#24339).
- Fix wxGLCanvas scale when using EGL/Wayland in high DPI (Popax21, #23733).
- Fix using wrong colour in wxPrinterDC (#24729).
- Fix wxKeyEvent::GetKeyCode() in non-US layouts (Ivan Sorokin, #23379).
- Implement generation of wxDPIChangedEvent (#19290, #24040).
- Implement max length limit for multiline wxTextCtrl (Igor Korot, #24751).
- Implement wxTextCtrl::SearchText() (Blake-Madden, #24897).
- Improve wxInfoBar appearance when text doesn't fit (#24695).
- Improve wxSlider min/max labels positioning (#24106).
- Limit radius in wxDC::DrawRoundedRectangle() (Alex Shvartzkop, #24327).
- Multiple fixes to mouse event generation (#24931, #24932, #24933).

wxMSW:

- Add support for extended-length paths (#25033).
- Add support for markup to wxStaticText (#25000).
- Allow changing wxHyperLink colour (#23549).
- Allow using static CRT in MSBuild projects (David Connet).
- Change default wxTreeCtrl to use more modern look (PB, #23844).
- Don't append unwanted extension in wxFileDialg (Martin Corino, #24949).
- Enable double buffering for all windows (#22851).
- Fix AUI tab close button size on DPI change (Kumazuma, #23400).
- Fix background of wxCollapsiblePane inside wxNotebook (#23274).
- Fix background of wxStaticText in wxAuiToolbar (#24765).
- Fix build issues with llvm clang (Sergey Khalyutn, Maarten Bent, #23468).
- Fix loading message catalogs with "@" in their names (Mike Wang).
- Fix missing closing line in wxGDIPlusContext::DrawLines() (#24645).
- Fix multiple problems in UTF-8 build (#23313).
- Fix not showing help text for submenus (David Langhals, #24724).
- Fix resizing of TLWs with single child on DPI change (#22983)
- Fix saving geometry of Aero-snapped windows (Randalphwa).
- Fix security issue when running on secure desktop (Sean Budd).
- Fix using strings with Unicode characters outside of BMP (#25128).
- Fix wxDisplay invalidation on connected display change (Marcel Pham, #25396).
- Fix wxOverlay and wxScrolled auto-scrolling in RTL layout (AliKet, #25413).
- Fix wxPropertyGrid expander buttons appearance in high DPI (#24304).
- Implement support for wxBG_STYLE_TRANSPARENT (Maarten Bent, #23412).
- Implement RTL support in wxGraphicsContext with GDI+ (AliKet, #25431).
- Improve wxGetUserName() implementation (Blake-Madden, #24242).
- Increase wxButton default size in high DPI (#25297).
- Link with gdiplus.lib and msimg32.lib directly (Maarten Bent, #24614).
- Reimplement wxOverlay using layered windows (AliKet, #23261).
- Return bool from wxBitmap::UseAlpha() (PB, #23919).
- Support printing current or selected pages (Stefan Ziegler, #23372).
- Turn wxCAPTION on automatically if required by other styles (#23575).
- wxNotebook::HitTest() for tabs on the right/left (Gerhard Gruber, #23023)
- wxMessageOutputBest uses associated console, if any (#25068).

wxOSX:

- Add loading wxCursor from resources (oneeyeman1, Maarten Bent, #24374)
- Add missing const wxFontDialog::GetFontData() (Martin Corino, #23691).
- Do not activate "Close" button on Cmd-C (nobugshere, #25346).
- Ensure that wxEventLoop::OnExit() is called (#25409).
- Fix setting cursor for TLWs (unawarez, #25131).
- Make wxUIActionSimulator actually work (Martin Corino, #23692).

wxQt:

- Fix clipping in wxDC to work as expected (AliKet, #23600).
- Fix wxButton::GetLabel() (AliKet, #22929).
- Fix wxEVT_TEXT_ENTER processing (AliKet, #22942).
- Fix wxFrame::ClientToScreen() (AliKet, #22969).
- Fix wxPopupWindow implementation under wxQt (AliKet, #23904).
- Fix wxRadioButton selection (AliKet, #22991).
- Fixes for Qt 6.8.2 (AliKet, #25207).
- Fixes for wxSlider ticks and events (AliKet, #22989).
- Implement clipboard and undo support in wxTextCtrl (AliKet, #22973).
- Implement more wxTextCtrl methods (AliKet, #23984).
- Implement wxRadio{Box,Button}::{Set,Get}Label() (Alex Shvartzkop, #24309).
- Implement wxTextCtrl::SearchText() (AliKet, #24899).
- Make wxGLCanvas work (Alex Shvartzkop, #24200).
- Make wxPen and wxBrush behaviour more consistent with the other ports (AliKet, #23863).
- Make wxTopLevelWindow::SetSizeHints() works (AliKet, #23917).
- Many improvements in wxListCtrl (AliKet, #23029).
- Many improvements to wxDC (Alex Shvartzkop, #24328).
- Many improvements to wxListBox (AliKet, #23063).
- Provide native wxOverlay implementation (AliKet, #24080).
- Provide native wx{Date,Time}Ctrl (AliKet, #23925).
- Provide wxRendererNative implementation (AliKet, #24223).
- Refresh children too in wxWindow::Refresh() (AliKet, #22918).
- Several fixes and improvements (AliKet, #22932).
- Support accelerators and radio items in wxMenu (AliKet, #22985).
- Support extended message and custom labels in wxMessageDialog (#24299).
- Support images and tab orientation in wxNotebook (AliKet, #22997).
- Use premultiplied ARGB32 format for wxBitmap (AliKet, #23872).
