use cursive::{
view::Position,
views::{LayerPosition, TextView},
Cursive,
};
fn move_top(c: &mut Cursive, x_in: isize, y_in: isize) {
let s = c.screen_mut();
let l = LayerPosition::FromFront(0);
let pos = s
.layer_offset(LayerPosition::FromFront(0))
.unwrap()
.saturating_add((x_in, y_in));
let p = Position::absolute(pos);
s.reposition_layer(l, p);
}
fn main() {
let mut siv = cursive::default();
siv.add_global_callback('q', Cursive::quit);
siv.add_global_callback('w', |s| move_top(s, 0, -1));
siv.add_global_callback('a', |s| move_top(s, -1, 0));
siv.add_global_callback('s', |s| move_top(s, 0, 1));
siv.add_global_callback('d', |s| move_top(s, 1, 0));
siv.add_layer(TextView::new(
"Press w,a,s,d to move the window.\n\
Press q to quit the application.",
));
siv.run();
}