theme: Add fallback colors for version_control.<variant> properties (#27104)

This PR adds fallback colors for the `version_control.<variant>` theme
properties.

This fixes the colors when themes do not provide the properties.

Related to  https://github.com/zed-industries/zed/pull/26951.

Release Notes:

- Added fallback colors for the `version_control.<variant>` theme
properties.
This commit is contained in:
Marshall Bowers 2025-03-19 14:48:35 -04:00 committed by GitHub
parent 2491426be7
commit 68262fe7e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -98,7 +98,8 @@ impl ThemeStyleContent {
/// Returns a [`ThemeColorsRefinement`] based on the colors in the [`ThemeContent`].
#[inline(always)]
pub fn theme_colors_refinement(&self) -> ThemeColorsRefinement {
self.colors.theme_colors_refinement()
self.colors
.theme_colors_refinement(&self.status_colors_refinement())
}
/// Returns a [`StatusColorsRefinement`] based on the colors in the [`ThemeContent`].
@ -589,7 +590,10 @@ pub struct ThemeColorsContent {
impl ThemeColorsContent {
/// Returns a [`ThemeColorsRefinement`] based on the colors in the [`ThemeColorsContent`].
pub fn theme_colors_refinement(&self) -> ThemeColorsRefinement {
pub fn theme_colors_refinement(
&self,
status_colors: &StatusColorsRefinement,
) -> ThemeColorsRefinement {
let border = self
.border
.as_ref()
@ -1000,27 +1004,39 @@ impl ThemeColorsContent {
version_control_added: self
.version_control_added
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
.and_then(|color| try_parse_color(color).ok())
// Fall back to `created`, for backwards compatibility.
.or(status_colors.created),
version_control_deleted: self
.version_control_deleted
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
.and_then(|color| try_parse_color(color).ok())
// Fall back to `deleted`, for backwards compatibility.
.or(status_colors.deleted),
version_control_modified: self
.version_control_modified
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
.and_then(|color| try_parse_color(color).ok())
// Fall back to `modified`, for backwards compatibility.
.or(status_colors.modified),
version_control_renamed: self
.version_control_renamed
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
.and_then(|color| try_parse_color(color).ok())
// Fall back to `modified`, for backwards compatibility.
.or(status_colors.modified),
version_control_conflict: self
.version_control_conflict
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
.and_then(|color| try_parse_color(color).ok())
// Fall back to `ignored`, for backwards compatibility.
.or(status_colors.ignored),
version_control_ignored: self
.version_control_ignored
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
.and_then(|color| try_parse_color(color).ok())
// Fall back to `conflict`, for backwards compatibility.
.or(status_colors.ignored),
}
}
}