From 9e108221729bd000f985538b77b877eea859c08c Mon Sep 17 00:00:00 2001 From: Matt Campbell Date: Tue, 29 Nov 2022 12:16:11 -0600 Subject: [PATCH] Tell AccessKit that the default action for a text edit (equivalent to a click) is to set the focus. This matters to some platform adapters. --- crates/egui/src/response.rs | 2 +- crates/egui/src/widgets/text_edit/builder.rs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/egui/src/response.rs b/crates/egui/src/response.rs index b23372d1..500358fc 100644 --- a/crates/egui/src/response.rs +++ b/crates/egui/src/response.rs @@ -552,7 +552,7 @@ impl Response { if self.sense.focusable { node.focusable = true; } - if self.sense.click { + if self.sense.click && node.default_action_verb.is_none() { node.default_action_verb = Some(accesskit::DefaultActionVerb::Click); } } diff --git a/crates/egui/src/widgets/text_edit/builder.rs b/crates/egui/src/widgets/text_edit/builder.rs index d4a30c2c..981c1b6d 100644 --- a/crates/egui/src/widgets/text_edit/builder.rs +++ b/crates/egui/src/widgets/text_edit/builder.rs @@ -719,8 +719,9 @@ impl<'t> TextEdit<'t> { node.word_lengths = word_lengths.into(); } + let mut node = ui.ctx().accesskit_node(parent_id, None); + if let Some(cursor_range) = &cursor_range { - let mut node = ui.ctx().accesskit_node(parent_id, None); let anchor = &cursor_range.secondary.rcursor; let focus = &cursor_range.primary.rcursor; node.text_selection = Some(TextSelection { @@ -734,6 +735,8 @@ impl<'t> TextEdit<'t> { }, }); } + + node.default_action_verb = Some(accesskit::DefaultActionVerb::Focus); } TextEditOutput {