- Adds a new `ObjcProperty` type, which wraps our Objective-C objects in
a Rust-backed Rc/Refcell combo. This in general makes understanding
reference counting/storage more digestable when reading through the
codebase and leans more on Rust to do its thing than the Objective-C
runtime.
- Most widgets that need to implement `Layout` now only need to provide
a slot for running a handler with the underlying node.
- Further documentation work ongoing.
- Basic support for `AttributedString` type.
- `Debug` implementations across the board to ease debugging issues.
- Methods that take `Color` and `Font` types now accept an `AsRef` to
make implementing less of a headache.
- Cleanup of the `utils` module.
- Adds support for NSSplitViewController.
- Reworks NSMenu support to be cleaner with enum variants.
- Reworks the Foundation underpinnings to be a bit safer and more clear
in how they're used and passed around.
- Changes to docs structure for push towards v0.1.
- Examples updated to account for changes.
- Beginning to transition View types to use Rc/RefCell internally,
which should provide better guarantees about ownership on the Rust side.
This is also important for certain Objective-C side scenarios where we
may need to set an ivar after creation, which requires some level of
mutability. This may also possibly help bring down the unsafe usage,
which would be cool.
- Rewrote the Color module; this now handles system colors better, and
provides support for dynamic color creation. Supporting combinations
of dark/light/contrast is now possible with handler passed in via
`Color::dynamic`. This still has work to do in terms of some accessor
methods and such, but it works well for now. The `to_platform...`
method should be removed before v0.1.
- Added a new feature for enabling fallback color usage on older macOS
versions that don't support system colors. This may honestly never be
used, but it cost nothing to implement.
- Fixed a bug in the Autolayout wrapper where dereferencing could cause
constraints to crash at runtime.
- Support setting text color on labels.
- Support setting text color on buttons, albeit very hacky right now.
This needs to be extracted and/or cleaned up, but getting it sketched
out was important for this commit.
- Support setting a key equivalent on buttons.
- Creating a local event monitor is now possible.
- Examples updated; Calculator clone example added.
The only API breaking change in this commit from earlier commits should
be `color::rgb` needing to be `color::Color` followed by a
`Color::rgb(...)` call.