create driven example for tui renderer

This commit is contained in:
Evan Almloff committed 2023-02-07 14:14:04 -06:00
1 parent c805bc25af
commit 71e34452da
10 files changed
+276 -34

No files matched your search

-4
View File
@@ -75,7 +75,6 @@ pub struct InnerInputState {
mouse: Option<MouseData>,
wheel: Option<WheelData>,
last_key_pressed: Option<(KeyboardData, Instant)>,
screen: Option<(u16, u16)>,
pub(crate) focus_state: FocusState,
// subscribers: Vec<Rc<dyn Fn() + 'static>>,
}
@@ -86,7 +85,6 @@ impl InnerInputState {
mouse: None,
wheel: None,
last_key_pressed: None,
screen: None,
// subscribers: Vec::new(),
focus_state: FocusState::create(rdom),
}
@@ -181,7 +179,6 @@ impl InnerInputState {
if old_focus != self.focus_state.last_focused_id {
// elements with listeners will always have a element id
if let Some(id) = self.focus_state.last_focused_id {
let element = dom.get(id).unwrap();
resolved_events.push(Event {
name: "focus",
id,
@@ -196,7 +193,6 @@ impl InnerInputState {
});
}
if let Some(id) = old_focus {
let element = dom.get(id).unwrap();
resolved_events.push(Event {
name: "focusout",
id,
+2 -2
View File
@@ -68,7 +68,7 @@ impl TuiContext {
}
}
pub fn render<R: Renderer<(), Rc<EventData>>>(
pub fn render<R: Renderer<Rc<EventData>>>(
cfg: Config,
f: impl FnOnce(&Arc<RwLock<RealDom>>, &Arc<Mutex<Taffy>>, UnboundedSender<InputEvent>) -> R,
) -> Result<()> {
@@ -271,7 +271,7 @@ pub fn render<R: Renderer<(), Rc<EventData>>>(
for e in evts {
let node = rdom.get_mut(e.id).unwrap();
renderer.handle_event(node, e.name, e.data);
renderer.handle_event(node, e.name, e.data, e.bubbles);
}
}
let mut rdom = rdom.write().unwrap();
+1 -1
View File
@@ -67,7 +67,7 @@ pub(crate) fn render_vnode(
}
let label = Label {
text,
text: &text.text,
style: node.get::<StyleModifier>().unwrap().core,
};
let area = Rect::new(x, y, width, height);