Case for revised data model: labelled_by
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- rust
- Lĩnh vực
- accessibility
Hướng nghiên cứu
Bắt đầu bằng cách lần theo mô hình dữ liệu của Node và đường dẫn cập nhật từng phần của cây shadow hỗ trợ khả năng truy cập, tập trung vào cách labelled_by được gán và duy trì khi một Node được thay thế. Issue đưa ra ba thiết kế khả dĩ nhưng không chọn thiết kế nào; để hoàn thành, cần thống nhất một mô hình dữ liệu và xác định hành vi để giữ lại hoặc loại bỏ các quan hệ labelled_by.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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).
- Ngôn ngữ chính
- Rust
- Star
- 1.5k
- Fork
- 117
- Merge trung bình
- 6 giờ 5 phút
- Pull request đã merge (30 ngày)
- 19
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của AccessKit/accesskit
-
Document sub-treesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Document `Role::ColorWell`Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
AccessKit/accesskit#802 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
AccessKit/accesskit#778 · 24 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
AccessKit/accesskit#749 · 9 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của AccessKit/accesskit
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
rubys/roundhouse#571 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
fastrevmd-lab/rustmistmcp#161 ·
-
arch-audit refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
SocketDev/socket-patch#1011 ·
Maintainer thường phản hồi trong vòng 1 ngày