From 55c4aa2716532b5ec4e4eb30fa8c595d2375af96 Mon Sep 17 00:00:00 2001 From: Alexandre Bury Date: Thu, 18 Jun 2020 09:40:45 -0700 Subject: [PATCH] Reject events for disabled views --- cursive-core/src/views/button.rs | 4 ++++ cursive-core/src/views/checkbox.rs | 3 +++ cursive-core/src/views/edit_view.rs | 3 +++ cursive-core/src/views/radio.rs | 4 ++++ cursive-core/src/views/select_view.rs | 4 ++++ cursive-core/src/views/text_area.rs | 4 ++++ 6 files changed, 22 insertions(+) diff --git a/cursive-core/src/views/button.rs b/cursive-core/src/views/button.rs index 90c31b7..d4df9b7 100644 --- a/cursive-core/src/views/button.rs +++ b/cursive-core/src/views/button.rs @@ -160,6 +160,10 @@ impl View for Button { } fn on_event(&mut self, event: Event) -> EventResult { + if !self.enabled { + return EventResult::Ignored; + } + // eprintln!("{:?}", event); // eprintln!("{:?}", self.req_size()); let width = self.label.width(); diff --git a/cursive-core/src/views/checkbox.rs b/cursive-core/src/views/checkbox.rs index d56ef31..3db3c0f 100644 --- a/cursive-core/src/views/checkbox.rs +++ b/cursive-core/src/views/checkbox.rs @@ -158,6 +158,9 @@ impl View for Checkbox { } fn on_event(&mut self, event: Event) -> EventResult { + if !self.enabled { + return EventResult::Ignored; + } match event { Event::Key(Key::Enter) | Event::Char(' ') => self.toggle(), Event::Mouse { diff --git a/cursive-core/src/views/edit_view.rs b/cursive-core/src/views/edit_view.rs index 8be53d6..99b9351 100644 --- a/cursive-core/src/views/edit_view.rs +++ b/cursive-core/src/views/edit_view.rs @@ -598,6 +598,9 @@ impl View for EditView { } fn on_event(&mut self, event: Event) -> EventResult { + if !self.enabled { + return EventResult::Ignored; + } match event { Event::Char(ch) => { return EventResult::Consumed(Some(self.insert(ch))); diff --git a/cursive-core/src/views/radio.rs b/cursive-core/src/views/radio.rs index 9dae412..0082133 100644 --- a/cursive-core/src/views/radio.rs +++ b/cursive-core/src/views/radio.rs @@ -209,6 +209,10 @@ impl View for RadioButton { } fn on_event(&mut self, event: Event) -> EventResult { + if !self.enabled() { + return EventResult::Ignored; + } + match event { Event::Key(Key::Enter) | Event::Char(' ') => self.select(), Event::Mouse { diff --git a/cursive-core/src/views/select_view.rs b/cursive-core/src/views/select_view.rs index 59b589f..f4daddd 100644 --- a/cursive-core/src/views/select_view.rs +++ b/cursive-core/src/views/select_view.rs @@ -954,6 +954,10 @@ impl View for SelectView { } fn on_event(&mut self, event: Event) -> EventResult { + if !self.enabled { + return EventResult::Ignored; + } + if self.popup { self.on_event_popup(event) } else { diff --git a/cursive-core/src/views/text_area.rs b/cursive-core/src/views/text_area.rs index 9a43477..bd6bd4b 100644 --- a/cursive-core/src/views/text_area.rs +++ b/cursive-core/src/views/text_area.rs @@ -527,6 +527,10 @@ impl View for TextArea { } fn on_event(&mut self, event: Event) -> EventResult { + if !self.enabled { + return EventResult::Ignored; + } + let mut fix_scroll = true; match event { Event::Char(ch) => self.insert(ch),