From 33eaa4e8e0e57529d95cf199242e2bf8761508e4 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Thu, 6 Jul 2023 12:34:16 +0200 Subject: [PATCH] Do not quit on new issue form --- src/app.rs | 8 ++++++-- src/app/page.rs | 7 +++++++ src/app/subscription.rs | 21 ++++++--------------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/app.rs b/src/app.rs index 8c4b70c6..b352ef8c 100644 --- a/src/app.rs +++ b/src/app.rs @@ -11,7 +11,7 @@ use radicle::profile::Profile; use radicle_tui::ui::widget; use tuirealm::application::PollStrategy; -use tuirealm::{Application, Frame, NoUserEvent}; +use tuirealm::{Application, Frame, NoUserEvent, Sub, SubClause}; use radicle_tui::ui::context::Context; use radicle_tui::ui::theme::{self, Theme}; @@ -288,7 +288,11 @@ impl Tui for App { // Add global key listener and subscribe to key events let global = ui::widget::common::global_listener().to_boxed(); - app.mount(Cid::GlobalListener, global, subscription::global())?; + app.mount( + Cid::GlobalListener, + global, + vec![Sub::new(subscription::global_clause(), SubClause::Always)], + )?; Ok(()) } diff --git a/src/app/page.rs b/src/app/page.rs index 44014478..8b96d2cb 100644 --- a/src/app/page.rs +++ b/src/app/page.rs @@ -478,6 +478,8 @@ impl ViewPage for IssuePage { app.remount(Cid::Issue(cid.clone()), new_form, vec![])?; app.active(&Cid::Issue(cid.clone()))?; + app.unsubscribe(&Cid::GlobalListener, subscription::global_clause())?; + self.update_shortcuts(app, cid)?; } } @@ -485,6 +487,11 @@ impl ViewPage for IssuePage { app.blur()?; app.umount(&Cid::Issue(cid))?; + app.subscribe( + &Cid::GlobalListener, + Sub::new(subscription::global_clause(), SubClause::Always), + )?; + self.update_shortcuts(app, IssueCid::List)?; } _ => {} diff --git a/src/app/subscription.rs b/src/app/subscription.rs index 32a0153c..e8a5ef45 100644 --- a/src/app/subscription.rs +++ b/src/app/subscription.rs @@ -1,7 +1,5 @@ -use std::hash::Hash; - use tuirealm::event::{Key, KeyEvent, KeyModifiers}; -use tuirealm::{Sub, SubClause, SubEventClause}; +use tuirealm::SubEventClause; pub fn navigation_clause() -> SubEventClause where @@ -13,19 +11,12 @@ where }) } -pub fn global() -> Vec> +pub fn global_clause() -> SubEventClause where - Id: Clone + Hash + Eq + PartialEq, UserEvent: Clone + Eq + PartialEq + PartialOrd, { - vec![ - Sub::new( - SubEventClause::Keyboard(KeyEvent { - code: Key::Char('q'), - modifiers: KeyModifiers::NONE, - }), - SubClause::Always, - ), - Sub::new(SubEventClause::WindowResize, SubClause::Always), - ] + SubEventClause::Keyboard(KeyEvent { + code: Key::Char('q'), + modifiers: KeyModifiers::NONE, + }) }