fix: forward mouse events inside layout

After refactoring layout, the if statements were removed in favor of a
single match. This changed the control flow a bit, breaking mouse event
propagation.
This commit is contained in:
Thomas Frans
2023-06-14 12:21:27 +02:00
committed by Henrik Friedrichsen
parent 03cfd4da5f
commit d644397180

View File

@@ -260,7 +260,7 @@ impl Layout {
} }
if is_left_right_event { if is_left_right_event {
EventResult::Consumed(None) EventResult::consumed()
} else { } else {
result result
} }
@@ -358,10 +358,11 @@ impl View for Layout {
fn on_event(&mut self, event: Event) -> EventResult { fn on_event(&mut self, event: Event) -> EventResult {
match event { match event {
Event::Key(Key::Esc) if self.cmdline_focus => self.clear_cmdline(), Event::Key(Key::Esc) if self.cmdline_focus => {
_ if self.cmdline_focus => { self.clear_cmdline();
return self.command_line_handle_event(event); EventResult::consumed()
} }
_ if self.cmdline_focus => self.command_line_handle_event(event),
Event::Char(character) Event::Char(character)
if !self.cmdline_focus if !self.cmdline_focus
&& (character && (character
@@ -386,13 +387,15 @@ impl View for Layout {
if character == command_key { if character == command_key {
self.enable_cmdline(command_key); self.enable_cmdline(command_key);
EventResult::consumed()
} else if character == '/' { } else if character == '/' {
self.enable_jump(); self.enable_jump();
EventResult::consumed()
} else { } else {
return EventResult::Ignored; EventResult::Ignored
} }
} else { } else {
return result; result
} }
} }
Event::Mouse { Event::Mouse {
@@ -431,18 +434,23 @@ impl View for Layout {
self.statusbar.on_event( self.statusbar.on_event(
event.relativized(Vec2::new(0, self.last_size.y - 2 - cmdline_height)), event.relativized(Vec2::new(0, self.last_size.y - 2 - cmdline_height)),
); );
return EventResult::Consumed(None); return EventResult::consumed();
}
if let Some(view) = self.get_current_view_mut() {
view.on_event(event.relativized((0, 1)))
} else {
EventResult::Ignored
} }
} }
_ => { _ => {
if let Some(view) = self.get_current_view_mut() { if let Some(view) = self.get_current_view_mut() {
return view.on_event(event.relativized((0, 1))); view.on_event(event.relativized((0, 1)))
} else { } else {
return EventResult::Ignored; EventResult::Ignored
} }
} }
} }
EventResult::Consumed(None)
} }
fn call_on_any(&mut self, s: &Selector, c: AnyCb<'_>) { fn call_on_any(&mut self, s: &Selector, c: AnyCb<'_>) {