From 89be2635d4c89b7c1c1ead4578e9bd3e00a76726 Mon Sep 17 00:00:00 2001 From: Smit Barmase Date: Sat, 18 Oct 2025 05:44:41 -0700 Subject: [PATCH] project_panel: Fix double-click on blank area to create a new file (#40503) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regressed in https://github.com/zed-industries/zed/pull/38008 Release Notes: - Fixed an issue where double-clicking empty space in the project panel wouldn’t create a new file. --- crates/project_panel/src/project_panel.rs | 51 +++++++++++++---------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/crates/project_panel/src/project_panel.rs b/crates/project_panel/src/project_panel.rs index 0160d4d151d5bd102e72e195127fd6a16b63ce15..d9decd954b8f15abd3d5126b3e8f475013a9b895 100644 --- a/crates/project_panel/src/project_panel.rs +++ b/crates/project_panel/src/project_panel.rs @@ -5463,28 +5463,6 @@ impl Render for ProjectPanel { .on_action(cx.listener(Self::copy)) .on_action(cx.listener(Self::paste)) .on_action(cx.listener(Self::duplicate)) - .on_click(cx.listener(|this, event: &gpui::ClickEvent, window, cx| { - if event.click_count() > 1 - && let Some(entry_id) = this.state.last_worktree_root_id - { - let project = this.project.read(cx); - - let worktree_id = if let Some(worktree) = - project.worktree_for_entry(entry_id, cx) - { - worktree.read(cx).id() - } else { - return; - }; - - this.state.selection = Some(SelectedEntry { - worktree_id, - entry_id, - }); - - this.new_file(&NewFile, window, cx); - } - })) }) .when(project.is_local(), |el| { el.on_action(cx.listener(Self::reveal_in_finder)) @@ -5819,7 +5797,34 @@ impl Render for ProjectPanel { ); } }), - ), + ) + .when(!project.is_read_only(cx), |el| { + el.on_click(cx.listener( + |this, event: &gpui::ClickEvent, window, cx| { + if event.click_count() > 1 + && let Some(entry_id) = + this.state.last_worktree_root_id + { + let project = this.project.read(cx); + + let worktree_id = if let Some(worktree) = + project.worktree_for_entry(entry_id, cx) + { + worktree.read(cx).id() + } else { + return; + }; + + this.state.selection = Some(SelectedEntry { + worktree_id, + entry_id, + }); + + this.new_file(&NewFile, window, cx); + } + }, + )) + }), ) .size_full(), )