aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLibravatar Silas Bartha <[email protected]>2024-05-04 02:21:01 -0400
committerLibravatar Silas Bartha <[email protected]>2024-05-04 02:21:01 -0400
commitec8f43e79cb8a182c0dc73d103e632fac96293b6 (patch)
tree36a915128ee0ba6411b02a0eadcabaa56064ba70 /src
parent6834194b9e16a7b5ee68b539ceb1a99b8f1ff90b (diff)
Added command queue access to event handlersv0.1.2
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs3
-rw-r--r--src/resources.rs5
-rw-r--r--src/systems.rs3
3 files changed, 7 insertions, 4 deletions
diff --git a/src/lib.rs b/src/lib.rs
index ac093de..3d5b144 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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);
}
}
}