diff --git a/FerroUI b/FerroUI index c4c4cf8..b753739 160000 --- a/FerroUI +++ b/FerroUI @@ -1 +1 @@ -Subproject commit c4c4cf872a3f57166ebb00b343ca4b6c41a55eef +Subproject commit b753739811c34eba24c86ec383232053e914e42e diff --git a/crates/ferrodesign-app/src/app.rs b/crates/ferrodesign-app/src/app.rs index 80b1f11..95690d9 100644 --- a/crates/ferrodesign-app/src/app.rs +++ b/crates/ferrodesign-app/src/app.rs @@ -51,7 +51,7 @@ impl ApplicationImpl for App { if let Some(shell) = weak.upgrade() { if !shell.command("commit-edit") { event.set_cancel(true); } } - }); + }).detach(); desktop.set_main_window(Some(window)); } SHELL.with(|slot| *slot.borrow_mut() = Some(shell)); diff --git a/crates/ferrodesign-app/src/prototype.rs b/crates/ferrodesign-app/src/prototype.rs index b6b2845..8b05892 100644 --- a/crates/ferrodesign-app/src/prototype.rs +++ b/crates/ferrodesign-app/src/prototype.rs @@ -8,7 +8,7 @@ use ferrodesign_core::{ PrototypeScene, PrototypeTimer, Transition, TransitionKind, Trigger, Viewport, MAX_DOCUMENT_DEPTH, }; use ferroui_base::animation::{Clock, IClock, PlayState, TimeSpan}; -use ferroui_base::reactive::{AnonymousObserver, IDisposable, IObservable}; +use ferroui_base::reactive::{AnonymousObserver, IDisposable, IObservable, Subscription}; use ferroui_base::threading::{DispatcherPriority, DispatcherTimer}; use ferroui_base::Ref; use std::{ @@ -53,7 +53,7 @@ struct AuthoredSnapshot { } struct ScheduledTimer { - subscription: Rc, + subscription: Subscription, } pub struct PrototypeRuntime { diff --git a/crates/ferrodesign-app/src/shell.rs b/crates/ferrodesign-app/src/shell.rs index f00847f..0e2d192 100644 --- a/crates/ferrodesign-app/src/shell.rs +++ b/crates/ferrodesign-app/src/shell.rs @@ -33,7 +33,7 @@ use ferroui_base::layout::{Orientation, VerticalAlignment}; use ferroui_base::media::{FontWeight, TextWrapping}; use ferroui_base::metadata::from_markup_value; use ferroui_base::utilities::{Uri, UriKind}; -use ferroui_base::reactive::IDisposable; +use ferroui_base::reactive::{IDisposable, Subscription}; use ferroui_base::threading::{DispatcherPriority, DispatcherTimer}; use std::time::{Duration, Instant}; use ferroui_base::{BoxedValue, ObjectType, Ref, Thickness, WeakRef}; @@ -72,7 +72,7 @@ pub struct EditorShell { prototype_targets: RefCell>, prototype: Rc, pending_save: Cell, - pending_save_timer: RefCell>>, + pending_save_timer: RefCell>, save_serializations: Cell, last_serialization_ms: Cell, scene_frames: Cell,