feat: better a11y support
This commit is contained in:
parent
be4c0a0848
commit
2ecef3c7b2
14 changed files with 144 additions and 16 deletions
|
|
@ -252,6 +252,17 @@ where
|
|||
) -> Option<overlay::Element<'b, Message, crate::Theme, Renderer>> {
|
||||
self.container.overlay(tree, layout, renderer, translation)
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
self.container.a11y_nodes(layout, state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> From<AspectRatio<'a, Message, Renderer>>
|
||||
|
|
|
|||
|
|
@ -230,12 +230,9 @@ where
|
|||
renderer: &Renderer,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
|
||||
self.content.as_widget_mut().overlay(
|
||||
&mut tree.children[0],
|
||||
layout.children().next().unwrap(),
|
||||
renderer,
|
||||
translation,
|
||||
)
|
||||
self.content
|
||||
.as_widget_mut()
|
||||
.overlay(&mut tree.children[0], layout, renderer, translation)
|
||||
}
|
||||
|
||||
fn drag_destinations(
|
||||
|
|
@ -261,6 +258,19 @@ where
|
|||
fn set_id(&mut self, id: crate::widget::Id) {
|
||||
self.id = id;
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_layout = layout.children().next().unwrap();
|
||||
let c_state = &state.children[0];
|
||||
self.content.as_widget().a11y_nodes(c_layout, c_state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Theme, Renderer> From<Autosize<'a, Message, Theme, Renderer>>
|
||||
|
|
|
|||
|
|
@ -284,9 +284,8 @@ impl<'a, Message: Clone> Widget<Message, crate::Theme, Renderer> for ContextDraw
|
|||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_layout = layout.children().next().unwrap();
|
||||
let c_state = &state.children[0];
|
||||
self.content.as_widget().a11y_nodes(c_layout, c_state, p)
|
||||
self.content.as_widget().a11y_nodes(layout, c_state, p)
|
||||
}
|
||||
|
||||
fn drag_destinations(
|
||||
|
|
|
|||
|
|
@ -251,6 +251,18 @@ impl<'a, Message: Clone> Widget<Message, crate::Theme, crate::Renderer>
|
|||
.overlay(),
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: iced_core::Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_state = &state.children[0];
|
||||
self.content.as_widget().a11y_nodes(layout, c_state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message: Clone + 'a> From<ContextMenu<'a, Message>> for crate::Element<'a, Message> {
|
||||
|
|
|
|||
|
|
@ -541,6 +541,18 @@ impl<'a, Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
fn set_id(&mut self, id: Id) {
|
||||
self.id = id;
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: iced_core::Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_state = &state.children[0];
|
||||
self.container.as_widget().a11y_nodes(layout, c_state, p)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
|
|
|
|||
|
|
@ -381,6 +381,18 @@ impl<
|
|||
fn set_id(&mut self, id: Id) {
|
||||
self.id = id;
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: iced_core::Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_state = &state.children[0];
|
||||
self.container.as_widget().a11y_nodes(layout, c_state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<
|
||||
|
|
|
|||
|
|
@ -246,6 +246,17 @@ impl<'a, S: AsRef<str>, Message: 'a> Widget<Message, crate::Theme, crate::Render
|
|||
translation,
|
||||
)
|
||||
}
|
||||
|
||||
// #[cfg(feature = "a11y")]
|
||||
// /// get the a11y nodes for the widget
|
||||
// fn a11y_nodes(
|
||||
// &self,
|
||||
// layout: Layout<'_>,
|
||||
// state: &Tree,
|
||||
// p: mouse::Cursor,
|
||||
// ) -> iced_accessibility::A11yTree {
|
||||
// // TODO
|
||||
// }
|
||||
}
|
||||
|
||||
impl<'a, S: AsRef<str>, Message: 'a> From<Dropdown<'a, S, Message>>
|
||||
|
|
|
|||
|
|
@ -265,6 +265,23 @@ impl<'a, Message: Clone + 'static> Widget<Message, crate::Theme, crate::Renderer
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: iced_core::Layout<'_>,
|
||||
state: &tree::Tree,
|
||||
p: iced::mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_layout = layout.children().next().unwrap();
|
||||
let c_state = &state.children[0];
|
||||
let ret = self
|
||||
.header_bar_inner
|
||||
.as_widget()
|
||||
.a11y_nodes(c_layout, c_state, p);
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
||||
|
|
|
|||
|
|
@ -165,12 +165,9 @@ where
|
|||
renderer: &Renderer,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
|
||||
self.content.as_widget_mut().overlay(
|
||||
&mut tree.children[0],
|
||||
layout.children().next().unwrap(),
|
||||
renderer,
|
||||
translation,
|
||||
)
|
||||
self.content
|
||||
.as_widget_mut()
|
||||
.overlay(&mut tree.children[0], layout, renderer, translation)
|
||||
}
|
||||
|
||||
fn drag_destinations(
|
||||
|
|
@ -196,6 +193,19 @@ where
|
|||
fn set_id(&mut self, id: crate::widget::Id) {
|
||||
self.id = id;
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_layout = layout.children().next().unwrap();
|
||||
let c_state = &state.children[0];
|
||||
self.content.as_widget().a11y_nodes(c_layout, c_state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Theme, Renderer> From<IdContainer<'a, Message, Theme, Renderer>>
|
||||
|
|
|
|||
|
|
@ -274,6 +274,17 @@ where
|
|||
fn set_id(&mut self, id: crate::widget::Id) {
|
||||
self.container.set_id(id);
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: iced_core::Layout<'_>,
|
||||
state: &Tree,
|
||||
p: iced::mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
self.container.a11y_nodes(layout, state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> From<LayerContainer<'a, Message, Renderer>>
|
||||
|
|
|
|||
|
|
@ -273,6 +273,18 @@ where
|
|||
dnd_rectangles,
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
let c_state = &state.children[0];
|
||||
self.content.as_widget().a11y_nodes(layout, c_state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> From<Popover<'a, Message, Renderer>>
|
||||
|
|
|
|||
|
|
@ -309,6 +309,17 @@ where
|
|||
self.container
|
||||
.drag_destinations(state, layout, renderer, dnd_rectangles);
|
||||
}
|
||||
|
||||
#[cfg(feature = "a11y")]
|
||||
/// get the a11y nodes for the widget
|
||||
fn a11y_nodes(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
state: &Tree,
|
||||
p: mouse::Cursor,
|
||||
) -> iced_accessibility::A11yTree {
|
||||
self.container.a11y_nodes(layout, state, p)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer, I> From<RectangleTrackingContainer<'a, Message, Renderer, I>>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue