Update vulnerable dependencies and migrate to Iced 0.14.
This commit is contained in:
@@ -70,9 +70,9 @@ mod tests {
|
||||
..State::default()
|
||||
};
|
||||
let mut inventory = AccessKeyInventory::default();
|
||||
inventory.custom(&mut visible, None);
|
||||
inventory.custom(&mut offscreen, None);
|
||||
inventory.custom(&mut disabled, None);
|
||||
inventory.custom(None, Rectangle::default(), &mut visible);
|
||||
inventory.custom(None, Rectangle::default(), &mut offscreen);
|
||||
inventory.custom(None, Rectangle::default(), &mut disabled);
|
||||
assert_eq!(inventory.control_count, 1);
|
||||
assert_eq!(inventory.generic_count, 1);
|
||||
}
|
||||
@@ -115,8 +115,8 @@ mod tests {
|
||||
count: 0,
|
||||
exact: None,
|
||||
};
|
||||
prefix.custom(&mut first, None);
|
||||
prefix.custom(&mut second, None);
|
||||
prefix.custom(None, Rectangle::default(), &mut first);
|
||||
prefix.custom(None, Rectangle::default(), &mut second);
|
||||
assert_eq!(prefix.count, 2);
|
||||
assert_eq!(prefix.exact, None);
|
||||
|
||||
@@ -125,8 +125,8 @@ mod tests {
|
||||
count: 0,
|
||||
exact: None,
|
||||
};
|
||||
complete.custom(&mut first, None);
|
||||
complete.custom(&mut second, None);
|
||||
complete.custom(None, Rectangle::default(), &mut first);
|
||||
complete.custom(None, Rectangle::default(), &mut second);
|
||||
assert_eq!(complete.count, 1);
|
||||
assert_eq!(complete.exact.as_deref(), Some("AA"));
|
||||
}
|
||||
@@ -280,13 +280,6 @@ impl Focusable for State {
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_children(
|
||||
operation: &mut dyn Operation,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
operate_on_children(operation);
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct AccessKeyInventory {
|
||||
generic_count: usize,
|
||||
@@ -295,16 +288,11 @@ struct AccessKeyInventory {
|
||||
}
|
||||
|
||||
impl Operation for AccessKeyInventory {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
let Some(state) = state.downcast_ref::<State>() else {
|
||||
return;
|
||||
};
|
||||
@@ -327,16 +315,11 @@ struct AssignAccessKeys {
|
||||
}
|
||||
|
||||
impl Operation for AssignAccessKeys {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
let Some(state) = state.downcast_mut::<State>() else {
|
||||
return;
|
||||
};
|
||||
@@ -359,16 +342,11 @@ struct SetAccessPrefix<'a> {
|
||||
}
|
||||
|
||||
impl Operation for SetAccessPrefix<'_> {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
if let Some(state) = state.downcast_mut::<State>()
|
||||
&& state.access_mode
|
||||
{
|
||||
@@ -381,16 +359,11 @@ impl Operation for SetAccessPrefix<'_> {
|
||||
struct CancelAccessKeys;
|
||||
|
||||
impl Operation for CancelAccessKeys {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
if let Some(state) = state.downcast_mut::<State>() {
|
||||
state.access_mode = false;
|
||||
state.prefix.clear();
|
||||
@@ -405,16 +378,11 @@ struct AccessKeyMatches<'a> {
|
||||
}
|
||||
|
||||
impl Operation for AccessKeyMatches<'_> {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
let Some(state) = state.downcast_ref::<State>() else {
|
||||
return;
|
||||
};
|
||||
@@ -439,16 +407,11 @@ struct FocusAccessKey<'a> {
|
||||
}
|
||||
|
||||
impl Operation for FocusAccessKey<'_> {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
let Some(state) = state.downcast_mut::<State>() else {
|
||||
self.next_is_target = false;
|
||||
return;
|
||||
@@ -457,7 +420,7 @@ impl Operation for FocusAccessKey<'_> {
|
||||
state.pending_activation = self.next_is_target;
|
||||
}
|
||||
|
||||
fn focusable(&mut self, state: &mut dyn Focusable, _id: Option<&Id>) {
|
||||
fn focusable(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Focusable) {
|
||||
if self.next_is_target {
|
||||
state.focus();
|
||||
} else {
|
||||
@@ -474,20 +437,15 @@ struct FocusedEditable {
|
||||
}
|
||||
|
||||
impl Operation for FocusedEditable {
|
||||
fn container(
|
||||
&mut self,
|
||||
_id: Option<&Id>,
|
||||
_bounds: Rectangle,
|
||||
operate_on_children: &mut dyn FnMut(&mut dyn Operation),
|
||||
) {
|
||||
visit_children(self, operate_on_children);
|
||||
fn traverse(&mut self, operate: &mut dyn FnMut(&mut dyn Operation)) {
|
||||
operate(self);
|
||||
}
|
||||
|
||||
fn custom(&mut self, state: &mut dyn Any, _id: Option<&Id>) {
|
||||
fn custom(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Any) {
|
||||
self.next_is_control = state.is::<State>();
|
||||
}
|
||||
|
||||
fn focusable(&mut self, state: &mut dyn Focusable, _id: Option<&Id>) {
|
||||
fn focusable(&mut self, _id: Option<&Id>, _bounds: Rectangle, state: &mut dyn Focusable) {
|
||||
self.found |= state.is_focused() && !self.next_is_control;
|
||||
self.next_is_control = false;
|
||||
}
|
||||
@@ -535,9 +493,9 @@ impl<'a, Message> FocusableControl<'a, Message> {
|
||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)),
|
||||
Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)),
|
||||
] {
|
||||
let _ = self.content.as_widget_mut().on_event(
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event,
|
||||
&event,
|
||||
layout,
|
||||
cursor,
|
||||
renderer,
|
||||
@@ -574,18 +532,18 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
}
|
||||
|
||||
fn layout(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
renderer: &iced::Renderer,
|
||||
limits: &layout::Limits,
|
||||
) -> layout::Node {
|
||||
self.content
|
||||
.as_widget()
|
||||
.as_widget_mut()
|
||||
.layout(&mut tree.children[0], renderer, limits)
|
||||
}
|
||||
|
||||
fn operate(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
layout: Layout<'_>,
|
||||
renderer: &iced::Renderer,
|
||||
@@ -594,30 +552,34 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
let state = tree.state.downcast_mut::<State>();
|
||||
state.enabled = self.enabled;
|
||||
state.direct_key = self.hotkey;
|
||||
operation.custom(state, None);
|
||||
operation.custom(None, layout.bounds(), state);
|
||||
if self.enabled {
|
||||
operation.focusable(state, None);
|
||||
operation.focusable(None, layout.bounds(), state);
|
||||
} else {
|
||||
state.unfocus();
|
||||
}
|
||||
operation.container(None, layout.bounds(), &mut |operation| {
|
||||
self.content
|
||||
.as_widget()
|
||||
.operate(&mut tree.children[0], layout, renderer, operation);
|
||||
operation.container(None, layout.bounds());
|
||||
operation.traverse(&mut |operation| {
|
||||
self.content.as_widget_mut().operate(
|
||||
&mut tree.children[0],
|
||||
layout,
|
||||
renderer,
|
||||
operation,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
fn on_event(
|
||||
fn update(
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
event: Event,
|
||||
event: &Event,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
renderer: &iced::Renderer,
|
||||
clipboard: &mut dyn Clipboard,
|
||||
shell: &mut Shell<'_, Message>,
|
||||
viewport: &Rectangle,
|
||||
) -> event::Status {
|
||||
) {
|
||||
let pending_activation = {
|
||||
let state = tree.state.downcast_mut::<State>();
|
||||
let pending = state.pending_activation;
|
||||
@@ -626,11 +588,12 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
};
|
||||
if pending_activation && self.enabled {
|
||||
self.activate(tree, layout, renderer, clipboard, shell, viewport);
|
||||
return event::Status::Captured;
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
let child_status = self.content.as_widget_mut().on_event(
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event.clone(),
|
||||
event,
|
||||
layout,
|
||||
cursor,
|
||||
renderer,
|
||||
@@ -639,8 +602,8 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
viewport,
|
||||
);
|
||||
let state = tree.state.downcast_mut::<State>();
|
||||
if child_status == event::Status::Captured || !self.enabled {
|
||||
return child_status;
|
||||
if shell.is_event_captured() || !self.enabled {
|
||||
return;
|
||||
}
|
||||
let activate = state.focused
|
||||
&& matches!(
|
||||
@@ -652,9 +615,7 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
);
|
||||
if activate {
|
||||
self.activate(tree, layout, renderer, clipboard, shell, viewport);
|
||||
event::Status::Captured
|
||||
} else {
|
||||
child_status
|
||||
shell.capture_event();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -743,8 +704,8 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
size: Pixels(9.0),
|
||||
line_height: text::LineHeight::Relative(1.0),
|
||||
bounds: badge.size(),
|
||||
horizontal_alignment: alignment::Horizontal::Center,
|
||||
vertical_alignment: alignment::Vertical::Center,
|
||||
align_x: alignment::Horizontal::Center.into(),
|
||||
align_y: alignment::Vertical::Center,
|
||||
shaping: text::Shaping::Advanced,
|
||||
wrapping: text::Wrapping::None,
|
||||
},
|
||||
@@ -758,13 +719,18 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for FocusableControl<'_, Me
|
||||
fn overlay<'b>(
|
||||
&'b mut self,
|
||||
tree: &'b mut Tree,
|
||||
layout: Layout<'_>,
|
||||
layout: Layout<'b>,
|
||||
renderer: &iced::Renderer,
|
||||
viewport: &Rectangle,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, iced::Renderer>> {
|
||||
self.content
|
||||
.as_widget_mut()
|
||||
.overlay(&mut tree.children[0], layout, renderer, translation)
|
||||
self.content.as_widget_mut().overlay(
|
||||
&mut tree.children[0],
|
||||
layout,
|
||||
renderer,
|
||||
viewport,
|
||||
translation,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -802,18 +768,18 @@ impl<'a, Message> AccessKeyScope<'a, Message> {
|
||||
}
|
||||
|
||||
fn operate(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
layout: Layout<'_>,
|
||||
renderer: &iced::Renderer,
|
||||
operation: &mut dyn Operation,
|
||||
) {
|
||||
self.content
|
||||
.as_widget()
|
||||
.as_widget_mut()
|
||||
.operate(&mut tree.children[0], layout, renderer, operation);
|
||||
}
|
||||
|
||||
fn begin(&self, tree: &mut Tree, layout: Layout<'_>, renderer: &iced::Renderer) -> bool {
|
||||
fn begin(&mut self, tree: &mut Tree, layout: Layout<'_>, renderer: &iced::Renderer) -> bool {
|
||||
let mut focused_editable = FocusedEditable::default();
|
||||
self.operate(tree, layout, renderer, &mut focused_editable);
|
||||
if focused_editable.found {
|
||||
@@ -834,7 +800,7 @@ impl<'a, Message> AccessKeyScope<'a, Message> {
|
||||
true
|
||||
}
|
||||
|
||||
fn cancel(&self, tree: &mut Tree, layout: Layout<'_>, renderer: &iced::Renderer) {
|
||||
fn cancel(&mut self, tree: &mut Tree, layout: Layout<'_>, renderer: &iced::Renderer) {
|
||||
self.operate(tree, layout, renderer, &mut CancelAccessKeys);
|
||||
}
|
||||
}
|
||||
@@ -861,41 +827,45 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
}
|
||||
|
||||
fn layout(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
renderer: &iced::Renderer,
|
||||
limits: &layout::Limits,
|
||||
) -> layout::Node {
|
||||
self.content
|
||||
.as_widget()
|
||||
.as_widget_mut()
|
||||
.layout(&mut tree.children[0], renderer, limits)
|
||||
}
|
||||
|
||||
fn operate(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
layout: Layout<'_>,
|
||||
renderer: &iced::Renderer,
|
||||
operation: &mut dyn Operation,
|
||||
) {
|
||||
operation.container(None, layout.bounds(), &mut |operation| {
|
||||
self.content
|
||||
.as_widget()
|
||||
.operate(&mut tree.children[0], layout, renderer, operation);
|
||||
operation.container(None, layout.bounds());
|
||||
operation.traverse(&mut |operation| {
|
||||
self.content.as_widget_mut().operate(
|
||||
&mut tree.children[0],
|
||||
layout,
|
||||
renderer,
|
||||
operation,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
fn on_event(
|
||||
fn update(
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
event: Event,
|
||||
event: &Event,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
renderer: &iced::Renderer,
|
||||
clipboard: &mut dyn Clipboard,
|
||||
shell: &mut Shell<'_, Message>,
|
||||
viewport: &Rectangle,
|
||||
) -> event::Status {
|
||||
) {
|
||||
let modifier_update = match &event {
|
||||
Event::Keyboard(keyboard::Event::ModifiersChanged(modifiers))
|
||||
| Event::Keyboard(keyboard::Event::KeyPressed { modifiers, .. })
|
||||
@@ -939,7 +909,8 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
state.active = false;
|
||||
state.prefix.clear();
|
||||
state.cancelled_until_modifiers_release = true;
|
||||
return event::Status::Captured;
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
|
||||
if let Event::Keyboard(keyboard::Event::KeyPressed { key, modifiers, .. }) = &event
|
||||
@@ -955,12 +926,13 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
)
|
||||
};
|
||||
if cancelled {
|
||||
return event::Status::Captured;
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
if !active {
|
||||
active = self.begin(tree, layout, renderer);
|
||||
if !active {
|
||||
return self.content.as_widget_mut().on_event(
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event,
|
||||
layout,
|
||||
@@ -970,6 +942,7 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
shell,
|
||||
viewport,
|
||||
);
|
||||
return;
|
||||
}
|
||||
let state = tree.state.downcast_mut::<AccessKeyScopeState>();
|
||||
state.active = true;
|
||||
@@ -987,7 +960,8 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
let exact = matches.exact.take();
|
||||
drop(matches);
|
||||
if count == 0 {
|
||||
return event::Status::Captured;
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
|
||||
self.operate(
|
||||
@@ -1008,7 +982,7 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
next_is_target: false,
|
||||
},
|
||||
);
|
||||
let _ = self.content.as_widget_mut().on_event(
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event,
|
||||
layout,
|
||||
@@ -1024,7 +998,8 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
state.prefix.clear();
|
||||
state.cancelled_until_modifiers_release = true;
|
||||
}
|
||||
return event::Status::Captured;
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
|
||||
if matches!(event, Event::Mouse(mouse::Event::ButtonPressed(_)))
|
||||
@@ -1036,7 +1011,7 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
state.prefix.clear();
|
||||
}
|
||||
|
||||
self.content.as_widget_mut().on_event(
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event,
|
||||
layout,
|
||||
@@ -1045,7 +1020,7 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
clipboard,
|
||||
shell,
|
||||
viewport,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
fn mouse_interaction(
|
||||
@@ -1089,13 +1064,18 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for AccessKeyScope<'_, Mess
|
||||
fn overlay<'b>(
|
||||
&'b mut self,
|
||||
tree: &'b mut Tree,
|
||||
layout: Layout<'_>,
|
||||
layout: Layout<'b>,
|
||||
renderer: &iced::Renderer,
|
||||
viewport: &Rectangle,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, iced::Renderer>> {
|
||||
self.content
|
||||
.as_widget_mut()
|
||||
.overlay(&mut tree.children[0], layout, renderer, translation)
|
||||
self.content.as_widget_mut().overlay(
|
||||
&mut tree.children[0],
|
||||
layout,
|
||||
renderer,
|
||||
viewport,
|
||||
translation,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1130,18 +1110,18 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for SuspendedKeyboard<'_, M
|
||||
}
|
||||
|
||||
fn layout(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
renderer: &iced::Renderer,
|
||||
limits: &layout::Limits,
|
||||
) -> layout::Node {
|
||||
self.content
|
||||
.as_widget()
|
||||
.as_widget_mut()
|
||||
.layout(&mut tree.children[0], renderer, limits)
|
||||
}
|
||||
|
||||
fn operate(
|
||||
&self,
|
||||
&mut self,
|
||||
_tree: &mut Tree,
|
||||
_layout: Layout<'_>,
|
||||
_renderer: &iced::Renderer,
|
||||
@@ -1149,21 +1129,21 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for SuspendedKeyboard<'_, M
|
||||
) {
|
||||
}
|
||||
|
||||
fn on_event(
|
||||
fn update(
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
event: Event,
|
||||
event: &Event,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
renderer: &iced::Renderer,
|
||||
clipboard: &mut dyn Clipboard,
|
||||
shell: &mut Shell<'_, Message>,
|
||||
viewport: &Rectangle,
|
||||
) -> event::Status {
|
||||
) {
|
||||
if matches!(event, Event::Keyboard(_)) {
|
||||
event::Status::Captured
|
||||
shell.capture_event();
|
||||
} else {
|
||||
self.content.as_widget_mut().on_event(
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event,
|
||||
layout,
|
||||
@@ -1172,7 +1152,7 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for SuspendedKeyboard<'_, M
|
||||
clipboard,
|
||||
shell,
|
||||
viewport,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1217,13 +1197,18 @@ impl<Message> Widget<Message, Theme, iced::Renderer> for SuspendedKeyboard<'_, M
|
||||
fn overlay<'b>(
|
||||
&'b mut self,
|
||||
tree: &'b mut Tree,
|
||||
layout: Layout<'_>,
|
||||
layout: Layout<'b>,
|
||||
renderer: &iced::Renderer,
|
||||
viewport: &Rectangle,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, iced::Renderer>> {
|
||||
self.content
|
||||
.as_widget_mut()
|
||||
.overlay(&mut tree.children[0], layout, renderer, translation)
|
||||
self.content.as_widget_mut().overlay(
|
||||
&mut tree.children[0],
|
||||
layout,
|
||||
renderer,
|
||||
viewport,
|
||||
translation,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user