AT-SPI: an invalid node has no "invalid-entry" state

Abierto Apto para principiantes
#858 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust

Línea de trabajo

Lee NodeWrapper::state en adapters/atspi-common/src/node.rs y comprueba cómo funcionan Node::is_required() y las asignaciones de estado relacionadas. Luego localiza en la API de accesskit_consumer cómo exponer el valor no válido de un nodo. El trabajo está completo cuando los nodos con cualquier valor Invalid incluyen el estado AT-SPI State::InvalidEntry; verifícalo siguiendo la reproducción con Accerciser o atspi.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Platform: Linux (AT-SPI, accesskit_atspi_common)

What happens: a node with invalid set (for example a required text input whose value doesn't validate, aria-invalid="true") reaches AT-SPI without the invalid-entry state, so Orca doesn't say "invalid entry" when the field gets focus.

Expected: StateSet includes State::InvalidEntry whenever the node's invalid is set (any Invalid value). Chromium does the same: it maps aria-invalid to ATK_STATE_INVALID_ENTRY.

Reproduce: set node.set_invalid(Invalid::True) on a text input and read its states with Accerciser or atspi. invalid-entry is missing, while required, read-only and the others mapped in NodeWrapper::state are present.

Proposed change:

  • accesskit_consumer: add Node::is_invalid() (or expose invalid()).
  • adapters/atspi-common/src/node.rs, NodeWrapper::state: next to the is_required() check, add
    if state.is_invalid() {
        atspi_state.insert(State::InvalidEntry);
    }
    

For other platforms: UIA has IsDataValidForForm (Windows), and macOS has AXInvalid. I can look at those too if that's wanted.

Lenguaje dominante
Rust
Estrellas
1.6k
Forks
135
Merge medio
10 h 53 min
PR fusionados (30 d)
11

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de AccessKit/accesskit

Todos los issues de AccessKit/accesskit

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.