From dbcfb48198d80e6b6315dd752466279d2d8ec616 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Sun, 23 Nov 2025 19:40:33 -0300 Subject: [PATCH] Add mouse-based affordance to open a recent project in new window (#43373) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/zed-industries/zed/issues/31796 Screenshot 2025-11-23 at 7  39 2@2x Release Notes: - N/A --- crates/recent_projects/src/recent_projects.rs | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/crates/recent_projects/src/recent_projects.rs b/crates/recent_projects/src/recent_projects.rs index 8aab66533c59b7dae17cc7864d6a7e716d3ee948..280bf17a385db09c10c2844ac7126b3aac7adafb 100644 --- a/crates/recent_projects/src/recent_projects.rs +++ b/crates/recent_projects/src/recent_projects.rs @@ -544,6 +544,32 @@ impl PickerDelegate for RecentProjectsDelegate { paths, }; + let secondary_actions = h_flex() + .gap_px() + .child( + IconButton::new("open_new_window", IconName::ArrowUpRight) + .icon_size(IconSize::XSmall) + .tooltip(Tooltip::text("Open Project in New Window")) + .on_click(cx.listener(move |this, _event, window, cx| { + cx.stop_propagation(); + window.prevent_default(); + this.delegate.set_selected_index(ix, window, cx); + this.delegate.confirm(true, window, cx); + })), + ) + .child( + IconButton::new("delete", IconName::Close) + .icon_size(IconSize::Small) + .tooltip(Tooltip::text("Delete from Recent Projects")) + .on_click(cx.listener(move |this, _event, window, cx| { + cx.stop_propagation(); + window.prevent_default(); + + this.delegate.delete_recent_project(ix, window, cx) + })), + ) + .into_any_element(); + Some( ListItem::new(ix) .toggle_state(selected) @@ -577,24 +603,10 @@ impl PickerDelegate for RecentProjectsDelegate { }), ) .map(|el| { - let delete_button = div() - .child( - IconButton::new("delete", IconName::Close) - .icon_size(IconSize::Small) - .on_click(cx.listener(move |this, _event, window, cx| { - cx.stop_propagation(); - window.prevent_default(); - - this.delegate.delete_recent_project(ix, window, cx) - })) - .tooltip(Tooltip::text("Delete from Recent Projects...")), - ) - .into_any_element(); - if self.selected_index() == ix { - el.end_slot::(delete_button) + el.end_slot(secondary_actions) } else { - el.end_hover_slot::(delete_button) + el.end_hover_slot(secondary_actions) } }) .tooltip(move |_, cx| {