1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 13:20:05 -04:00

Update accesskit to 0.24.0 (and related deps)

Co-authored-by: Luke Warlow <lwarlow@igalia.com>
This commit is contained in:
Delan Azabani
2025-12-23 16:55:02 +08:00
committed by shuppy
parent b3ffbca2ab
commit 8eb50c2b2d
11 changed files with 166 additions and 95 deletions

View File

@@ -102,7 +102,7 @@ pub struct State {
has_sent_ime_enabled: bool,
#[cfg(feature = "accesskit")]
accesskit: Option<accesskit_winit::Adapter>,
pub accesskit: Option<accesskit_winit::Adapter>,
allow_ime: bool,
ime_rect_px: Option<egui::Rect>,

View File

@@ -2616,6 +2616,7 @@ impl ContextImpl {
platform_output.accesskit_update = Some(accesskit::TreeUpdate {
nodes,
tree: Some(accesskit::Tree::new(root_id)),
tree_id: accesskit::TreeId::ROOT,
focus: focus_id,
});
}

View File

@@ -79,7 +79,7 @@ impl Id {
self.0.get()
}
pub(crate) fn accesskit_id(&self) -> accesskit::NodeId {
pub fn accesskit_id(&self) -> accesskit::NodeId {
self.value().into()
}

View File

@@ -865,7 +865,8 @@ impl InputState {
let accesskit_id = id.accesskit_id();
self.events.iter().filter_map(move |event| {
if let Event::AccessKitActionRequest(request) = event
&& request.target == accesskit_id
&& request.target_node == accesskit_id
&& request.target_tree == accesskit::TreeId::ROOT
&& request.action == action
{
return Some(request);
@@ -882,7 +883,8 @@ impl InputState {
let accesskit_id = id.accesskit_id();
self.events.retain(|event| {
if let Event::AccessKitActionRequest(request) = event
&& request.target == accesskit_id
&& request.target_node == accesskit_id
&& request.target_tree == accesskit::TreeId::ROOT
{
return !consume(request);
}

View File

@@ -567,11 +567,13 @@ impl Focus {
if let crate::Event::AccessKitActionRequest(accesskit::ActionRequest {
action: accesskit::Action::Focus,
target,
target_node,
target_tree,
data: None,
}) = event
&& *target_tree == accesskit::TreeId::ROOT
{
self.id_requested_by_accesskit = Some(*target);
self.id_requested_by_accesskit = Some(*target_node);
}
}
}

View File

@@ -94,7 +94,7 @@ pub fn update_accesskit_for_text_widget(
builder.set_character_lengths(character_lengths);
builder.set_character_positions(character_positions);
builder.set_character_widths(character_widths);
builder.set_word_lengths(word_lengths);
// builder.set_word_lengths(word_lengths);
});
}
}

View File

@@ -192,10 +192,13 @@ impl CCursorRange {
Event::AccessKitActionRequest(accesskit::ActionRequest {
action: accesskit::Action::SetTextSelection,
target,
target_node,
target_tree,
data: Some(accesskit::ActionData::SetTextSelection(selection)),
}) => {
if _widget_id.accesskit_id() == *target {
if _widget_id.accesskit_id() == *target_node
&& *target_tree == accesskit::TreeId::ROOT
{
let primary =
ccursor_from_accesskit_text_position(_widget_id, galley, &selection.focus);
let secondary =

View File

@@ -175,7 +175,8 @@ impl AccessibilityInspectorPlugin {
&& ui.button(format!("{action:?}")).clicked()
{
let action_request = ActionRequest {
target: node.id(),
target_node: node.id(),
target_tree: accesskit::TreeId::ROOT,
action,
data: None,
};
@@ -205,6 +206,9 @@ impl AccessibilityInspectorPlugin {
// Safety: This is safe since the `accesskit::NodeId` was created from an `egui::Id`.
#[expect(unsafe_code)]
// FIXME: accesskit_consumer::Node::id() returns a new type now
// <https://docs.rs/accesskit_consumer/0.30.1/accesskit_consumer/struct.Node.html#method.id>
// <https://docs.rs/accesskit_consumer/0.33.0/accesskit_consumer/struct.Node.html#method.id>
let egui_node_id = unsafe { Id::from_high_entropy_bits(node.id().0) };
ui.push_id(node.id(), |ui| {

View File

@@ -100,7 +100,8 @@ impl Node<'_> {
pub fn click_accesskit(&self) {
self.event(egui::Event::AccessKitActionRequest(
accesskit::ActionRequest {
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
action: accesskit::Action::Click,
data: None,
},
@@ -121,7 +122,8 @@ impl Node<'_> {
pub fn focus(&self) {
self.event(egui::Event::AccessKitActionRequest(ActionRequest {
action: accesskit::Action::Focus,
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
data: None,
}));
}
@@ -164,7 +166,8 @@ impl Node<'_> {
pub fn scroll_to_me(&self) {
self.event(egui::Event::AccessKitActionRequest(ActionRequest {
action: accesskit::Action::ScrollIntoView,
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
data: None,
}));
}
@@ -173,7 +176,8 @@ impl Node<'_> {
pub fn scroll_down(&self) {
self.event(egui::Event::AccessKitActionRequest(ActionRequest {
action: accesskit::Action::ScrollDown,
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
data: None,
}));
}
@@ -182,7 +186,8 @@ impl Node<'_> {
pub fn scroll_up(&self) {
self.event(egui::Event::AccessKitActionRequest(ActionRequest {
action: accesskit::Action::ScrollUp,
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
data: None,
}));
}
@@ -191,7 +196,8 @@ impl Node<'_> {
pub fn scroll_left(&self) {
self.event(egui::Event::AccessKitActionRequest(ActionRequest {
action: accesskit::Action::ScrollLeft,
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
data: None,
}));
}
@@ -200,7 +206,8 @@ impl Node<'_> {
pub fn scroll_right(&self) {
self.event(egui::Event::AccessKitActionRequest(ActionRequest {
action: accesskit::Action::ScrollRight,
target: self.accesskit_node.id(),
target_node: self.accesskit_node.id(),
target_tree: accesskit::TreeId::ROOT,
data: None,
}));
}