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(), )