Font list tree view update
This MR brings many changes and improvements to the text dialog. Some of them made possible by upgrading to new ListView and GridView containers.
- Replace tree view with a
ListView. - Replace IconGrid with a
GridView. - Replace model implementation with
Giostore and filters. - Fix font samples being cut-off.
- Add tree view mode to collapse fonts in families.
- Make font grid view more usable.
- Move settings to the popup.
- Allow font size and variations widgets to be hosted at the top.
- Limit variation axes widget height, so it doesn't cover up font list.
- Faster font filtering thanks to new container widgets "virtual" mode support.
New tree view mode showing font families. Badge shows the number of styles.
Tree view mode:
In a tree view mode fonts are sorted alphabetically. Any other sort option automatically uses flat list to present results.
Grid view mode has been enhanced. Its size and preview text can be adjusted independently of list view. It can now also show font name.
Options have been migrated to a popup. Selecting list or grid mode first allows tweaking their settings (independently).
Font size and variations can be placed at the top or at the bottom (options popup):
With new list scrolling behavior it became impossible to keep content location fixed while growing/shrinking variable font widget. Thus it is no longer important to plant font size at the bottom.
Font variation axes size limit.
After analyzing 138 free variable fonts I have found them to generally vary in a number of axis to tweak from 1 to 4 with two exceptions: one with 15 and another with 13 axes. As such, the UI is optimized to handle common use cases and automatically resizes itself to accommodate up to 4 axes. Beyond that a scrollbar appears and axes widget is limited in size, so it doesn't obscure the list of fonts.
Display should now adapt better to the size requested by fonts. Size of rows and tiles is now variable.
Regressions
While the new list and grid containers are an unequivocal improvement over their predecessors, they are not perfect. One serious weakness is their scrolling behavior. It is jittery with content jumping and moving unpredictably at times.
TODO
-
Remove preference to adjust row size; it's sized automatically - Consider defaulting to a new unified font text dialog
- More testing required
- Bug fixing













