* Add minNumericValue helper. Add attribution note
* Process Composite's onDispose events in its own dispose handler, since RaiseEvent will not have a handler after the Composite's disposal
* Initialize new images with count = 1; they were not released if extra references were added
* Dispose previous version of an image if it was not memory based
* Use strict versions of Map
* Update unit tests
* Update Changelog
* Make optionButton's onChange trigger only once if value did not change. Add onClick to keep previous behavior
* Make radios's onChange trigger only once if value did not change. Add onClick to keep previous behavior
* Update Changelog
* Remove scaling logic from FontManager (rely on also existing one in .c file). This fixes the weird positioning issues also seen previously
* Store x coordinate of the glyph, which should be used for rendering operations instead of posMinX
* Do not reset glyph position size
* Set correct field in inputField/textArea when calculating selection
* Fix unit tests
* Update Changelog
* Add D_ option to button without the requirement of an explicit event
* Add ignoreParentEvts to button widget
* Add new note to keystroke widget
* Add unit tests for keystroke's/button's options for ignoring child/parent events respectively
* Update Changelog
* Allow using symbols for keystroke definitions. Add Dash to allow using the - character as part of a combination
* Log when an invalid sequence is provided
* Revert test changes to Tutorial02
* Be more explicit about restrictions
* Add missing keyCode definitions
* Handle Dash as text and add support for KpEnter
* Update Changelog
* Adds style...Set family of functions for replacing a Style/WidgetNode StyleState. The existing style... family of functions now merge with the previous StyleState
* Add style...Set to tutorials and improve styling section. Make several small improvements
* Improve StyleState documentation
* Improve naming of Core's utility function
* Update Changelog
* Add _weAppStartTs to WidgetEnv, indicating the time in ms when the application started
* Use Timestamp type instead of Int to make signatures clearer
* Retrieve correct startup timestamp
* Use newtype instead of type for Timestamp
* Update Changelog
* Add utility function currentTimeMs, returning the absolute current timestamp (not from app start)
* Use currentTimeMs in examples
* Replace SDL.ticks call with utcTimeToPOSIXSeconds
* Restore nodeKey of description field in Tutorial 03
* Remove unneded liftIO calls from Ticker example
* Allow setting minimum thumb size in scroll widget. Improve thumb handling.
* Consider secondary axis' thumb width when calculating thumb size ratio if both vertical and horizontal bars need to be shown
* Add test cases for thumb drag
* Update Changelog
* Remove unneeded variables
* Give various widgets a readOnly mode
This mode allows text to be selected (and copied), but does not allow
editing. See issue #87
* Use a neater readOnly to editable conversion.
* Check if a dragHandler exists before applying fromJust in inputField
* Do not change cursor when pressing shift if input widget does not implement dragging
* feat: add the `lineBreak` option
This commit adds `lineBreak` option to specify how to break texts into
lines. `OnSpaces` is the default and breaks texts at spaces. `OnCharacters`
breaks texts at characters, even in the middle of a word. This is useful
for handling CJK texts, though it does not follow [the line breaking
rules](https://en.wikipedia.org/wiki/Line_breaking_rules_in_East_Asian_languages).
* fix: implement for `TextStyle`
Not to create instance of each widget.
* test: add for `OnCharacters`
* perf: make `fitLineToW` faster
* Send Composite's onChange event to its own handleEvent, not to its parent. Widgets can use Report/RequestParent if needed (check ColorPicker)
* Update Changelog
* Generalize onInit and onDispose to also support WidgetRequests
* Add Composite's onInit and onDispose unit tests
* Pass oldModel to Composite's onChange event
* Update Changelog
* Add a CmbChildSpacing combinator and implement it for Grid, Stack and LabeledCheckbox/LabeledRadio
* Fix a bug where childSpacing was applied to both dimensions in a grid, rather than just the primary dimension.
* Document the childSpacing combinators.
* Remove redundant divs (rows/cols always equals 1)
* Append underlying type name to widgetType in polymorphic widgets to allow switching to different model types
* Add tests for polymorphic widgetTypes
* Make the widgetType of selectList and dropdown consider the contained type
* Update Changelog.md
* Add optionButton and toggleButton widgets
* Improve colors for buttons in base themes
* Update themes for new widgets
* Highlight focused row buttons on Todo and Ticker examples
* Add missing docs
* Use previous model version when calling dispose (current model may make prisms/indexed invalid, causing issues when using singular)
* Only replace composite model with user model on init and merge
* Add new unit test to composite
* Update/improve Changelog
* Bump version
* Basic tests with Strict/StrictData. These will be progressively replaced by strict fields/bang patterns, and also squashed before merging.
* Change pragmas, reduce Strict, replace with StrictData/BangPatterns in containers. Reduce space leaks
* Format package.yaml
* Remove unneeded bangs, restore tutorial main
* Bump version and update Changelog