Case for revised data model: labelled_by
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- accessibility
Línea de trabajo
Comienza rastreando el modelo de datos de Node y la ruta de actualización parcial del árbol de sombra de accesibilidad, centrándote en cómo se asigna y conserva labelled_by cuando se reemplaza un Node. El issue presenta tres diseños posibles, pero no selecciona ninguno; para darlo por terminado sería necesario acordar un modelo de datos y definir el comportamiento para conservar o eliminar las relaciones labelled_by.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Context
If I understand correctly, the labelled_by property allows one Node to be labelled by another, for example a CheckBox with a separate Label widget, both wrapped under some CheckBoxWithLabel widget.
The CheckBox widget doesn't know about the Label (which is external), hence the labelled_by property can only be set by the parent widget (unless the parent explicitly asks the CheckBox to store the identifier of its label, but this is a restrictive and over-complex design).
Motivation: partial tree updates
In the case that a full accessibility tree must be generated the above is fine, but in the case that the CheckBox value changes and the widget tries to update its Node value in the accessibility shadow-tree, it's harder to do this without losing the labelled_by relationship.
Suggestions
I can see a couple of possible solutions here:
- Allow access to the prior state of nodes in the accessibility tree: then
CheckBoxcan copy its old value and update it. (This change is quite significant and may be undesirable.) - Move the
labelled_byproperty out ofNodeto another data structure (e.g.Vec<(NodeId, NodeId)>). Logically a node cannot label more than one other node; this should be enough to allow old (outdated/redundant)labelled_byrelationships to be pruned (though it doesn't allow such relationships to be removed; I suspect this is unimportant). - This is a hack, but might not work out too badly in practice: whenever a
Nodeis replaced and the old one has alabelled_byproperty while the newNodedoesn't, copy the property to the newNode. (The side effect is the same as with (2): updates cannot remove alabelled_byrelationship.)
Final note
Most Node properties are not affected the same way, though some others may be (possibly radio box groups; I didn't investigate since Kas's widget model doesn't have the necessary data to set this anyway).
- Lenguaje dominante
- Rust
- Estrellas
- 1.5k
- Forks
- 117
- Merge medio
- 6 h 5 min
- PR fusionados (30 d)
- 19
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de AccessKit/accesskit
-
Document sub-treesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Document `Role::ColorWell`Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
AccessKit/accesskit#802 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
AccessKit/accesskit#778 · 24 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
AccessKit/accesskit#749 · 9 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de AccessKit/accesskit
Issues similares
-
feature request good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
TabularisDB/tabularis#853 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
andrewdavidmackenzie/jonesy#267 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 4 días
-
`future_into_py` loses the original panic messagePosiblemente ocupada @Danipulok la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
PyO3/pyo3-async-runtimes#91 ·
-
Signals (Failure Detector): a tool call and its own execution are reported as a repeated callAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día