wxWidgets is a C++ library that lets developers create applications for Windows, macOS, Linux and other platforms with a single code base. It has popular language bindings for Python, Ruby, Lua, Rust, Dart, Perl and several other languages, and unlike other cross-platform toolkits, wxWidgets gives applications a truly native look and feel because it uses the platform's native API rather than emulating the GUI. It's also extensive, free, open-source and mature.
Latest News
wxWidgets 3.2.11 and 3.3.3 Released
Posted on
Making releases in both stable 3.2 and latest 3.3 series simultaneously seems to have worked well the last time, so we are doing it again today with the release of the latest stable 3.2.11 and the latest development 3.3.3 versions of wxWidgets. As before, 3.3.3 contains all the changes from 3.2.11 as well as the additional improvements not present in 3.2 series, such as further improvements to dark mode support in wxMSW, including implementing it for message dialogs and support for switching between light and dark modes during run-time.
Both releases can be downloaded from GitHub, please follow these links to download archives with the library sources and documentation as well as binaries for the selected Windows compilers such as Microsoft Visual C++ and MinGW-w64: for 3.2.11 release and for 3.3.3 one. Online documentation has also been updated and can be accessed at 3.2.11 documentation home and 3.3.3 respectively.
If you are new to wxWidgets, you may find the installation guide a good starting point. If you are upgrading to 3.3.3 from a previous version, please make sure to check the change log and, especially, the INCOMPATIBLE CHANGES section there.
Changes since previous releases
3.2.11 includes an unusually huge amount of bug fixes for possible security problems, probably prompted by the increasing use of LLMs for finding them and also helped by the addition of extra fuzzers. Upgrading to this version is strongly recommended if you use any of the functions or classes mentioned below in untrusted contexts:
- Fix multiple buffer overflows in
wxBMPHandler: when loading malformed BMP files with invalid RLE data (#26496), invalid palette for 8bpp BMPs (#26438), invalid 4bpp BMPs (#26511). - Fix multiple buffer overflows in
wxXPMDecoder(#26442) including when parsing XPM files with unterminated quote (#26499) or with invalid width (#26519). - Fix multiple problems in
wxGIFHandler: reject more invalid GIFs and do it without leaking memory (#26501), fix buffer overflows when decoding invalid GIFs (#26521, #26524). - 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
wxGethostby{addr,name}_r()(#26528) andwxGethostbyxxx_r()(#26553). - Fix multiple buffer overflows in
wxIFFDecoder: out-of-bounds palette write (#26440), out-of-bounds write on bad BMHD chunk (#26497) and others (#26505, #26518). - Fix out-of-bounds read in
wxPCXHandler(#26441). - Fix reading ANI images with invalid frame count (#26492).
- Fix write overflow in TGA files with invalid colour map (#26493).
- 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).
Other, non security-related, bug fixes include:
- Fix behaviour of
wxConditionandwxSemaphore::WaitTimeout()for the dates after year 2038 under Unix (#26466). - Fix
wxCaretposition in scrolled windows (#26282). - Correct loading of some bitmaps: 32bpp ones without valid alpha (#24219),
those using delta-RLE bitmap background colour (#23599) and those using
BI_BITFIELDSmode (#23601). - Add
wxGrid::GetFrozen{Row,Col}LabelWindow()(#26617). - Fix compilation of
wxPropertyGridmacros whenwxNO_IMPLICIT_WXSTRING_ENCODINGis defined (#26651). - wxGTK specific fixes:
- Fix copy/paste when a clipboard manager is running (#26265).
- Fix crash with EGL-based
wxGLCanvasin wxNotebook (#26340). - Fix possible
wxTextCtrlcrash with GSpell attached (#26464). - Fix drawing of very large bitmaps (#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 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 setting initial client size (#26480).
- wxMSW specific fixes:
- Fix
wxBufferedPaintDCwhen using RTL layout (#26266).
- Fix
- wxOSX specific fixes:
3.3.3 release includes all the fixes from 3.2.11 above as well as some extra improvements:
- Add dark mode support to
wxMessageBoxand other dialogs in wxMSW (#26570). - Support switching between light/dark modes in wxMSW (#26516).
- Add support for stylus events to wxMSW (#26223).
- Add accessibility support to
wxSVGFileDC(#26379). - Add
wxWebView::Print()andPrintToPDF()(#26239, #26583). - Improve
wxRibbonappearance in high DPI (#26117, #26409). - Improve
wxStaticTextlabel wrapping in wxGTK. - Add
wxMoveToTrash()function (#26256). - Enable drawing color emoji using Direct2D in wxMSW (#26657).
- Implement C++20 <=> operator for
wxString(#26306). - Add support for private fonts to wxQt (#26403).
- Support building wxOSX under macOS 27 (#26578).
And, finally, some bug fixes which don’t apply to the stable branch:
- Improve
wxTarInputStreamrobustness (#26607). - Treat truncated reads as errors in
wxDataInputStream(#26600). - Improve wxAUI behaviour on DPI changes in wxMSW (#26075).
- Fix regression when using
wxImageListin high DPI in wxGTK (#26349). - Fix regression with
wxCheckBoxlabel in screen readers in wxMSW (#26270). - Fix regression with
wxPD_CAN_SKIPin 3.3.2 in wxMSW (#26287). - Fix
wxDataViewCtrlicons rendering under macOS 26 (#26374). - Fix wxOSX
wxOverlayleaving phantoms in Mission Control (#26380).
Feedback
Please let us know about your experience with this release via any of the following channels:
or by commenting under this post.
Thanks to all contributors to this release and we hope that you will enjoy working with it!
wxDart 0.9.2 released
Posted on
Version 0.9.2 of wxDart has been released.
Dart is a programming language developed by Google. It uses static typing and can be compiled to an executable binary or to JavaScript or WebAssembly to run in a web browser.
wxDart consists of two separate libraries which offer the same API and can be used independently.
- wxDart Flutter uses the Flutter library as its backend and is written in pure Dart.
- wxDart Native provides Dart bindings to the wxWidgets C++ GUI library.
wxDart Flutter has been written from the ground up and does not depend on any C++ or C code. It uses the wxWidgets API, adding many desktop features to Flutter. Apps compiled with wxDart Flutter run almost anywhere (including Android and iOS), but it mainly targets the web.
Like wxWidgets itself, wxDart Native mainly targets the classical desktop environments and offers native look and feel.
Check out the Fireworks demo written with wxDart Flutter, compiled to WebAssembly, and see how it uses wxWidgets API in its source code.
wxDart and its documentation are hosted on pub.dev here.
wxWidgets Book Examples Now Available on GitHub
Posted on
A comprehensive collection of wxWidgets example applications is now available to the community. These applications were originally developed as supplementary material for the Polish book Cross-Platform Programming with C++ and wxWidgets 3 and are now publicly accessible on GitHub in the dedicated repository All example applications are released under the wxWidgets License.
Repository Contents
The repository contains more than 25 example applications, showcasing various wxWidgets functionalities. These include, among others:
- User interface components and custom controls
- File handling, logging, and system operations
- Networking (HTTP, FTP, and Socket communication)
- Multithreading
- OpenGL and 3D graphics
- Developing a custom code editor with wxScintilla
Additionally, some projects demonstrate more advanced features, making them useful for both beginners and experienced developers looking to integrate wxWidgets into their applications.
All the examples were tested on:
- Windows 11 (Visual Studio 2022, wxWidgets 3.3.x)
- Linux Mint 22 (wxWidgets 3.2.6)
Each project includes configuration files for Visual Studio, Code::Blocks, and Makefile, ensuring compatibility across different development environments.
All examples have been fully translated into English to support a global audience of developers.
All projects have been re-tested, updated, and adapted to the latest versions of wxWidgets and C++20, ensuring modern compatibility and performance.
The repository also includes the upgrade_wxwidgets.py script, which facilitates both upgrading and adapting projects to any version of the wxWidgets library.
This resource provides an excellent starting point for developers interested in exploring wxWidgets through working examples. Users are encouraged to review the code and adapt it to their own projects.
wxRuby3 1.0.0 released
Posted on
It’s time! wxRuby3 has reached its 1.0.0 stable release.
This release targets the wxWidgets 3.2.5 release by default, which contains (among many others) quite some fixes which came from the development of wxRuby3, and can be installed from RubyGems or downloaded from Github.
This release is the result of about 1.5 years of development, starting at the abandoned remains of wxRuby2, taking a page out of the wxPython Phoenix book and ending with this release.
wxRuby3 is a cross-platform GUI library for Ruby, based on the mature wxWidgets GUI toolkit for C++. It uses native widgets wherever possible, providing the correct look, feel and behavior to GUI applications on Windows, macOS and Linux/GTK. wxRuby aims to provide a comprehensive solution to developing professional-standard desktop applications in Ruby. wxRuby3 also provides extensive usage documentation at its Wiki as well as a complete API reference.
What has changed in this release?
- improved documentation
- support building against wxWidgets GIT master version
- improved stability
- add Wx::Overlay and Wx::DCOverlay
- add 2D affine transformation support
- add Wx::GraphicsRenderer
- various DC support improvements
- add large 2D drawing sample
Full Changelog: https://github.com/mcorino/wxRuby3/compare/v0.9.8…v1.0.0
How to install?
gem install wxruby3
See the INSTALL documentation for more details. Binary packages for major platforms are available as release assets on Github.
Where can I learn more?
Usage Documentation: see the Wiki
API Documentation: see here
Source code: Github
Rubygems: wxRuby3
Where can I provide feedback?
Report problems, bugs, instructions using Github Issues.
Start discussions, submit ideas, feature requests etc. using Github Discussion.
Credits
Thanks go to the dedicated wxWidgets team for providing such a fantastic GUI library to build wxRuby3 on as well as to the wxPython Phoenix team for providing the idea of code generation from the wxWidgets interface docs.
For more credits see here.
Modern Icon Sets wxArtProvider Released
Posted on
perazz has released wxMaterialDesignArtProvider, a custom wxArtProvider class providing SVG-based icons from the Material Design, SimpleIcons, FontAwesome and FluentUI system datasets. All these datasets come with permissive licenses (MIT, CC BY 4.0, CC0 1.0, Apache 2.0) that should make it easy to embed it in new and existing projects.
All SVG icons are hardcoded into headers such that no external files are needed to build the art provider class. Each dataset belongs to a custom client (so that filled/outline versions can be used for hovering effects) and color customization is provided via a simple regex-based extension.
Hopefully this can be useful to people who want to make their existing wxWidgets applications access modern icon sets with limited effort.
![]()
