diff --git a/crates/gpui2/src/action.rs b/crates/gpui2/src/action.rs index 06e93e275d260a9d83e0d860f8f853ad00144582..16487cf18afc4ddf96bfb76598747cdfcce1568e 100644 --- a/crates/gpui2/src/action.rs +++ b/crates/gpui2/src/action.rs @@ -68,8 +68,12 @@ where A: for<'a> Deserialize<'a> + PartialEq + Clone + Default + std::fmt::Debug + 'static, { fn qualified_name() -> SharedString { + let name = type_name::(); + let mut separator_matches = name.rmatch_indices("::"); + separator_matches.next().unwrap(); + let name_start_ix = separator_matches.next().map_or(0, |(ix, _)| ix + 2); // todo!() remove the 2 replacement when migration is done - type_name::().replace("2::", "::").into() + name[name_start_ix..].replace("2::", "::").into() } fn build(params: Option) -> Result> diff --git a/crates/workspace2/src/pane.rs b/crates/workspace2/src/pane.rs index d0613e13abc6f63ae9a323bd873400b751063a40..e3ea4863c999e1d0ce730c91f9091c954713c359 100644 --- a/crates/workspace2/src/pane.rs +++ b/crates/workspace2/src/pane.rs @@ -733,21 +733,21 @@ impl Pane { // self.activate_item(index, activate_pane, activate_pane, cx); // } - // pub fn close_active_item( - // &mut self, - // action: &CloseActiveItem, - // cx: &mut ViewContext, - // ) -> Option>> { - // if self.items.is_empty() { - // return None; - // } - // let active_item_id = self.items[self.active_item_index].id(); - // Some(self.close_item_by_id( - // active_item_id, - // action.save_intent.unwrap_or(SaveIntent::Close), - // cx, - // )) - // } + pub fn close_active_item( + &mut self, + action: &CloseActiveItem, + cx: &mut ViewContext, + ) -> Option>> { + if self.items.is_empty() { + return None; + } + let active_item_id = self.items[self.active_item_index].id(); + Some(self.close_item_by_id( + active_item_id, + action.save_intent.unwrap_or(SaveIntent::Close), + cx, + )) + } pub fn close_item_by_id( &mut self, @@ -1919,7 +1919,12 @@ impl Render for Pane { fn render(&mut self, cx: &mut ViewContext) -> Self::Element { v_stack() + .context("Pane") .size_full() + .on_action(|pane: &mut Self, action, cx| { + pane.close_active_item(action, cx) + .map(|task| task.detach_and_log_err(cx)); + }) .child(self.render_tab_bar(cx)) .child(div() /* todo!(toolbar) */) .child(if let Some(item) = self.active_item() {