From 8f4729cc9f75fbd1c021fb97226d058cf017981b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Wed, 7 Oct 2026 14:51:30 -0400 Subject: [PATCH] =?UTF-8?q?Toggle=20=C2=B7=20toggles=20reach=20assistive?= =?UTF-8?q?=20tech:=20a=20button=20named=20by=20its=20label=20or=20tooltip?= =?UTF-8?q?,=20with=20its=20pressed=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/buttons/group.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/buttons/group.rs b/src/buttons/group.rs index 2bffe6d..a4a47e6 100644 --- a/src/buttons/group.rs +++ b/src/buttons/group.rs @@ -2,7 +2,7 @@ use std::rc::Rc; use gpui::{ App, ElementId, FontWeight, InteractiveElement, IntoElement, MouseButton, ParentElement, - RenderOnce, SharedString, StatefulInteractiveElement, Styled, Window, div, prelude::*, + RenderOnce, Role, SharedString, StatefulInteractiveElement, Styled, Window, div, prelude::*, }; use super::{ @@ -107,8 +107,16 @@ fn toggle_face( let (text, icon_size) = label_size(size); let fg = if on { colors.fg } else { colors.fg_muted }; let (hover, value) = (colors.hover, item.value.clone()); + let name = item + .label + .clone() + .or_else(|| item.tooltip.clone()) + .unwrap_or_else(|| item.value.clone()); div() .id(id) + .role(Role::Button) + .aria_label(name) + .aria_toggled(on.into()) .debug_selector(move || format!("toggle {value}")) .flex() .flex_none()