1use batbox_cmp::*;
2use batbox_color::*;
3use batbox_la::*;
4use batbox_tuple_macros::*;
5use derive_more::{Deref, DerefMut};
6use geng_camera::PixelPerfectCamera;
7use geng_draw2d as draw2d;
8use geng_font::{Font, TextAlign};
9use geng_window::{Event, Touch};
10use std::cell::RefCell;
11use std::collections::HashMap;
12use std::ffi::c_void;
13use std::ops::RangeInclusive;
14use std::ops::{Deref, DerefMut};
15use std::rc::Rc;
16use ugli::Ugli;
17
18mod config;
19mod controller;
20mod layout_widgets;
21mod theme;
22pub mod widget;
23mod widgets;
24
25pub use config::*;
26pub use controller::*;
27pub use layout_widgets::*;
28pub use theme::*;
29pub use widget::*;
30pub use widgets::*;
31
32fn traverse_mut(
33 widget: &mut dyn Widget,
34 on_enter: &mut dyn FnMut(&mut dyn Widget),
35 on_leave: &mut dyn FnMut(&mut dyn Widget),
36) {
37 on_enter(widget);
38 widget.walk_children_mut(&mut |widget| traverse_mut(widget, on_enter, on_leave));
39 on_leave(widget);
40}