egui_charts/styles/
focus.rs1use egui::{Color32, Response, Stroke, Ui, epaint::StrokeKind};
7
8use crate::tokens::DESIGN_TOKENS;
9
10pub fn focus_ring_color(ui: &Ui) -> Color32 {
13 crate::theme::applied_theme(ui.ctx())
14 .map_or(ui.visuals().selection.stroke.color, |theme| theme.ui.focus)
15}
16
17pub fn draw_focus_ring(ui: &Ui, response: &Response, radius: impl Into<egui::CornerRadius>) {
21 if response.has_focus() {
22 let ring_color = focus_ring_color(ui);
23 ui.painter().rect_stroke(
24 response.rect.expand(DESIGN_TOKENS.spacing.xs),
25 radius.into() + DESIGN_TOKENS.spacing.xs as u8,
26 Stroke::new(DESIGN_TOKENS.stroke.thick, ring_color),
27 StrokeKind::Inside,
29 );
30 }
31}