diff options
author | Silas Bartha <[email protected]> | 2024-05-04 02:21:01 -0400 |
---|---|---|
committer | Silas Bartha <[email protected]> | 2024-05-04 02:21:01 -0400 |
commit | ec8f43e79cb8a182c0dc73d103e632fac96293b6 (patch) | |
tree | 36a915128ee0ba6411b02a0eadcabaa56064ba70 | |
parent | 6834194b9e16a7b5ee68b539ceb1a99b8f1ff90b (diff) |
Added command queue access to event handlersv0.1.2
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/lib.rs | 3 | ||||
-rw-r--r-- | src/resources.rs | 5 | ||||
-rw-r--r-- | src/systems.rs | 3 |
4 files changed, 8 insertions, 5 deletions
@@ -1,6 +1,6 @@ [package] name = "grex_terminal_display" -version = "0.1.1" +version = "0.1.2" edition = "2021" [dependencies] @@ -8,7 +8,7 @@ use bevy::{ prelude::*, utils::tracing::level_filters::LevelFilter, }; use crossterm::{ - event::DisableMouseCapture, + event::{DisableMouseCapture, PopKeyboardEnhancementFlags}, terminal::{disable_raw_mode, LeaveAlternateScreen}, ExecutableCommand, }; @@ -66,6 +66,7 @@ impl Plugin for TerminalDisplayPlugin { impl Drop for TerminalDisplayPlugin { fn drop(&mut self) { let mut stdout = stdout(); + let _ = stdout.execute(PopKeyboardEnhancementFlags); let _ = stdout.execute(DisableMouseCapture); let _ = stdout.execute(LeaveAlternateScreen); let _ = disable_raw_mode(); diff --git a/src/resources.rs b/src/resources.rs index e8fb946..917f957 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -1,7 +1,7 @@ use std::{sync::{Arc, Mutex}, io::{stdout, Stdout}, fs::{File, OpenOptions}}; use bevy::{prelude::*, utils::{HashSet, Uuid, HashMap, tracing::{subscriber, level_filters::LevelFilter}}, log::tracing_subscriber}; -use crossterm::{event::{Event, KeyCode, EnableMouseCapture}, terminal::{EnterAlternateScreen, enable_raw_mode}, ExecutableCommand}; +use crossterm::{event::{Event, KeyCode, EnableMouseCapture, PushKeyboardEnhancementFlags, KeyboardEnhancementFlags}, terminal::{EnterAlternateScreen, enable_raw_mode}, ExecutableCommand}; use ratatui::{backend::CrosstermBackend, Frame, layout::Rect}; use crate::events::TerminalInputEvent; @@ -47,6 +47,7 @@ impl Default for Terminal { fn default() -> Self { stdout().execute(EnterAlternateScreen).unwrap(); stdout().execute(EnableMouseCapture).unwrap(); + stdout().execute(PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::REPORT_EVENT_TYPES)).unwrap(); enable_raw_mode().unwrap(); let mut terminal = ratatui::Terminal::new(CrosstermBackend::new(stdout())).expect("Failed to create terminal"); terminal.clear().expect("Failed to clear terminal"); @@ -85,6 +86,6 @@ pub trait TerminalWidget { fn init(&mut self) {} fn update(&mut self) {} fn render(&mut self, frame: &mut Frame, rect: Rect); - fn handle_events(&mut self, _event: &TerminalInputEvent) {} + fn handle_events(&mut self, _event: &TerminalInputEvent, commands: &mut Commands) {} fn depth(&self) -> u32 { 0 } } diff --git a/src/systems.rs b/src/systems.rs index e1a9bef..b0055b9 100644 --- a/src/systems.rs +++ b/src/systems.rs @@ -119,10 +119,11 @@ fn braille_char(mask: u8) -> char { pub fn widget_input_handling( mut terminal_ui: ResMut<TerminalUI>, mut event_reader: EventReader<TerminalInputEvent>, + mut commands: Commands, ) { for event in event_reader.read() { for widget in terminal_ui.widgets().iter_mut() { - widget.handle_events(event); + widget.handle_events(event, &mut commands); } } } |