Skip to content

Releases: fjvallarino/monomer

Version 1.6.0.1

08 Jan 01:36
a16e859
Compare
Choose a tag to compare

1.6.0.1

Changed

  • Relaxed upper bounds for several packages (PR #314).

Version 1.6.0.0

08 Jan 01:34
58b0808
Compare
Choose a tag to compare

1.6.0.0

Added

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

04 Feb 23:32
ef4f10a
Compare
Choose a tag to compare

1.5.1.0

Added

  • Add color popup widget (PR #247).
  • Add responseIf and responseMaybe helpers (PR #250).

Fixed

Changed

Version 1.5.0.0

09 Oct 21:24
484fff1
Compare
Choose a tag to compare

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 ignore WidgetRequests 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

  • Do not exit application if icon image is missing or fails to load (PR #171).
  • Use stderr for diagnostic and error messages (PR #172).
  • Allow using any file type for the application icon (PR #186).

Image widget fixes and scroll improvements

30 May 21:23
55ae7f8
Compare
Choose a tag to compare

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

  • Restricts toggleButton's type argument for configuration options to Bool (the only valid type) (PR #150).
  • Avoids drawing borders if width == 0 (PR #150).
  • Updates default style for tooltip widget (PR #150).

Stability, improvements and documentation updates

30 Apr 18:18
dc3b889
Compare
Choose a tag to compare

Breaking changes

  • Added style...Set family of functions (PR #104).
  • Composite's onChange event is now sent to its handleEvent function, not to its parent; the type of the
    generated event was updated to reflect this change. The rationale is that since onInit is sent to
    handleEvent, having onChange sent to its parent was confusing. At the same time there was not an easy way
    in handleEvent to know when the model changed. Widgets that want to report model changes to its parent can
    use Report/RequestParent; an example can be found in ColorPicker (PR #71).
  • Timestamp is now a newtype. Enforce use of this type instead of Int when appropriate (PR #103).
  • Timestamp was renamed to Millisecond. 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 (previously customModelBuilder) now receives WidgetEnv as its first parameter (PR #114).
  • compositeMergeReqs now receives parentModel and oldModel too (PR #114).
  • mergeRequired now receives an extra value as its first parameter, usually WidgetEnv (PR #122).

Fixed

  • Properly handle SetFocusOnKey for textArea (#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 on nodeInfoFromPath to retrieve information instead of fetching it directly from WidgetEnv's widgetKeyMap, 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 and findParentNodeInfoByType.
  • 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 and textArea (PR #93). Thanks @Dretch!
  • The scroll widget now supports a thumbMinSize configuration option that allows setting a minimum thumb size (PR #100).
  • New field _weAppStartTs in WidgetEnv, complementary to _weTimestamp, representing the time in milliseconds when the application started. Added utility function currentTimeMs 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_) and ignoreParentEvts configuration option to button (PR #123).
  • Allow disabling auto scale detection with appDisableAutoScale (PR #128).

Changed

  • The keystroke widget now supports the Backspace key (PR #74).
  • style... family of functions now combine new attributes with the existing ones (PR #104).
  • radio and optionButton now only trigger onChange when their value changes. onClick was can be used to replicate the previous onChange 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 and silently (PR #70).

Improvements and bug fixes, including a fix for a critical issue with SDL 2.0.20

23 Jan 18:39
f4e4ddd
Compare
Choose a tag to compare

Added

  • Export drawArrowUp from Drawing module.
  • The image widget now supports a fitEither option (PR #56). Thanks @Kyarigwo!
  • The scroll widget now raises onChange events, providing the current ScrollStatus (PR #51).
  • The grid, stack, labeledCheckbox and labeledRadio widgets now support a childSpacing/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 a Composite changes during merge, 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 before pollEvents. The pumpEvents call is implied by pollEvent, but starting on
    SDL2 2.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.

28 Oct 19:41
afadfbb
Compare
Choose a tag to compare

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 and toggleButton widgets.
  • Add SetFocusOnKey and MoveFocusFromKey actions in Composite. Deprecate setFocusOnKey function. This function depended on information in WidgetEnv, 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 on keystroke.

Fix wheel/trackpad support and handling of model changes in Composite

07 Oct 02:22
Compare
Choose a tag to compare

Added

  • appInvertWheelX and appInvertWheelY 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.

24 Sep 19:50
Compare
Choose a tag to compare
  • 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 to WidgetEnv.
  • 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.