1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use std::{cell::RefCell, rc::Rc};
use crate::{ControlEvent, ControlObject};

pub trait EventContext {
    fn get_hovered_control(&self) -> Option<Rc<RefCell<dyn ControlObject>>>;
    fn set_hovered_control(&mut self,control: Option<Rc<RefCell<dyn ControlObject>>>);

    fn get_captured_control(&self) -> Option<Rc<RefCell<dyn ControlObject>>>;
    fn set_captured_control(&mut self, control: Option<Rc<RefCell<dyn ControlObject>>>);

    fn get_focused_control(&self) -> Option<Rc<RefCell<dyn ControlObject>>>;
    fn set_focused_control(&mut self, control: Option<Rc<RefCell<dyn ControlObject>>>);

    fn queue_event(&mut self, control: Option<Rc<RefCell<dyn ControlObject>>>, event: ControlEvent);
}