Properly color file labels in project panel (#3794)

Kirill Bulatov created

Also fixes an error with mouse listeners placement in
https://github.com/zed-industries/zed/pull/3792

Release Notes:

- N/A

Change summary

crates/editor2/src/element.rs              | 10 +++-------
crates/project_panel2/src/project_panel.rs | 13 +++++--------
crates/ui2/src/styles/color.rs             |  2 ++
3 files changed, 10 insertions(+), 15 deletions(-)

Detailed changes

crates/editor2/src/element.rs 🔗

@@ -2840,17 +2840,13 @@ impl Element for EditorElement {
                 }
                 self.paint_text(text_bounds, &mut layout, cx);
 
+                cx.with_z_index(0, |cx| {
+                    self.paint_mouse_listeners(bounds, gutter_bounds, text_bounds, &layout, cx);
+                });
                 if !layout.blocks.is_empty() {
                     cx.with_z_index(0, |cx| {
                         cx.with_element_id(Some("editor_blocks"), |cx| {
                             self.paint_blocks(bounds, &mut layout, cx);
-                            self.paint_mouse_listeners(
-                                bounds,
-                                gutter_bounds,
-                                text_bounds,
-                                &layout,
-                                cx,
-                            );
                         });
                     })
                 }

crates/project_panel2/src/project_panel.rs 🔗

@@ -1364,16 +1364,15 @@ impl ProjectPanel {
             .map_or(false, |selection| selection.entry_id == entry_id);
         let width = self.width.unwrap_or(px(0.));
 
-        let theme = cx.theme();
         let filename_text_color = details
             .git_status
             .as_ref()
             .map(|status| match status {
-                GitFileStatus::Added => theme.status().created,
-                GitFileStatus::Modified => theme.status().modified,
-                GitFileStatus::Conflict => theme.status().conflict,
+                GitFileStatus::Added => Color::Created,
+                GitFileStatus::Modified => Color::Modified,
+                GitFileStatus::Conflict => Color::Conflict,
             })
-            .unwrap_or(theme.status().info);
+            .unwrap_or(Color::Default);
 
         let file_name = details.filename.clone();
         let icon = details.icon.clone();
@@ -1407,9 +1406,7 @@ impl ProjectPanel {
                         if let (Some(editor), true) = (Some(&self.filename_editor), show_editor) {
                             div().h_full().w_full().child(editor.clone())
                         } else {
-                            div()
-                                .text_color(filename_text_color)
-                                .child(Label::new(file_name))
+                            div().child(Label::new(file_name).color(filename_text_color))
                         }
                         .ml_1(),
                     )

crates/ui2/src/styles/color.rs 🔗

@@ -13,6 +13,7 @@ pub enum Color {
     Hidden,
     Info,
     Modified,
+    Conflict,
     Muted,
     Placeholder,
     Player(u32),
@@ -28,6 +29,7 @@ impl Color {
             Color::Muted => cx.theme().colors().text_muted,
             Color::Created => cx.theme().status().created,
             Color::Modified => cx.theme().status().modified,
+            Color::Conflict => cx.theme().status().conflict,
             Color::Deleted => cx.theme().status().deleted,
             Color::Disabled => cx.theme().colors().text_disabled,
             Color::Hidden => cx.theme().status().hidden,