aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornc <[email protected]>2020-08-06 03:08:51 +0100
committernc <[email protected]>2020-08-06 03:08:51 +0100
commitee9be05579d87ca99f153d20995af3273385b564 (patch)
tree2760e96aea8d22ef9646918441c0ca7fb752b915 /src
parent20f7419c3d6d70ba8cfd996490020a5e1f2ad06d (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.rs1
-rw-r--r--src/app/impl_view.rs3
-rw-r--r--src/main.rs9
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}