diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 1ff580f75..776d04f21 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -31,6 +31,7 @@ pub struct Button { content: ButtonContent, styles: ButtonStyleSheet, text_align: Alignment, + radius: Option, state: State, long_press: Option, long_timer: Option, @@ -49,6 +50,7 @@ impl Button { touch_expand: None, styles: theme::button_default(), text_align: Alignment::Start, + radius: None, state: State::Initial, long_press: None, long_timer: None, @@ -95,6 +97,11 @@ impl Button { self } + pub fn with_radius(mut self, radius: u8) -> Self { + self.radius = Some(radius); + self + } + pub fn enable_if(&mut self, ctx: &mut EventCtx, enabled: bool) { if enabled { self.enable(ctx); @@ -178,10 +185,21 @@ impl Button { pub fn render_background<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { match &self.content { ButtonContent::IconBlend(_, _, _) => {} - _ => shape::Bar::new(self.area) - .with_bg(style.button_color) - .with_fg(style.button_color) - .render(target), + _ => { + if self.radius.is_some() { + shape::Bar::new(self.area) + .with_bg(style.background_color) + .with_radius(self.radius.unwrap() as i16) + .with_thickness(2) + .with_fg(style.button_color) + .render(target); + } else { + shape::Bar::new(self.area) + .with_bg(style.button_color) + .with_fg(style.button_color) + .render(target); + } + } } }