Releases: fjvallarino/monomer
Releases · fjvallarino/monomer
Version 1.6.0.1
Version 1.6.0.0
1.6.0.0
Added
- Add renderBezierTo to Renderer for rendering cubic bezier curves (PR #259). Thanks @DarinM223!
- Improve development time application reload (PR #239).
- Draggable widget: allow to hide the original widget when dragging (PR #259). Thanks @Deltaspace0!
- Add more animation widgets (PR #281). Thanks @Deltaspace0!
Fixed
- Avoid weird macOS 'command encoder is already encoding to this command buffer' error when resizing window (PR #234).
- Fix type error in examples (PR #263).
- Fix flake.nix definition to work with more recent nixpkgs snapshots (PR #266). Thanks @RubenAstudillo!
- Fix Semigroup instance for BoxShadowCfg (PR #272). Thanks @Deltaspace0!
- Fix typo in widgetDataSet description (PR #273). Thanks @Deltaspace0!
- Do not generate extra click events in box widget (PR #267).
- Remove redundant imports and fix typos (PR #275). Thanks @Deltaspace0!
- Fix typos in documentation (PR #284). Thanks @Deltaspace0!
- Fix build issues with GHC 9.6 (PR #308).
Changed
- Better explain how the nodeKey function is related to WidgetKey (PR #270). Thanks @RubenAstudillo!
- Use parent model for Alert and Confirm modals (PR #268).
- Use latest nanovg-hs commit hash to apply relaxed text and vector upper bounds (PR #285).
Version 1.5.1.0
1.5.1.0
Added
Fixed
- Fix rendering artifacts (PR #215).
- Trigger ResizeWidgets when user defined size requests change (PR #229).
- Do not pass events to selectList's children when they are not visible (PR #230).
- Avoid infinite resize loop in multiline label (PR #233).
- Several really nice documentation improvements. Thanks @Deltaspace0!
- Modify tests for selectList and dropdown (PR #245). Thanks @Deltaspace0!
- Fix animation widget raising onFinished event when it is no longer relevant (PR #252). Thanks @Deltaspace0!
Changed
- Add "examples" flag to optionally build examples and tutorials (PR #218).
- Use pkg-config for glew linking (PR #219).
- Export dialD_ (PR #246). Thanks @Deltaspace0!
Version 1.5.0.0
1.5.0.0
Added
- Do not disable screensaver unless explicitly requested; add configuration flag (PR #189).
- Conditional helpers for lists of widgets, styles and configuration options (PR #185).
- Popup widget (PR #191).
- Loading fonts from memory (PR #199). Thanks @klausweiss!
- BoxShadow component (PR #205). Thanks @Dretch!
Fixed
- Issue in
selectList
, which would ignoreWidgetRequest
s made by child widgets (PR #157). - Compatibility with GHC 9.2.2 (PR #162). Thanks @Dretch!
- Consider padding, border and sizeReqs in addition to textStyle when checking if resize is needed for label (PR #169).
- Hide tooltip when a button action is detected on its child widget (PR #170).
- Fix Composite's onDispose event handler (PR #176).
- Catch exception when trying to write to stderr and try stdout instead (PR #190).
Changed
Image widget fixes and scroll improvements
Added
- Support for switching vertical wheel scrolling to horizontal in scroll widget by pressing the shift key (PR #137).
- Drawing and theme utility functions (PR #138).
boxFilterEvent
config option, exposing Container's filterEvent functionality (PR #146).pointToLineDistance
utility function (PR #150).
Fixed
- Bug where memory based image widget would not render their new state after a merge (PR #147). Thanks @CamdenKuwahara!
- Fix memory leak in NanoVGRenderer's image initialization. Dispose unused images in image widget (PR #149).
Changed
Stability, improvements and documentation updates
Breaking changes
- Added
style...Set
family of functions (PR #104). Composite
'sonChange
event is now sent to itshandleEvent
function, not to its parent; the type of the
generated event was updated to reflect this change. The rationale is that sinceonInit
is sent to
handleEvent
, havingonChange
sent to its parent was confusing. At the same time there was not an easy way
inhandleEvent
to know when the model changed. Widgets that want to report model changes to its parent can
useReport
/RequestParent
; an example can be found inColorPicker
(PR #71).Timestamp
is now a newtype. Enforce use of this type instead ofInt
when appropriate (PR #103).Timestamp
was renamed toMillisecond
. The rationale is that since both timestamps and durations are used frequently in calculations (and in the context of Monomer timestamps and durations indeed represent time in milliseconds), having separate types for Timestamp and Duration caused more harm than good (PR #107).compositeMergeModel
(previouslycustomModelBuilder
) now receivesWidgetEnv
as its first parameter (PR #114).compositeMergeReqs
now receivesparentModel
andoldModel
too (PR #114).mergeRequired
now receives an extra value as its first parameter, usuallyWidgetEnv
(PR #122).
Fixed
- Properly handle
SetFocusOnKey
fortextArea
(#80). - Lens tutorial sample code (PR #95 and PR #98). Thanks @Clindbergh!
- ColorPicker's numericFields vertical alignment (PR #108).
- Differences in glyphs positions used by
FontManager
and nanovg; temporary workaround (PR #105). nodeInfoFromKey
relies onnodeInfoFromPath
to retrieve information instead of fetching it directly fromWidgetEnv
'swidgetKeyMap
, which can be stale (PR #110).- Glyph positioning issues in
FontManager
; removed workaround added in #105 (PR #125). - Will attempt to fall back to rendering on the main thread if threaded rendering setup fails (PR #131).
- Space leak in StyleUtil's mergeNodeStyleState (PR #132).
Added
- Utility functions
rectFromPoints
,nodeInfoFromKey
,nodeInfoFromPath
andfindParentNodeInfoByType
. - Allow setting the window icon via AppConfig (PR #79). Thanks @Dretch!
- Support for breaking text lines at character boundaries (PR #86). Thanks @toku-sa-n!
- Read-only mode for
textField
,numericField
,dateField
,timeField
andtextArea
(PR #93). Thanks @Dretch! - The
scroll
widget now supports athumbMinSize
configuration option that allows setting a minimum thumb size (PR #100). - New field
_weAppStartTs
inWidgetEnv
, complementary to_weTimestamp
, representing the time in milliseconds when the application started. Added utility functioncurrentTimeMs
that returns their sum with a polymorphic type (PR #103). - Several sizeReq helpers (PR #106).
compositeMergeEvents
, for completeness (PR #114).- Support for symbols and other keys in
keystroke
(PR #117). - New constructor (
buttonD_
) andignoreParentEvts
configuration option tobutton
(PR #123). - Allow disabling auto scale detection with
appDisableAutoScale
(PR #128).
Changed
- The
keystroke
widget now supports theBackspace
key (PR #74). style...
family of functions now combine new attributes with the existing ones (PR #104).radio
andoptionButton
now only triggeronChange
when their value changes.onClick
was can be used to replicate the previousonChange
behavior (PR #134).
Renamed
- Utility functions for retrieving
WidgetNode
information (PR #75)findWidgetByPath
->findChildNodeInfoByPath
.findWidgetBranchByPath
->findChildBranchByPath
.findWidgetIdFromPath
->widgetIdFromPath
.
- Composite merge related (PR #114)
customModelBuilder
->compositeMergeModel
CompositeCustomModelBuilder
->MergeModelHandler
.
Removed
- Dependencies on
OpenGL
,Safe
,scientific
,unordered-containers
,directory
,HUnit
andsilently
(PR #70).
Improvements and bug fixes, including a fix for a critical issue with SDL 2.0.20
Added
- Export
drawArrowUp
fromDrawing
module. - The
image
widget now supports afitEither
option (PR #56). Thanks @Kyarigwo! - The
scroll
widget now raisesonChange
events, providing the currentScrollStatus
(PR #51). - The
grid
,stack
,labeledCheckbox
andlabeledRadio
widgets now support achildSpacing
/childSpacing_
option
(PR #67). Thanks @Dretch!
Fixed
- Widgets that receive polymorphic types now append the handled type to their
WidgetType
. This
is done to avoid issues if the handled type is later changed (#46). - If the
WidgetType
of the root item in aComposite
changes duringmerge
, initialize the new widget instead
of merging with the old one (#50). - The arrow position in
dropdown
is now correct when a dropdown is taller than one line (PR #55). Thanks @Dretch! - The middle button click is now handled by
convertEvents
, and in turn reported to widgets (#63). - Add tolerance to width comparison in text clipping functions (#54).
- Call
pumpEvents
beforepollEvents
. ThepumpEvents
call is implied bypollEvent
, but starting on
SDL22.0.20
it seems to be required to call it explicitly (#66). Thanks @JD95!
Changed
- Relaxed upper bounds of dependencies for Stackage inclusion.
Composite improvements. New optionButton and toggleButton widgets. Several fixes and improvements.
Added
- Add
customModelBuilder
in Composite, for custom models support. These can consume information
from the parent model. - Add
containerCreateContainerFromModel
to workaround issue when updating offset during merge. - Add
appDisableCompositing
to allow requesting compositing to be disabled on startup. - Add
optionButton
andtoggleButton
widgets. - Add
SetFocusOnKey
andMoveFocusFromKey
actions inComposite
. DeprecatesetFocusOnKey
function. This function depended on information inWidgetEnv
, which can become stale if several actions are returned at once. This change reduces confusion regarding order of operations and widget tree state.
Fixed
- Keep old Composite root if model has not changed. This does not affect previous code,
it is only relevant with new features. - Generate
IgnoreParentEvents
request from widgets that handle Wheel event (avoids issues with scroll widget moving the content). - Do not run tests which depend on SDL's video subsystem to be available unless an environment variable is defined.
This allows for (hopefully) running tests on Hackage and, later on, deploying to Stackage.
Changed
- Composite requests
RenderOnce
when model changes. - Composite now renders decorations if a style is set.
- ZStack's
onlyTopActive
now follows the same pattern as other boolean combinators. - Shortened labels for
ColorPicker
. - Changed
_weFindByPath
to_weFindBranchByPath
, now returning the complete branch up to the given path. - Change SDL's default of requesting compositing to be disabled on startup (compositing is now left unchanged).
- Filter following
TextInput
event if a single letter binding matched previously onkeystroke
.
Fix wheel/trackpad support and handling of model changes in Composite
Added
appInvertWheelX
andappInvertWheelY
configuration options.
Fixed
- Horizontal wheel/trackpad scrolling on Linux.
- Scroll: do not use direction argument to modify wheel/trackpad direction (event provides correct value).
- Only replace composite model with user model on init and merge.
Improve support for low level OpenGL rendering.
- Reduce memory usage by sharing wreq session among image widget instances.
- Add sizeUpdater helpers. Support multiple handlers in box, grid and stack.
- Add
dpr
field toWidgetEnv
. - Add
RunInRenderThread
to support initialization of low level OpenGL resources. - Set correct
WidgetEnv
viewport from scroll (it looked good because of scissoring). - Fix issue with scrollbars using child coordinates for detecting clicks.
- Add OpenGL example.
- Add
containerDrawDecorations
. Simplify button/externalLink internals. - Add ThemeState entries for optionButton and toggleButton widgets.
- Add
singleDrawDecorations
. Make it consistent with Container.