December 2022 - Text Selection and RSS
First up, I'd like to thank Egon Elbre for implementing an RSS feed for these newsletters. You can find that feed if you prefer to consume content via feeds.
First up, I'd like to thank Egon Elbre for implementing an RSS feed for these newsletters. You can find that feed if you prefer to consume content via feeds.
It's seemingly been a quiet month in the Gio project. Not many patches have landed in our repos, and one might almost think that nothing was happening. However, this quiescence is actually the result of Elias and I iterating heavily on Gio's upcoming text API. Adding both font fallback and bidirectional text support to Gio has stretched our text abstractions to the breaking point, so we've had to rethink them this month. That work has primarily been on the gio-patches mailing list, so you won't have seen it unless you're subscribed.
This month Elias upgraded our handling of image scaling by automatically generating mipmaps for all images. This ensures that images look good when downscaled, and also boosts performance when downscaling images. You don't need to make any application changes to take advantage of this new feature.
Elias is settling into a new place in Central America, and is starting to turn a critical eye towards Gio's layout system. He's exploring ways to make Gio layout more flexible, to solve , and to reduce the boilerplate of writing Gio code. There's no concrete proposal to share yet, but I look forward to hearing what comes of this exploration.
This month one of the biggest changes was Egon Elbre's work to eliminate many of Gio's transitive dependencies. He did this by rewriting significant parts of the text segmentation library that we use, as well as figuring out the proper dance to update us to the multi-module version of golang.org/x/exp. The results are a go.sum with 500 fewer lines, and Gio binaries that are 1.5MiB smaller.
This month saw a number of small-but-useful improvements to widget.Editor, including the ability to filter characters, enforce a maximum length, and built-in support for undo/redo. Additionally, numerous subtle event processing bugs were ironed out.
This month saw an emphasis on improvements to the , performance, and desktop windowing system integration.
I'm sure you're all wondering "what happened to the material data table?" Well, good news! This month, Jan's work was merged into gio-x and the bounty payout is processing right now!
As many of you know, Fyne and Gio together ran a "Go GUI Developer Survey" recently, and Andy from Fyne has published the results here:
Elias spent the last month reviewing my text work, improving widget focus traversal, and improving many small details about core. In particular, there is now a nix-based development environment for gio available in core's flake.nix file. For details on nix, see:
Elias implemented focus traversal for Gio interfaces this month. This enables users to navigate between focusable widgets (buttons, editors, etc) with actions like pressing tab. This single feature has a huge impact on the ease of using Gio for entering data into form fields and general keyboard navigation.