git.lucas.co / cce-authenticator
login authentication (PAM + fingerprint)
git clone https://git.lucas.co/cce-authenticator.git

commit259c7c190e44c464de13a2483f74964dc7d02697
parent8059a1e9d0
authorLucas Galante <[email protected]>
date2026-07-11 14:10
refactor: widget text via the paint walk, not the text_labels getters (Phase 6ao)

The flat per-widget text_labels() loop becomes
scene::painter::append_widget_text per widget — same labels, but carrying
each widget's content font (legacy dropped it to the default font) and the
walk's clip bounds. A/B: only widget-owned labels (Scan, PASSWORD
placeholder, Verify Password, Cancel) change — they now render in the
widgets' configured monospace control font; all app-emitted chrome text is
byte-identical.

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018u7qTwzX95dd5ysAkaSCLk

 src/main.rs | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 1d0a7e9..15b99f5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -494,12 +494,8 @@ impl Application for AuthenticatorApp {
         );
         pc.text_with("PASSWORD AUTHENTICATION".to_string(), pw_col_x, pw_col_y - 15.0, 10.0, [0x83, 0x83, 0x8a], None, None);
 
-        let mut labels = Vec::new();
-        for w in &self.widgets_iter() {
-            labels.extend(w.text_labels());
-        }
-        for label in labels {
-            pc.text_with(label.text, label.x, label.y, label.font_size, label.color, None, None);
+        for w in self.widgets_iter() {
+            cce_ui::scene::painter::append_widget_text(&self.ui_context, w, &mut pc);
         }
 
         let status_color = if self.status_is_success {