MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / handle_event

Method handle_event

crates/opencode-tui/src/app/app.rs:307–756  ·  view source on GitHub ↗
(&mut self, event: &Event)

Source from the content-addressed store, hash-verified

305 }
306
307 fn handle_event(&mut self, event: &Event) -> anyhow::Result<()> {
308 self.event_caused_change = true;
309
310 match event {
311 Event::Key(key) => {
312 // Handle inline permission prompt before dialogs
313 if self.permission_prompt.is_open {
314 match key.code {
315 KeyCode::Char('y') | KeyCode::Enter => {
316 if let Some(_request) = self.permission_prompt.approve() {
317 // TODO: Call API when available
318 // self.api_client.reply_permission(&request.id, "once");
319 }
320 }
321 KeyCode::Char('n') => {
322 let _ = self.permission_prompt.deny();
323 }
324 KeyCode::Char('a') => {
325 let _ = self.permission_prompt.approve_always();
326 }
327 KeyCode::Esc => {
328 self.permission_prompt.deny();
329 }
330 _ => {}
331 }
332 return Ok(());
333 }
334
335 // Handle inline question prompt before dialogs
336 if self.question_prompt.is_open {
337 match key.code {
338 KeyCode::Up => self.question_prompt.move_up(),
339 KeyCode::Down => self.question_prompt.move_down(),
340 KeyCode::Char(' ') => self.question_prompt.toggle_selected(),
341 KeyCode::Enter => {
342 if let Some((_question, _answer)) = self.question_prompt.confirm() {
343 // TODO: Call API when available
344 }
345 }
346 KeyCode::Esc => {
347 self.question_prompt.close();
348 }
349 KeyCode::Char(c) => self.question_prompt.type_char(c),
350 KeyCode::Backspace => self.question_prompt.backspace(),
351 _ => {}
352 }
353 return Ok(());
354 }
355
356 if self.handle_dialog_key(*key)? {
357 return Ok(());
358 }
359
360 // Leader key handling
361 if self.leader_state.active {
362 if self.leader_state.check_timeout() {
363 // Leader timed out, fall through to normal handling
364 } else {

Callers 1

runMethod · 0.80

Calls 15

approveMethod · 0.80
denyMethod · 0.80
approve_alwaysMethod · 0.80
toggle_selectedMethod · 0.80
type_charMethod · 0.80
backspaceMethod · 0.80
handle_dialog_keyMethod · 0.80
check_timeoutMethod · 0.80
resetMethod · 0.80
containsMethod · 0.80
copy_selectionMethod · 0.80

Tested by

no test coverage detected