Use text color to paint SVGs

This commit is contained in:
Antonio Scandurra 2023-10-18 09:39:20 +02:00
parent e031718747
commit 597a9f9548
5 changed files with 22 additions and 20 deletions

View file

@ -84,14 +84,13 @@ where
Self: Sized, Self: Sized,
{ {
self.base.paint(bounds, view, element_state, cx); self.base.paint(bounds, view, element_state, cx);
let fill_color = self let color = self
.base .base
.compute_style(bounds, element_state, cx) .compute_style(bounds, element_state, cx)
.fill .text
.as_ref() .color;
.and_then(|fill| fill.color()); if let Some((path, color)) = self.path.as_ref().zip(color) {
if let Some((path, fill_color)) = self.path.as_ref().zip(fill_color) { cx.paint_svg(bounds, path.clone(), color).log_err();
cx.paint_svg(bounds, path.clone(), fill_color).log_err();
} }
} }
} }

View file

@ -144,7 +144,7 @@ impl CollabPanel {
}) })
.w_3p5() .w_3p5()
.h_3p5() .h_3p5()
.fill(theme.middle.variant.default.foreground), .text_color(theme.middle.variant.default.foreground),
), ),
) )
} }

View file

@ -215,7 +215,7 @@ impl Titlebar {
svg() svg()
.path("icons/exit.svg") .path("icons/exit.svg")
.size_4() .size_4()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
), ),
), ),
@ -245,7 +245,7 @@ impl Titlebar {
svg() svg()
.path("icons/mic.svg") .path("icons/mic.svg")
.size_3p5() .size_3p5()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
) )
.child( .child(
@ -265,7 +265,7 @@ impl Titlebar {
svg() svg()
.path("icons/speaker-loud.svg") .path("icons/speaker-loud.svg")
.size_3p5() .size_3p5()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
) )
.child( .child(
@ -285,7 +285,7 @@ impl Titlebar {
svg() svg()
.path("icons/desktop.svg") .path("icons/desktop.svg")
.size_3p5() .size_3p5()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
), ),
), ),
@ -318,7 +318,7 @@ impl Titlebar {
.path("icons/caret_down.svg") .path("icons/caret_down.svg")
.w_2() .w_2()
.h_2() .h_2()
.fill(theme.lowest.variant.default.foreground), .text_color(theme.lowest.variant.default.foreground),
), ),
), ),
) )
@ -374,7 +374,7 @@ mod statusbar {
.path("icons/project.svg") .path("icons/project.svg")
.w_4() .w_4()
.h_4() .h_4()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
) )
.child( .child(
@ -389,7 +389,7 @@ mod statusbar {
.path("icons/conversations.svg") .path("icons/conversations.svg")
.w_4() .w_4()
.h_4() .h_4()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
) )
.child( .child(
@ -404,7 +404,7 @@ mod statusbar {
.path("icons/file_icons/notebook.svg") .path("icons/file_icons/notebook.svg")
.w_4() .w_4()
.h_4() .h_4()
.fill(theme.lowest.accent.default.foreground), .text_color(theme.lowest.accent.default.foreground),
), ),
), ),
) )
@ -432,7 +432,7 @@ mod statusbar {
.path("icons/error.svg") .path("icons/error.svg")
.w_4() .w_4()
.h_4() .h_4()
.fill(theme.lowest.negative.default.foreground), .text_color(theme.lowest.negative.default.foreground),
) )
.child(div().text_sm().child("2")), .child(div().text_sm().child("2")),
) )
@ -473,7 +473,7 @@ mod statusbar {
.path("icons/check_circle.svg") .path("icons/check_circle.svg")
.w_4() .w_4()
.h_4() .h_4()
.fill(theme.lowest.base.default.foreground), .text_color(theme.lowest.base.default.foreground),
), ),
) )
.child( .child(
@ -488,7 +488,7 @@ mod statusbar {
.path("icons/copilot.svg") .path("icons/copilot.svg")
.w_4() .w_4()
.h_4() .h_4()
.fill(theme.lowest.accent.default.foreground), .text_color(theme.lowest.accent.default.foreground),
), ),
), ),
) )

View file

@ -121,7 +121,7 @@ impl<S: 'static + Send + Sync + Clone> CollabPanel<S> {
}) })
.w_3p5() .w_3p5()
.h_3p5() .h_3p5()
.fill(theme.middle.variant.default.foreground), .text_color(theme.middle.variant.default.foreground),
), ),
) )
} }

View file

@ -183,7 +183,10 @@ impl<S: 'static + Send + Sync> IconElement<S> {
IconSize::Large => svg().size_4(), IconSize::Large => svg().size_4(),
}; };
sized_svg.flex_none().path(self.icon.path()).fill(fill) sized_svg
.flex_none()
.path(self.icon.path())
.text_color(fill)
} }
} }