add clear if top right

This commit is contained in:
stjet
2025-02-10 04:34:09 +00:00
parent 5998216b19
commit 2cee4aed67
2 changed files with 21 additions and 9 deletions

View File

@@ -107,3 +107,11 @@ pub enum WindowMessage {
Touch(usize, usize), //for onscreen keyboard only Touch(usize, usize), //for onscreen keyboard only
// //
} }
pub enum ThreadMessage {
KeyChar(KeyChar),
Touch(usize, usize),
Clear,
Exit,
}

View File

@@ -46,12 +46,6 @@ pub enum KeyChar {
Ctrl(char), Ctrl(char),
} }
enum ThreadMessage {
KeyChar(KeyChar),
Touch(usize, usize),
Exit,
}
pub fn init(framebuffer: Framebuffer, framebuffer_info: FramebufferInfo) { pub fn init(framebuffer: Framebuffer, framebuffer_info: FramebufferInfo) {
let args: Vec<_> = env::args().collect(); let args: Vec<_> = env::args().collect();
@@ -132,11 +126,17 @@ pub fn init(framebuffer: Framebuffer, framebuffer_info: FramebufferInfo) {
y = Some(value); y = Some(value);
} }
if x.is_some() && y.is_some() { if x.is_some() && y.is_some() {
if rotate { let (x2, y2) = if rotate {
tx1.send(ThreadMessage::Touch(y.unwrap(), dimensions[1] - x.unwrap())).unwrap(); (y.unwrap(), dimensions[1] - x.unwrap())
} else { } else {
tx1.send(ThreadMessage::Touch(x.unwrap(), y.unwrap())).unwrap(); (x.unwrap(), y.unwrap())
};
//top right, clear
//useful sometimes, I think.
if x2 > dimensions[0] - 100 && y2 < 100 {
tx1.send(ThreadMessage::Clear);
} }
tx1.send(ThreadMessage::Touch(x2, y2)).unwrap();
x = None; x = None;
y = None; y = None;
} }
@@ -154,6 +154,10 @@ pub fn init(framebuffer: Framebuffer, framebuffer_info: FramebufferInfo) {
match message { match message {
ThreadMessage::KeyChar(kc) => wm.handle_message(WindowManagerMessage::KeyChar(kc.clone())), ThreadMessage::KeyChar(kc) => wm.handle_message(WindowManagerMessage::KeyChar(kc.clone())),
ThreadMessage::Touch(x, y) => wm.handle_message(WindowManagerMessage::Touch(x, y)), ThreadMessage::Touch(x, y) => wm.handle_message(WindowManagerMessage::Touch(x, y)),
ThreadMessage::Clear => {
write!(stdout, "{}", clear::All).unwrap();
stdout.flush().unwrap();
},
ThreadMessage::Exit => { ThreadMessage::Exit => {
if !wm.locked { if !wm.locked {
write!(stdout, "{}", cursor::Show).unwrap(); write!(stdout, "{}", cursor::Show).unwrap();