diff --git a/widget/src/container.rs b/widget/src/container.rs index c3818bae..6f3280ce 100644 --- a/widget/src/container.rs +++ b/widget/src/container.rs @@ -403,13 +403,8 @@ where cursor: mouse::Cursor, ) -> iced_accessibility::A11yTree { let c_layout = layout.children().next().unwrap(); - let c_state = state.children.get(0); - self.content.as_widget().a11y_nodes( - c_layout, - c_state.unwrap_or(&Tree::empty()), - cursor, - ) + self.content.as_widget().a11y_nodes(c_layout, state, cursor) } fn drag_destinations( diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs index e9ddf8c4..bf139237 100644 --- a/widget/src/lazy/responsive.rs +++ b/widget/src/lazy/responsive.rs @@ -334,18 +334,12 @@ where tree: &Tree, cursor_position: mouse::Cursor, ) -> iced_accessibility::A11yTree { - use std::rc::Rc; - - let tree = tree.state.downcast_ref::>>>(); - if let Some(tree) = tree.borrow().as_ref() { - self.content.borrow().element.as_widget().a11y_nodes( - layout, - &tree.children[0], - cursor_position, - ) - } else { - iced_accessibility::A11yTree::default() - } + let state = tree.state.downcast_ref::().tree.borrow(); + self.content.borrow().element.as_widget().a11y_nodes( + layout, + &*state, + cursor_position, + ) } fn id(&self) -> Option { diff --git a/widget/src/mouse_area.rs b/widget/src/mouse_area.rs index 3a4e2c83..e6220b3f 100644 --- a/widget/src/mouse_area.rs +++ b/widget/src/mouse_area.rs @@ -360,6 +360,22 @@ where ); } } + + fn a11y_nodes( + &self, + layout: Layout<'_>, + state: &Tree, + cursor: mouse::Cursor, + ) -> iced_accessibility::A11yTree { + let c_state = state.children.get(0); + + let ret = self.content.as_widget().a11y_nodes( + layout, + c_state.unwrap_or(&Tree::empty()), + cursor, + ); + return ret; + } } impl<'a, Message, Theme, Renderer> From>