* Consider SDL.TextEditingEvent as an action event
* When a frame requires rendering, make sure the next one is also rendered to avoid artifacts. It still does not render every frame
* Fix lint
* Fix typo
* Add foreign-store dependency
* Reuse window and avoid reinitializing SDL when running on ghci and code is reloaded
* Restore previous model and widget root on code changes
* Attempt to check if model's type changed (failed, since fingerprinting is not reliable)
* Add Show instances to various widgets
* Add configuration for fingerprint functions
* Merge new root with stored root, to account for code changes in new root and data in old
* Store the complete MonomerCtx type for app reload
* Use recover-rtti for model change detection
* Process WidgetResult when merging reloaded widget root
* Validate model changes in Composite
* Fix lint
* Fix unit tests
* Force hpack version in monomer.cabal
* Add appDisableModelReuse configuration option to always ignore previous model version
* Minor setup docs update
* Revert to AppConfig only being parameterized by e
* Restore recover-rtti dependency
* Revert "Revert to AppConfig only being parameterized by e"
This reverts commit 0a66513807.
* Revert to previous version without restore-rtti dependency
* Try to overcome build issue by enforcing ubuntu-20.04
* Do not commit .dylib files
* For hpack version
* Fix docs
* Fix missing imports
* Fix typo
* Import popup widget
* Add popupOffset configuration option
* Add popupDisableClose config option
* Add alignment options to popup widget
* Improve Haddocks
* Add window compensation offset directly to node; remove related code, simplify
* Improve Haddocks
* Add popup unit tests
* Generate onChange events when opened/closed status changes
* Replace fdescribe with describe
* Update Changelog
* Delegate visibility check to each widget
* Consider scroll offset when aligning to widget
* Request a non zero size to avoid having an invisible node
* Add note to Container's init and merge documentation
* Add support for an anchor widget
* Do not apply active style if widget is not in the active overlay
* Add popupAlignToOuter option
* Add separate horizontal/vertical alignToOuter options
* Make sure BtnReleased is sent to overlay in case findWidgetByPoint returns Nothing
* Block events happening at the same instant the popup is closed, to avoid widgets below it being activated accidentally
* Use cursor location when validating if popup should be closed
* Increase timestamp on each group of events for nodeHandleEvents_. Add helper
* Fix unit tests
* Add anchor alignment options
* Attempt to position popup in the opposite border when using outer, if it does not fit in the main border
* Always Attempt to position popup in the opposite border, both for inner and outer border alignment
* Compensate offset when calculating border alignment
* Fix regression in window alignment. Haddock fixes
* 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