diff --git a/bracket-terminal/src/bterm.rs b/bracket-terminal/src/bterm.rs index e7af4efb..c31f0c14 100755 --- a/bracket-terminal/src/bterm.rs +++ b/bracket-terminal/src/bterm.rs @@ -70,6 +70,7 @@ pub struct BTerm { pub key: Option, pub mouse_pos: (i32, i32), pub left_click: bool, + pub mouse_changed: bool, pub shift: bool, pub control: bool, pub alt: bool, @@ -357,6 +358,7 @@ impl BTerm { if button_num == 0 { self.left_click = true; } + self.mouse_changed = true; let mut input = INPUT.lock(); if pressed { input.on_mouse_button_down(button_num); @@ -372,6 +374,7 @@ impl BTerm { /// Internal: mark mouse position changes pub(crate) fn on_mouse_position(&mut self, x: f64, y: f64) { let bi = BACKEND_INTERNAL.lock(); + self.mouse_changed = true; self.mouse_pos = (x as i32, y as i32); let mut input = INPUT.lock(); input.on_mouse_pixel_position(x, y); diff --git a/bracket-terminal/src/hal/crossterm_be/init.rs b/bracket-terminal/src/hal/crossterm_be/init.rs index 9a235574..6b304b1d 100755 --- a/bracket-terminal/src/hal/crossterm_be/init.rs +++ b/bracket-terminal/src/hal/crossterm_be/init.rs @@ -37,6 +37,7 @@ pub fn init_raw( frame_time_ms: 0.0, active_console: 0, key: None, + mouse_changed: false, mouse_pos: (0, 0), left_click: false, shift: false, diff --git a/bracket-terminal/src/hal/crossterm_be/main_loop.rs b/bracket-terminal/src/hal/crossterm_be/main_loop.rs index 94444252..d751862b 100755 --- a/bracket-terminal/src/hal/crossterm_be/main_loop.rs +++ b/bracket-terminal/src/hal/crossterm_be/main_loop.rs @@ -131,6 +131,7 @@ pub fn main_loop(mut bterm: BTerm, mut gamestate: GS) -> BResult< } gamestate.tick(&mut bterm); + bterm.mouse_changed = true; if output_buffer.is_none() { output_buffer = Some(full_redraw()?); diff --git a/bracket-terminal/src/hal/curses/init.rs b/bracket-terminal/src/hal/curses/init.rs index b80abc74..795d927b 100755 --- a/bracket-terminal/src/hal/curses/init.rs +++ b/bracket-terminal/src/hal/curses/init.rs @@ -47,6 +47,7 @@ pub fn init_raw( frame_time_ms: 0.0, active_console: 0, key: None, + mouse_changed: false, mouse_pos: (0, 0), left_click: false, shift: false, diff --git a/bracket-terminal/src/hal/curses/main_loop.rs b/bracket-terminal/src/hal/curses/main_loop.rs index 68b37a00..106bf947 100755 --- a/bracket-terminal/src/hal/curses/main_loop.rs +++ b/bracket-terminal/src/hal/curses/main_loop.rs @@ -135,6 +135,7 @@ pub fn main_loop(mut bterm: BTerm, mut gamestate: GS) -> BResult< } gamestate.tick(&mut bterm); + bterm.mouse_changed = true; if output_buffer.is_none() { output_buffer = Some(full_redraw()?); diff --git a/bracket-terminal/src/hal/native/init.rs b/bracket-terminal/src/hal/native/init.rs index 51e05f76..32e9065c 100755 --- a/bracket-terminal/src/hal/native/init.rs +++ b/bracket-terminal/src/hal/native/init.rs @@ -126,6 +126,7 @@ pub fn init_raw( frame_time_ms: 0.0, active_console: 0, key: None, + mouse_changed: false, mouse_pos: (0, 0), left_click: false, shift: false, diff --git a/bracket-terminal/src/hal/native/mainloop.rs b/bracket-terminal/src/hal/native/mainloop.rs index eabc0b50..9436e401 100755 --- a/bracket-terminal/src/hal/native/mainloop.rs +++ b/bracket-terminal/src/hal/native/mainloop.rs @@ -375,6 +375,7 @@ fn tock( // Run the main loop gamestate.tick(bterm); + bterm.mouse_changed = false; // Tell each console to draw itself render_consoles().unwrap(); diff --git a/bracket-terminal/src/hal/wasm/init.rs b/bracket-terminal/src/hal/wasm/init.rs index 26f86451..f01db6f1 100755 --- a/bracket-terminal/src/hal/wasm/init.rs +++ b/bracket-terminal/src/hal/wasm/init.rs @@ -91,6 +91,7 @@ pub fn init_raw( frame_time_ms: 0.0, active_console: 0, key: None, + mouse_changed: false, mouse_pos: (0, 0), left_click: false, shift: false, diff --git a/bracket-terminal/src/hal/wasm/mainloop.rs b/bracket-terminal/src/hal/wasm/mainloop.rs index cba33a38..fbf8ee0f 100755 --- a/bracket-terminal/src/hal/wasm/mainloop.rs +++ b/bracket-terminal/src/hal/wasm/mainloop.rs @@ -107,6 +107,7 @@ fn tock( } gamestate.tick(bterm); + bterm.mouse_changed = false; // Console structure - doesn't really have to be every frame... rebuild_consoles(); diff --git a/bracket-terminal/src/hal/webgpu/init.rs b/bracket-terminal/src/hal/webgpu/init.rs index 095ea868..d3a29717 100644 --- a/bracket-terminal/src/hal/webgpu/init.rs +++ b/bracket-terminal/src/hal/webgpu/init.rs @@ -92,6 +92,7 @@ pub fn init_raw( frame_time_ms: 0.0, active_console: 0, key: None, + mouse_changed: false, mouse_pos: (0, 0), left_click: false, shift: false, diff --git a/bracket-terminal/src/hal/webgpu/mainloop.rs b/bracket-terminal/src/hal/webgpu/mainloop.rs index 8cbfb9ce..5f5f6f96 100644 --- a/bracket-terminal/src/hal/webgpu/mainloop.rs +++ b/bracket-terminal/src/hal/webgpu/mainloop.rs @@ -349,6 +349,7 @@ fn tock( // Run the main loop gamestate.tick(bterm); + bterm.mouse_changed = false; // Tell each console to draw itself render_consoles().unwrap();