Features
- The performance of the WinForms event loop has been significantly improved. (#2613)
- Dark mode can now be detected on iOS, web, and Windows. (#4408)
- In order to better match the HTML canvas API, the Canvas widget now has
fill_textandstroke_textmethods, replacing the previouswrite_text. (#4432) - The Canvas widget's
rotate,scale, andtranslatemethods can now be used as context managers. (#4477) - The canvas widget's
state()context manager now accepts optional keyword parameters to set drawing context attributes upon entering. (#4485) - Performance has been improved by avoiding layout refreshes when add and insert operations are redundant and don't move widgets to new parents. (#4529)
Bugfixes
- On Android,
WebViewwidgets can now display static content that contains#characters (such as CSS color specifications). (#2242) - 1-pixel black streaks no longer appear on high DPI screens on WebViews whose content has a transparent background on WinForms. (#3264)
- Canvas's
reset_transformmethod now correctly resets the transformation on Mac and iOS, instead of clearing the current state. (#4044) - WinForms buttons now render their interior regions with the correct native background color when no color is set. (#4342)
- The handling of null return values on GTK
MapViewwidgets has been corrected. (#4378) - Initial application focus on macOS is now more reliable on macOS 26. (#4427)
- The DetailedList widget on the Windows platform now honors color and background-color styles. (#4444)
- Providing the
colorparameter alias when instantiating aFillorStrokedrawing action no longer throws an erroneousTypeError. (#4472) - On the Qt backend, the Canvas widget now reliably draws a solid line when an empty list is assigned to
line_dash. (#4475) - The
sizeattribute of a window is now guaranteed to return the width and height as integers. (#4505)
Backward Incompatible Changes
- The Canvas widget's default stroke width has been changed from 2.0 to 1.0, to match that of the HTML canvas. (#4381)
- The Canvas widget's
write_text()method is now deprecated; usefill_text()and/orstroke_text()instead. Unlikewrite_text, these don't need to be insidefill/strokecontext managers. (#4432)
Misc
- #3298, #4371, #4372, #4373, #4374, #4375, #4376, #4377, #4383, #4384, #4385, #4386, #4387, #4388, #4391, #4392, #4399, #4400, #4401, #4402, #4403, #4405, #4409, #4411, #4415, #4422, #4423, #4426, #4429, #4430, #4435, #4436, #4437, #4438, #4439, #4440, #4441, #4442, #4443, #4445, #4446, #4449, #4453, #4454, #4455, #4463, #4464, #4465, #4466, #4467, #4479, #4484, #4485, #4487, #4488, #4489, #4490, #4491, #4492, #4493, #4494, #4495, #4498, #4499, #4500, #4501, #4502, #4504, #4506, #4507, #4508, #4509, #4510, #4511, #4512, #4513, #4514, #4515, #4516, #4517, #4518, #4519, #4520, #4521, #4522, #4523, #4524, #4525, #4528