Skip to content

ribir-v0.2.0-beta.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@M-Adoo M-Adoo released this 26 Mar 12:55
· 76 commits to master since this release

Features

  • Support the overlay (@wjian23).

    This enhancement simplifies the creation of overlay widgets. It streamlines the addition of any widget to an overlay and offers a more user-friendly API for overlay management

  • macros: Generates documentation for the builder methods of members in #[derive(Declare)], thus improving IDE support.(#538 @M-Adoo)

  • core: All built-in widget abilities are now exported on FatObj. (#535 @M-Adoo)
    You can directly use FatObj to configure built-in widget abilities such as on_click, on_key_down, etc.

    let _ = FatObj::new(Void)
      .margin(EdgeInsets::all(1.0))
      .on_click(|_, _| { println!("click"); });
  • macros: #[derive(Decalre)] now generates a FatObj<State<T>> instead of State<T>, and supports initialization of all built-in widgets on its ObjBuilder. (#535 @M-Adoo)
    All pipes used to initialize the field will be unsubscribed when the FatObj is disposed.

    let row = Row::builder()
      .margin(...)
      .on_click(...)
      .finish(ctx);
  • macros: Introduced simple_declare macro for types that don't use Pipe for initialization. (#535 @M-Adoo)

Changed

  • core: StateReader now automatically unsubscribes when no writer is present (#532 @wjian23)

  • core: Consolidated all listener and FocusNode into a MixBuiltin widget (#534 @M-Adoo)

    • The MixBuiltin widget reduces memory usage and allows users to utilize all on_xxx event handlers, not only during the build declaration but also after the widget has been built.
  • core: removed MixBuiltinDeclarer, which is no longer needed. (#538 @M-Adoo)

  • macros: removed crate ribir_builtin that is no longer needed. (#535 @M-Adoo)

Documented

  • fix broken links and format the example code (#526 @M-Adoo)

  • ribir: We no longer auto-generate the built-in list document, as FatObj lists all. Its API documentation is sufficient. (#540 @M-Adoo)

  • Ribir: Added guide "Using Ribir without 'DSL'" (#545 @M-Adoo)

  • Ribir: Added a roadmap. (#550, @M-Adoo)

Breaking

While these are public APIs, they are typically not required for direct use in user code.

  • core: removed Stateful::on_state_drop and Stateful::unsubscribe_on_drop (#539 @M-Adoo)

  • core: removed AppCtx::add_trigger_task and AppCtx::trigger_task (#539 @M-Adoo)

  • core: removed FatObj::unzip and FatObj::from_host (#535 @M-Adoo)

  • core: removed BuiltinObj. (#535 @M-Adoo)

  • core: FatObj::new(host: T, builtin: BuiltinObj) -> FatObj::new(host: T)

  • core: rename DeclareBuilder to ObjDeclarer (#547 @M-Adoo)

  • core: rename DeclareBuilder::build_declare to ObjDeclarer::finish (#547 @M-Adoo)
    _ core: rename Declare::declare_builder to Declare::declarer (#547 @M-Adoo)

  • core: Renamed the widget_build method to build for brevity, given its frequent usage. (#549 @M-Adoo)