diff options
author | nc <[email protected]> | 2020-08-06 03:08:51 +0100 |
---|---|---|
committer | nc <[email protected]> | 2020-08-06 03:08:51 +0100 |
commit | ee9be05579d87ca99f153d20995af3273385b564 (patch) | |
tree | 2760e96aea8d22ef9646918441c0ca7fb752b915 /src | |
parent | 20f7419c3d6d70ba8cfd996490020a5e1f2ad06d (diff) |
Override Ctrl-C by disabling callback in Cursive
Thanks to @gyscos for the explanation in #22!
Also removed extraneous code that's no longer
needed.
Diffstat (limited to 'src')
-rw-r--r-- | src/app/impl_self.rs | 1 | ||||
-rw-r--r-- | src/app/impl_view.rs | 3 | ||||
-rw-r--r-- | src/main.rs | 9 |
3 files changed, 5 insertions, 8 deletions
diff --git a/src/app/impl_self.rs b/src/app/impl_self.rs index 325c53f..c2a24cf 100644 --- a/src/app/impl_self.rs +++ b/src/app/impl_self.rs | |||
@@ -24,7 +24,6 @@ impl App { | |||
24 | let (tx, rx) = channel(); | 24 | let (tx, rx) = channel(); |
25 | let mut watcher = watcher(tx, Duration::from_secs(1)).unwrap(); | 25 | let mut watcher = watcher(tx, Duration::from_secs(1)).unwrap(); |
26 | watcher.watch(utils::auto_habit_file(), RecursiveMode::Recursive); | 26 | watcher.watch(utils::auto_habit_file(), RecursiveMode::Recursive); |
27 | |||
28 | return App { | 27 | return App { |
29 | habits: vec![], | 28 | habits: vec![], |
30 | focus: 0, | 29 | focus: 0, |
diff --git a/src/app/impl_view.rs b/src/app/impl_view.rs index b735003..1261208 100644 --- a/src/app/impl_view.rs +++ b/src/app/impl_view.rs | |||
@@ -85,6 +85,7 @@ impl View for App { | |||
85 | if self.habits.is_empty() { | 85 | if self.habits.is_empty() { |
86 | return EventResult::Ignored; | 86 | return EventResult::Ignored; |
87 | } | 87 | } |
88 | let m = self.message.clone(); | ||
88 | match e { | 89 | match e { |
89 | Event::Key(Key::Right) | Event::Key(Key::Tab) | Event::Char('l') => { | 90 | Event::Key(Key::Right) | Event::Key(Key::Tab) | Event::Char('l') => { |
90 | self.set_focus(Absolute::Right); | 91 | self.set_focus(Absolute::Right); |
@@ -166,7 +167,7 @@ impl View for App { | |||
166 | return EventResult::Consumed(None); | 167 | return EventResult::Consumed(None); |
167 | } | 168 | } |
168 | Event::CtrlChar('c') => { | 169 | Event::CtrlChar('c') => { |
169 | self.message.write().unwrap().set_message("Use the :q command to quit"); | 170 | m.write().unwrap().set_message("Use the :q command to quit"); |
170 | return EventResult::Consumed(None); | 171 | return EventResult::Consumed(None); |
171 | } | 172 | } |
172 | 173 | ||
diff --git a/src/main.rs b/src/main.rs index d733f97..3ec964a 100644 --- a/src/main.rs +++ b/src/main.rs | |||
@@ -50,13 +50,11 @@ fn main() { | |||
50 | ), | 50 | ), |
51 | } | 51 | } |
52 | } else { | 52 | } else { |
53 | let mut s = termion().unwrap(); | ||
53 | let app = App::load_state(); | 54 | let app = App::load_state(); |
54 | let m = app.message.clone(); | ||
55 | unsafe { signal_hook::register(signal_hook::SIGINT, move || { | ||
56 | m.write().unwrap().set_message("Use the :q command to quit"); | ||
57 | }) }.unwrap(); | ||
58 | 55 | ||
59 | let mut s = termion().unwrap(); | 56 | // prevent Ctrl-C from killing the app and allow the app to override it. |
57 | s.clear_global_callbacks(cursive::event::Event::CtrlChar('c')); | ||
60 | 58 | ||
61 | let layout = NamedView::new( | 59 | let layout = NamedView::new( |
62 | "Frame", | 60 | "Frame", |
@@ -66,7 +64,6 @@ fn main() { | |||
66 | s.add_global_callback(':', |s| open_command_window(s)); | 64 | s.add_global_callback(':', |s| open_command_window(s)); |
67 | 65 | ||
68 | s.set_theme(theme::theme_gen()); | 66 | s.set_theme(theme::theme_gen()); |
69 | |||
70 | s.run(); | 67 | s.run(); |
71 | } | 68 | } |
72 | } | 69 | } |