Checkpoint
This commit is contained in:
@@ -23,15 +23,18 @@ impl AppContext {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn open_window<S>(
|
||||
pub fn open_window<S: 'static>(
|
||||
&mut self,
|
||||
build_root_view: impl FnOnce(&mut WindowContext) -> View<S>,
|
||||
) -> WindowHandle<S> {
|
||||
// let window = self.windows.insert_with_key(|id| {
|
||||
let id = self.windows.insert(None);
|
||||
|
||||
// });
|
||||
let mut window = Window::new(id);
|
||||
let root_view = build_root_view(&mut WindowContext::mutable(self, &mut window));
|
||||
window.root_view.replace(Box::new(root_view));
|
||||
|
||||
unimplemented!()
|
||||
self.windows.get_mut(id).unwrap().replace(window);
|
||||
WindowHandle::new(id)
|
||||
}
|
||||
|
||||
pub(crate) fn update_window<R>(
|
||||
|
||||
@@ -2,12 +2,15 @@ use super::{px, AppContext, Bounds, Context, EntityId, Handle, Pixels, Style, Ta
|
||||
use anyhow::Result;
|
||||
use derive_more::{Deref, DerefMut};
|
||||
use gpui2::Reference;
|
||||
use std::marker::PhantomData;
|
||||
use std::{any::Any, marker::PhantomData};
|
||||
|
||||
pub struct AnyWindow {}
|
||||
|
||||
pub struct Window {
|
||||
id: WindowId,
|
||||
rem_size: Pixels,
|
||||
layout_engine: Box<dyn LayoutEngine>,
|
||||
pub(crate) root_view: Option<Box<dyn Any>>,
|
||||
}
|
||||
|
||||
impl Window {
|
||||
@@ -16,6 +19,7 @@ impl Window {
|
||||
id,
|
||||
layout_engine: Box::new(TaffyLayoutEngine::new()),
|
||||
rem_size: px(16.),
|
||||
root_view: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -198,6 +202,15 @@ pub struct WindowHandle<S> {
|
||||
state_type: PhantomData<S>,
|
||||
}
|
||||
|
||||
impl<S> WindowHandle<S> {
|
||||
pub fn new(id: WindowId) -> Self {
|
||||
WindowHandle {
|
||||
id,
|
||||
state_type: PhantomData,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Layout {
|
||||
pub order: u32,
|
||||
|
||||
Reference in New Issue
Block a user