textarea shows but doesnt update

This commit is contained in:
clizia 2025-05-14 17:57:05 +02:00
parent 72bd4ce74c
commit d1ea7eb2c0

View file

@ -77,12 +77,11 @@ impl Widget for Popup<'_> {
async fn handle_key_event(mut client: &mut Client<'_>, key_event: KeyEvent) {
match &client.popup_user_input {
true => {
match key_event.code {
KeyCode::Esc => client.popup_user_input = false,
KeyCode::Char(c) => {
todo!()
match key_event.into() {
Input {key: Key::Esc, ..} => client.popup_user_input = false,
input => {
client.textarea.input(input);
},
_ => (),
}
},
false => {
@ -151,10 +150,10 @@ async fn handle_key_event(mut client: &mut Client<'_>, key_event: KeyEvent) {
}
}
pub async fn handle_events(client: &mut Client<'_>) -> anyhow::Result<()> {
pub async fn handle_events(app: &mut Client<'_>) -> anyhow::Result<()> {
match event::read()? {
Event::Key(key) if key.kind == KeyEventKind::Press => {
handle_key_event(client, key).await
handle_key_event(app, key).await
}
_ => ()
}
@ -243,6 +242,27 @@ pub fn ui(frame: &mut Frame, app: &mut Client) {
frame.render_widget(popup, popup_area);
}
let mut textarea = TextArea::default();
textarea.set_block(
Block::default()
.borders(Borders::ALL)
.border_style(Style::default().fg(Color::LightBlue))
.title("Crossterm Popup Example"),
);
let area = Rect {
width: 40,
height: 5,
x: 5,
y: 5,
};
textarea.set_style(Style::default().fg(Color::Yellow));
textarea.set_placeholder_style(Style::default());
app.textarea = textarea;
if app.popup_user_input == true {
frame.render_widget(&app.textarea, area);
}
}