From 43a12961500a57440e160949cb3f201a359a66b1 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 29 Sep 2023 21:51:27 -0400 Subject: [PATCH] Checkpoint: Storybook window showing --- crates/gpui3/src/app.rs | 20 +++++++++++--------- crates/gpui3/src/app/async_context.rs | 4 ++-- crates/storybook2/src/storybook2.rs | 18 +++++++++++++++--- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/crates/gpui3/src/app.rs b/crates/gpui3/src/app.rs index afbe875d33..00f42946f6 100644 --- a/crates/gpui3/src/app.rs +++ b/crates/gpui3/src/app.rs @@ -27,7 +27,7 @@ use std::{ use util::ResultExt; #[derive(Clone)] -pub struct App(Arc>); +pub struct App(Arc>>); impl App { pub fn production() -> Self { @@ -66,7 +66,7 @@ impl App { pub fn run(self, on_finish_launching: F) where - F: 'static + FnOnce(&mut AppContext), + F: 'static + FnOnce(&mut AppContext), { let this = self.clone(); let platform = self.0.lock().platform.clone(); @@ -82,7 +82,7 @@ type Handlers = pub struct AppContext { thread: PhantomData, - this: Weak>, + this: Weak>>, platform: MainThreadOnly, dispatcher: Arc, text_system: Arc, @@ -97,7 +97,7 @@ pub struct AppContext { pub(crate) layout_id_buffer: Vec, // We recycle this memory across layout requests. } -impl AppContext { +impl AppContext { // TODO: Better names for these? #[inline] pub fn downcast(&self) -> &AppContext<()> { @@ -119,7 +119,7 @@ impl AppContext { &self.text_system } - pub fn to_async(&self) -> AsyncContext { + pub fn to_async(&self) -> AsyncContext { AsyncContext(self.this.clone()) } @@ -133,8 +133,9 @@ impl AppContext { let this = self.this.upgrade().unwrap(); run_on_main(self.dispatcher.clone(), move || { let cx = &mut *this.lock(); - let main_thread_cx = - unsafe { std::mem::transmute::<&mut AppContext, &mut AppContext>(cx) }; + let main_thread_cx = unsafe { + std::mem::transmute::<&mut AppContext, &mut AppContext>(cx) + }; main_thread_cx.update(|cx| f(cx)) }) } @@ -150,8 +151,9 @@ impl AppContext { let this = self.this.upgrade().unwrap(); spawn_on_main(self.dispatcher.clone(), move || { let cx = &mut *this.lock(); - let main_thread_cx = - unsafe { std::mem::transmute::<&mut AppContext, &mut AppContext>(cx) }; + let main_thread_cx = unsafe { + std::mem::transmute::<&mut AppContext, &mut AppContext>(cx) + }; main_thread_cx.update(|cx| f(cx)) }) } diff --git a/crates/gpui3/src/app/async_context.rs b/crates/gpui3/src/app/async_context.rs index 750138cc55..f9c5d6f656 100644 --- a/crates/gpui3/src/app/async_context.rs +++ b/crates/gpui3/src/app/async_context.rs @@ -4,7 +4,7 @@ use parking_lot::Mutex; use std::sync::Weak; #[derive(Clone)] -pub struct AsyncContext(pub(crate) Weak>); +pub struct AsyncContext(pub(crate) Weak>>); impl Context for AsyncContext { type EntityContext<'a, 'b, T: Send + Sync + 'static> = ModelContext<'a, T>; @@ -36,7 +36,7 @@ impl Context for AsyncContext { } } -impl AsyncContext { +impl AsyncContext { pub fn update_window( &self, handle: AnyWindowHandle, diff --git a/crates/storybook2/src/storybook2.rs b/crates/storybook2/src/storybook2.rs index 3b341dbd53..df80b92001 100644 --- a/crates/storybook2/src/storybook2.rs +++ b/crates/storybook2/src/storybook2.rs @@ -1,5 +1,6 @@ #![allow(dead_code, unused_variables)] +use gpui3::{Bounds, WindowBounds, WindowOptions}; use log::LevelFilter; use simplelog::SimpleLogger; @@ -19,9 +20,20 @@ fn main() { SimpleLogger::init(LevelFilter::Info, Default::default()).expect("could not initialize logger"); gpui3::App::production().run(|cx| { - cx.run_on_main(|cx| { - let window = cx.open_window(Default::default(), |cx| workspace(cx)); - }); + let window = cx.open_window( + WindowOptions { + bounds: WindowBounds::Fixed(Bounds { + size: gpui3::Size { + width: 1400_f32.into(), + height: 900_f32.into(), + }, + ..Default::default() + }), + ..Default::default() + }, + |cx| workspace(cx), + ); + cx.activate(true); }); }