From f0cc54a0b528766d3f24e5e6a39d517ea3ec324d Mon Sep 17 00:00:00 2001 From: Julia Date: Fri, 8 Dec 2023 14:26:02 -0500 Subject: [PATCH] Comment the weirdness Co-Authored-By: Max Brunsfeld --- crates/terminal_view2/src/terminal_view.rs | 37 ++++++++++------------ 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/crates/terminal_view2/src/terminal_view.rs b/crates/terminal_view2/src/terminal_view.rs index d41e535d50eee6bc999ec7eea995fab8a84a9b59..83c7779d2e05f9a83a0de1d246131df95684bf59 100644 --- a/crates/terminal_view2/src/terminal_view.rs +++ b/crates/terminal_view2/src/terminal_view.rs @@ -11,8 +11,8 @@ use editor::{scroll::autoscroll::Autoscroll, Editor}; use gpui::{ div, overlay, Action, AnyElement, AppContext, DismissEvent, Div, EventEmitter, FocusEvent, FocusHandle, Focusable, FocusableElement, FocusableView, KeyContext, KeyDownEvent, Keystroke, - Model, MouseButton, MouseDownEvent, Pixels, Render, Subscription, Task, View, VisualContext, - WeakView, + Model, MouseButton, MouseDownEvent, Pixels, Render, Styled, Subscription, Task, View, + VisualContext, WeakView, }; use language::Bias; use persistence::TERMINAL_DB; @@ -651,25 +651,22 @@ impl Render for TerminalView { .on_focus_in(cx.listener(Self::focus_in)) .on_focus_out(cx.listener(Self::focus_out)) .on_key_down(cx.listener(Self::key_down)) + .on_mouse_down( + MouseButton::Right, + cx.listener(|this, event: &MouseDownEvent, cx| { + this.deploy_context_menu(event.position, cx); + cx.notify(); + }), + ) .child( - div() - .z_index(0) - .absolute() - .size_full() - .child(TerminalElement::new( - terminal_handle, - self.focus_handle.clone(), - focused, - self.should_show_cursor(focused, cx), - self.can_navigate_to_selected_word, - )) - .on_mouse_down( - MouseButton::Right, - cx.listener(|this, event: &MouseDownEvent, cx| { - this.deploy_context_menu(event.position, cx); - cx.notify(); - }), - ), + // TODO: Oddly this wrapper div is needed for TerminalElement to not steal events from the context menu + div().size_full().child(TerminalElement::new( + terminal_handle, + self.focus_handle.clone(), + focused, + self.should_show_cursor(focused, cx), + self.can_navigate_to_selected_word, + )), ) .children(self.context_menu.as_ref().map(|(menu, positon, _)| { overlay()