Fix "select toolchain path" in WSL with python virtual environments (#40447)

Julia Ryan created

Closes #39596

Release Notes:

- N/A

Change summary

crates/toolchain_selector/src/toolchain_selector.rs | 119 +++++++-------
1 file changed, 60 insertions(+), 59 deletions(-)

Detailed changes

crates/toolchain_selector/src/toolchain_selector.rs 🔗

@@ -128,66 +128,67 @@ impl AddToolchainState {
     ) -> (OpenPathDelegate, oneshot::Receiver<Option<Vec<PathBuf>>>) {
         let (tx, rx) = oneshot::channel();
         let weak = cx.weak_entity();
-        let lister = OpenPathDelegate::new(
-            tx,
-            DirectoryLister::Project(project),
-            false,
-            PathStyle::local(),
-        )
-        .show_hidden()
-        .with_footer(Arc::new(move |_, cx| {
-            let error = weak
-                .read_with(cx, |this, _| {
-                    if let AddState::Path { error, .. } = &this.state {
-                        error.clone()
-                    } else {
-                        None
-                    }
-                })
-                .ok()
-                .flatten();
-            let is_loading = weak
-                .read_with(cx, |this, _| {
-                    matches!(
-                        this.state,
-                        AddState::Path {
-                            input_state: PathInputState::Resolving(_),
-                            ..
-                        }
-                    )
-                })
-                .unwrap_or_default();
-            Some(
-                v_flex()
-                    .child(Divider::horizontal())
-                    .child(
-                        h_flex()
-                            .p_1()
-                            .justify_between()
-                            .gap_2()
-                            .child(Label::new("Select Toolchain Path").color(Color::Muted).map(
-                                |this| {
-                                    if is_loading {
-                                        this.with_animation(
-                                            "select-toolchain-label",
-                                            Animation::new(Duration::from_secs(2))
-                                                .repeat()
-                                                .with_easing(pulsating_between(0.4, 0.8)),
-                                            |label, delta| label.alpha(delta),
-                                        )
-                                        .into_any()
-                                    } else {
-                                        this.into_any_element()
-                                    }
-                                },
-                            ))
-                            .when_some(error, |this, error| {
-                                this.child(Label::new(error).color(Color::Error))
-                            }),
+        let path_style = project.read(cx).path_style(cx);
+        let lister =
+            OpenPathDelegate::new(tx, DirectoryLister::Project(project), false, path_style)
+                .show_hidden()
+                .with_footer(Arc::new(move |_, cx| {
+                    let error = weak
+                        .read_with(cx, |this, _| {
+                            if let AddState::Path { error, .. } = &this.state {
+                                error.clone()
+                            } else {
+                                None
+                            }
+                        })
+                        .ok()
+                        .flatten();
+                    let is_loading = weak
+                        .read_with(cx, |this, _| {
+                            matches!(
+                                this.state,
+                                AddState::Path {
+                                    input_state: PathInputState::Resolving(_),
+                                    ..
+                                }
+                            )
+                        })
+                        .unwrap_or_default();
+                    Some(
+                        v_flex()
+                            .child(Divider::horizontal())
+                            .child(
+                                h_flex()
+                                    .p_1()
+                                    .justify_between()
+                                    .gap_2()
+                                    .child(
+                                        Label::new("Select Toolchain Path")
+                                            .color(Color::Muted)
+                                            .map(|this| {
+                                                if is_loading {
+                                                    this.with_animation(
+                                                        "select-toolchain-label",
+                                                        Animation::new(Duration::from_secs(2))
+                                                            .repeat()
+                                                            .with_easing(pulsating_between(
+                                                                0.4, 0.8,
+                                                            )),
+                                                        |label, delta| label.alpha(delta),
+                                                    )
+                                                    .into_any()
+                                                } else {
+                                                    this.into_any_element()
+                                                }
+                                            }),
+                                    )
+                                    .when_some(error, |this, error| {
+                                        this.child(Label::new(error).color(Color::Error))
+                                    }),
+                            )
+                            .into_any(),
                     )
-                    .into_any(),
-            )
-        }));
+                }));
 
         (lister, rx)
     }