yoda: cargo clippy --fix on libcosmic-yoda (115→33 warnings)
Auto-applied clippy lint suggestions across 23 files: collapse
`else { if … }` ladders, drop unneeded `return` statements, remove
needless borrows that were immediately auto-dereffed, swap `iter().next()`
for `first()`, drop redundant `.into()` to the same type, and similar
mechanical cleanups. Behavior is unchanged; the diff is -67 lines net.
The 33 remaining warnings are architectural and need manual attention
(very-complex-type aliases, too-many-arguments on internal helpers,
redundant must_use, needs-is_empty, etc.).
Leyoda 2026 – GPLv3
This commit is contained in:
parent
999db0a4bd
commit
4743bb8ec9
23 changed files with 91 additions and 159 deletions
|
|
@ -479,12 +479,11 @@ where
|
|||
.into_iter()
|
||||
.filter(cosmic_config::Error::is_err)
|
||||
{
|
||||
if let cosmic_config::Error::GetKey(_, err) = &why {
|
||||
if err.kind() == std::io::ErrorKind::NotFound {
|
||||
if let cosmic_config::Error::GetKey(_, err) = &why
|
||||
&& err.kind() == std::io::ErrorKind::NotFound {
|
||||
// No system default config installed; don't error
|
||||
continue;
|
||||
}
|
||||
}
|
||||
tracing::error!(?why, "cosmic toolkit config update error");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,12 +23,11 @@ pub static COSMIC_TK: LazyLock<RwLock<CosmicTk>> = LazyLock::new(|| {
|
|||
.map(|c| {
|
||||
CosmicTk::get_entry(&c).unwrap_or_else(|(errors, mode)| {
|
||||
for why in errors.into_iter().filter(cosmic_config::Error::is_err) {
|
||||
if let cosmic_config::Error::GetKey(_, err) = &why {
|
||||
if err.kind() == std::io::ErrorKind::NotFound {
|
||||
if let cosmic_config::Error::GetKey(_, err) = &why
|
||||
&& err.kind() == std::io::ErrorKind::NotFound {
|
||||
// No system default config installed; don't error
|
||||
continue;
|
||||
}
|
||||
}
|
||||
tracing::error!(?why, "CosmicTk config entry error");
|
||||
}
|
||||
mode
|
||||
|
|
|
|||
|
|
@ -211,11 +211,10 @@ impl Catalog for crate::Theme {
|
|||
(component.base.into(), text_color, text_color)
|
||||
});
|
||||
|
||||
if let Button::ListItem(_) = style {
|
||||
if !selected {
|
||||
if let Button::ListItem(_) = style
|
||||
&& !selected {
|
||||
s.background = None;
|
||||
}
|
||||
}
|
||||
|
||||
s
|
||||
}
|
||||
|
|
@ -266,11 +265,10 @@ impl Catalog for crate::Theme {
|
|||
},
|
||||
);
|
||||
|
||||
if let Button::ListItem(_) = style {
|
||||
if !selected {
|
||||
if let Button::ListItem(_) = style
|
||||
&& !selected {
|
||||
s.background = None;
|
||||
}
|
||||
}
|
||||
|
||||
s
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,18 +171,15 @@ impl Button {
|
|||
* TODO: Checkbox
|
||||
*/
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[derive(Default)]
|
||||
pub enum Checkbox {
|
||||
#[default]
|
||||
Primary,
|
||||
Secondary,
|
||||
Success,
|
||||
Danger,
|
||||
}
|
||||
|
||||
impl Default for Checkbox {
|
||||
fn default() -> Self {
|
||||
Self::Primary
|
||||
}
|
||||
}
|
||||
|
||||
impl iced_checkbox::Catalog for Theme {
|
||||
type Class<'a> = Checkbox;
|
||||
|
|
@ -1193,7 +1190,7 @@ impl scrollable::Catalog for Theme {
|
|||
background: Color::TRANSPARENT.into(),
|
||||
border: Border::default(),
|
||||
shadow: Shadow::default(),
|
||||
icon: Color::TRANSPARENT.into(),
|
||||
icon: Color::TRANSPARENT,
|
||||
},
|
||||
};
|
||||
let small_widget_container = self.current_container().small_widget.with_alpha(0.7);
|
||||
|
|
@ -1261,7 +1258,7 @@ impl scrollable::Catalog for Theme {
|
|||
background: Color::TRANSPARENT.into(),
|
||||
border: Border::default(),
|
||||
shadow: Shadow::default(),
|
||||
icon: Color::TRANSPARENT.into(),
|
||||
icon: Color::TRANSPARENT,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -381,13 +381,12 @@ impl<'a, Message: 'a + Clone> Widget<Message, crate::Theme, crate::Renderer>
|
|||
match event {
|
||||
Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left))
|
||||
| Event::Touch(touch::Event::FingerPressed { .. }) => {
|
||||
if let Some(position) = cursor.position() {
|
||||
if removal_bounds(layout.bounds(), 4.0).contains(position) {
|
||||
if let Some(position) = cursor.position()
|
||||
&& removal_bounds(layout.bounds(), 4.0).contains(position) {
|
||||
shell.publish(on_remove.clone());
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_ => (),
|
||||
|
|
@ -560,9 +559,9 @@ impl<'a, Message: 'a + Clone> Widget<Message, crate::Theme, crate::Renderer>
|
|||
}
|
||||
}
|
||||
|
||||
if on_remove.is_some() {
|
||||
if let Some(position) = cursor.position() {
|
||||
if bounds.contains(position) {
|
||||
if on_remove.is_some()
|
||||
&& let Some(position) = cursor.position()
|
||||
&& bounds.contains(position) {
|
||||
let bounds = removal_bounds(layout.bounds(), 4.0);
|
||||
renderer.fill_quad(
|
||||
renderer::Quad {
|
||||
|
|
@ -594,8 +593,6 @@ impl<'a, Message: 'a + Clone> Widget<Message, crate::Theme, crate::Renderer>
|
|||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -793,7 +790,6 @@ pub fn update<'a, Message: Clone>(
|
|||
}
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -813,7 +809,6 @@ pub fn update<'a, Message: Clone>(
|
|||
}
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
} else if on_press_down.is_some() {
|
||||
let state = state();
|
||||
|
|
@ -833,7 +828,6 @@ pub fn update<'a, Message: Clone>(
|
|||
shell.publish(msg);
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
Event::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
|
||||
if let Some(on_press) = on_press {
|
||||
|
|
@ -844,7 +838,6 @@ pub fn update<'a, Message: Clone>(
|
|||
|
||||
shell.publish(msg);
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -532,7 +532,7 @@ where
|
|||
let c_layout = layout.next().unwrap();
|
||||
let state = clear_all_state.unwrap();
|
||||
self.clear_all_button.as_widget_mut().update(
|
||||
state, &event, c_layout, cursor, renderer, clipboard, shell, viewport,
|
||||
state, event, c_layout, cursor, renderer, clipboard, shell, viewport,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -542,7 +542,7 @@ where
|
|||
|
||||
for ((inner, layout), c_state) in self.elements.iter_mut().zip(layout).zip(tree_children) {
|
||||
inner.as_widget_mut().update(
|
||||
c_state, &event, layout, cursor, renderer, clipboard, shell, viewport,
|
||||
c_state, event, layout, cursor, renderer, clipboard, shell, viewport,
|
||||
);
|
||||
if shell.is_event_captured() || fully_unexpanded {
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -745,7 +745,7 @@ where
|
|||
let column_tree = &mut tree.children[0];
|
||||
self.inner.as_widget_mut().update(
|
||||
column_tree,
|
||||
&event,
|
||||
event,
|
||||
column_layout,
|
||||
cursor,
|
||||
renderer,
|
||||
|
|
@ -758,22 +758,19 @@ where
|
|||
return;
|
||||
}
|
||||
|
||||
match event {
|
||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||
let bounds = column_layout.children().nth(1).unwrap().bounds();
|
||||
if let Some(point) = cursor.position_over(bounds) {
|
||||
let relative_pos = point - bounds.position();
|
||||
let (s, v) = (
|
||||
relative_pos.x / bounds.width,
|
||||
1.0 - relative_pos.y / bounds.height,
|
||||
);
|
||||
state.dragging = true;
|
||||
let hsv: palette::Hsv = palette::Hsv::new(self.active_color.hue, s, v);
|
||||
shell.publish((self.on_update)(ColorPickerUpdate::ActiveColor(hsv)));
|
||||
shell.capture_event();
|
||||
}
|
||||
if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) = event {
|
||||
let bounds = column_layout.children().nth(1).unwrap().bounds();
|
||||
if let Some(point) = cursor.position_over(bounds) {
|
||||
let relative_pos = point - bounds.position();
|
||||
let (s, v) = (
|
||||
relative_pos.x / bounds.width,
|
||||
1.0 - relative_pos.y / bounds.height,
|
||||
);
|
||||
state.dragging = true;
|
||||
let hsv: palette::Hsv = palette::Hsv::new(self.active_color.hue, s, v);
|
||||
shell.publish((self.on_update)(ColorPickerUpdate::ActiveColor(hsv)));
|
||||
shell.capture_event();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -369,7 +369,7 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
x, y, mime_types, ..
|
||||
},
|
||||
)) if *id == Some(my_id) => {
|
||||
if !self.mime_matches(&mime_types) {
|
||||
if !self.mime_matches(mime_types) {
|
||||
log::trace!(
|
||||
target: DND_DEST_LOG_TARGET,
|
||||
"offer enter id={my_id:?} ignored (mimes={mime_types:?} not in {:?})",
|
||||
|
|
@ -408,7 +408,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
);
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
Event::Dnd(DndEvent::Offer(_, OfferEvent::Leave)) => {
|
||||
log::trace!(
|
||||
|
|
@ -436,7 +435,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
viewport,
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
Event::Dnd(DndEvent::Offer(id, OfferEvent::Motion { x, y })) if *id == Some(my_id) => {
|
||||
log::trace!(
|
||||
|
|
@ -471,7 +469,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
);
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
Event::Dnd(DndEvent::Offer(_, OfferEvent::LeaveDestination)) => {
|
||||
log::trace!(
|
||||
|
|
@ -484,7 +481,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
{
|
||||
shell.publish(msg);
|
||||
}
|
||||
return;
|
||||
}
|
||||
Event::Dnd(DndEvent::Offer(id, OfferEvent::Drop)) if *id == Some(my_id) => {
|
||||
log::trace!(
|
||||
|
|
@ -497,7 +493,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
shell.publish(msg);
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
Event::Dnd(DndEvent::Offer(id, OfferEvent::SelectedAction(action)))
|
||||
if *id == Some(my_id) =>
|
||||
|
|
@ -515,7 +510,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
shell.publish(msg);
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
Event::Dnd(DndEvent::Offer(id, OfferEvent::Data { data, mime_type }))
|
||||
if *id == Some(my_id) =>
|
||||
|
|
@ -555,7 +549,6 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
|
|||
return;
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -474,16 +474,14 @@ where
|
|||
match event {
|
||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||
let hovered_guard = self.hovered_option.lock().unwrap();
|
||||
if cursor.is_over(layout.bounds()) {
|
||||
if let Some(index) = *hovered_guard {
|
||||
if cursor.is_over(layout.bounds())
|
||||
&& let Some(index) = *hovered_guard {
|
||||
shell.publish((self.on_selected)(index));
|
||||
if let Some(close_on_selected) = self.close_on_selected.as_ref() {
|
||||
shell.publish(close_on_selected.clone());
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Event::Mouse(mouse::Event::CursorMoved { .. }) => {
|
||||
if let Some(cursor_position) = cursor.position_in(layout.bounds()) {
|
||||
|
|
@ -498,11 +496,10 @@ where
|
|||
let new_hovered_option = (cursor_position.y / option_height) as usize;
|
||||
let mut hovered_guard = self.hovered_option.lock().unwrap();
|
||||
|
||||
if let Some(on_option_hovered) = self.on_option_hovered {
|
||||
if *hovered_guard != Some(new_hovered_option) {
|
||||
if let Some(on_option_hovered) = self.on_option_hovered
|
||||
&& *hovered_guard != Some(new_hovered_option) {
|
||||
shell.publish(on_option_hovered(new_hovered_option));
|
||||
}
|
||||
}
|
||||
|
||||
*hovered_guard = Some(new_hovered_option);
|
||||
}
|
||||
|
|
@ -526,7 +523,6 @@ where
|
|||
shell.publish(close_on_selected.clone());
|
||||
}
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -343,13 +343,11 @@ where
|
|||
|
||||
match event {
|
||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {
|
||||
if cursor.is_over(bounds) {
|
||||
if let Some(item) = self.hovered_option.as_ref() {
|
||||
if cursor.is_over(bounds)
|
||||
&& let Some(item) = self.hovered_option.as_ref() {
|
||||
shell.publish((self.on_selected)(item.clone()));
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Event::Mouse(mouse::Event::CursorMoved { .. }) => {
|
||||
if let Some(cursor_position) = cursor.position_in(bounds) {
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ impl<'a, S: AsRef<str>, Message: 'a, Item: Clone + PartialEq + 'static>
|
|||
_viewport: &Rectangle,
|
||||
) {
|
||||
update(
|
||||
&event,
|
||||
event,
|
||||
layout,
|
||||
cursor,
|
||||
shell,
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ where
|
|||
_viewport: &Rectangle,
|
||||
) {
|
||||
update::<S, Message, AppMessage>(
|
||||
&event,
|
||||
event,
|
||||
layout,
|
||||
cursor,
|
||||
shell,
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ pub fn resolve_wrapper<'a, Message>(
|
|||
if align_items == Alignment::Center {
|
||||
let mut fill_cross = axis.cross(limits.min());
|
||||
|
||||
for (child, tree) in items.into_iter().zip(tree.iter_mut()) {
|
||||
for (child, tree) in items.iter_mut().zip(tree.iter_mut()) {
|
||||
let c_size = child.size();
|
||||
let cross_fill_factor = match axis {
|
||||
Axis::Horizontal => c_size.height,
|
||||
|
|
@ -272,7 +272,7 @@ pub fn resolve_wrapper<'a, Message>(
|
|||
cross = fill_cross;
|
||||
}
|
||||
|
||||
for (i, (child, tree)) in items.into_iter().zip(tree.iter_mut()).enumerate() {
|
||||
for (i, (child, tree)) in items.iter_mut().zip(tree.iter_mut()).enumerate() {
|
||||
let c_size = child.size();
|
||||
let fill_factor = match axis {
|
||||
Axis::Horizontal => c_size.width,
|
||||
|
|
@ -315,7 +315,7 @@ pub fn resolve_wrapper<'a, Message>(
|
|||
|
||||
let remaining = available.max(0.0);
|
||||
|
||||
for (i, (child, tree)) in items.into_iter().zip(tree.iter_mut()).enumerate() {
|
||||
for (i, (child, tree)) in items.iter_mut().zip(tree.iter_mut()).enumerate() {
|
||||
let c_size = child.size();
|
||||
let fill_factor = match axis {
|
||||
Axis::Horizontal => c_size.width,
|
||||
|
|
|
|||
|
|
@ -598,14 +598,12 @@ where
|
|||
.with_data(|d| !d.open && !d.active_root.is_empty());
|
||||
|
||||
let open = my_state.inner.with_data_mut(|state| {
|
||||
if reset {
|
||||
if let Some(popup_id) = state.popup_id.get(&self.window_id).copied() {
|
||||
if let Some(handler) = self.on_surface_action.as_ref() {
|
||||
if reset
|
||||
&& let Some(popup_id) = state.popup_id.get(&self.window_id).copied()
|
||||
&& let Some(handler) = self.on_surface_action.as_ref() {
|
||||
shell.publish((handler)(crate::surface::Action::DestroyPopup(popup_id)));
|
||||
state.reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
state.open
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1521,14 +1521,13 @@ where
|
|||
.is_some_and(|i| *i != new_index && !active_menu[*i].children.is_empty());
|
||||
|
||||
#[cfg(all(feature = "multi-window", feature = "wayland", target_os = "linux", feature = "surface-message"))]
|
||||
if matches!(WINDOWING_SYSTEM.get(), Some(WindowingSystem::Wayland)) && remove {
|
||||
if let Some(id) = state.popup_id.remove(&menu.window_id) {
|
||||
if matches!(WINDOWING_SYSTEM.get(), Some(WindowingSystem::Wayland)) && remove
|
||||
&& let Some(id) = state.popup_id.remove(&menu.window_id) {
|
||||
state.active_root.truncate(menu.depth + 1);
|
||||
shell.publish((menu.on_surface_action.as_ref().unwrap())({
|
||||
crate::surface::action::destroy_popup(id)
|
||||
}));
|
||||
}
|
||||
}
|
||||
let item = &active_menu[new_index];
|
||||
// set new index
|
||||
let old_index = last_menu_state.index.replace(new_index);
|
||||
|
|
|
|||
|
|
@ -164,8 +164,8 @@ where
|
|||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
} else if let Some(on_close) = self.on_close.as_ref() {
|
||||
if matches!(
|
||||
} else if let Some(on_close) = self.on_close.as_ref()
|
||||
&& matches!(
|
||||
event,
|
||||
Event::Mouse(mouse::Event::ButtonPressed(_))
|
||||
| Event::Touch(touch::Event::FingerPressed { .. })
|
||||
|
|
@ -173,7 +173,6 @@ where
|
|||
{
|
||||
shell.publish(on_close.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Hide cursor from background content when modal popup is active
|
||||
|
|
|
|||
|
|
@ -266,7 +266,6 @@ where
|
|||
if cursor.is_over(layout.bounds()) {
|
||||
shell.publish(self.on_click.clone());
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
|
|
|||
|
|
@ -692,11 +692,10 @@ where
|
|||
|
||||
if let Some(icon) = self.model.icon(key) {
|
||||
non_text_width += f32::from(icon.size) + f32::from(self.button_spacing);
|
||||
} else if self.model.is_active(key) {
|
||||
if let crate::theme::SegmentedButton::Control = self.style {
|
||||
} else if self.model.is_active(key)
|
||||
&& let crate::theme::SegmentedButton::Control = self.style {
|
||||
non_text_width += 16.0 + f32::from(self.button_spacing);
|
||||
}
|
||||
}
|
||||
|
||||
if self.model.is_closable(key) {
|
||||
non_text_width +=
|
||||
|
|
@ -1083,11 +1082,10 @@ where
|
|||
{
|
||||
state.drop_hint = None;
|
||||
self.emit_drop_hint(shell, state.drop_hint);
|
||||
if let Some(Some(entity)) = entity {
|
||||
if let Some(on_dnd_leave) = self.on_dnd_leave.as_ref() {
|
||||
if let Some(Some(entity)) = entity
|
||||
&& let Some(on_dnd_leave) = self.on_dnd_leave.as_ref() {
|
||||
shell.publish(on_dnd_leave(entity));
|
||||
}
|
||||
}
|
||||
log::trace!(
|
||||
target: TAB_REORDER_LOG_TARGET,
|
||||
"offer leave id={my_id:?} entity={entity:?}"
|
||||
|
|
@ -1163,11 +1161,10 @@ where
|
|||
None::<fn(_, _, _) -> Message>,
|
||||
None,
|
||||
);
|
||||
if let Some(on_dnd_leave) = self.on_dnd_leave.as_ref() {
|
||||
if let Some(Some(entity)) = entity {
|
||||
if let Some(on_dnd_leave) = self.on_dnd_leave.as_ref()
|
||||
&& let Some(Some(entity)) = entity {
|
||||
shell.publish(on_dnd_leave(entity));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DndEvent::Offer(id, OfferEvent::Drop) if Some(my_id) == *id => {
|
||||
|
|
@ -1340,8 +1337,8 @@ where
|
|||
// Emit close message if the close button is pressed.
|
||||
if let Some(on_close) = self.on_close.as_ref() {
|
||||
if over_close_button
|
||||
&& (left_button_released(&event)
|
||||
|| (touch_lifted(&event) && fingers_pressed == 1))
|
||||
&& (left_button_released(event)
|
||||
|| (touch_lifted(event) && fingers_pressed == 1))
|
||||
{
|
||||
shell.publish(on_close(key));
|
||||
shell.capture_event();
|
||||
|
|
@ -1395,14 +1392,14 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
if is_lifted(&event) {
|
||||
if is_lifted(event) {
|
||||
state.unfocus();
|
||||
}
|
||||
|
||||
if let Some(on_activate) = self.on_activate.as_ref() {
|
||||
if is_pressed(event) {
|
||||
state.pressed_item = Some(Item::Tab(key));
|
||||
} else if is_lifted(&event) && self.button_is_pressed(state, key) {
|
||||
} else if is_lifted(event) && self.button_is_pressed(state, key) {
|
||||
shell.publish(on_activate(key));
|
||||
state.set_focused();
|
||||
state.focused_item = Item::Tab(key);
|
||||
|
|
@ -1442,8 +1439,8 @@ where
|
|||
// Present a context menu on a right click event.
|
||||
if self.context_menu.is_some()
|
||||
&& let Some(on_context) = self.on_context.as_ref()
|
||||
&& (right_button_released(&event)
|
||||
|| (touch_lifted(&event) && fingers_pressed == 2))
|
||||
&& (right_button_released(event)
|
||||
|| (touch_lifted(event) && fingers_pressed == 2))
|
||||
{
|
||||
state.show_context = Some(key);
|
||||
state.context_cursor = cursor_position.position().unwrap_or_default();
|
||||
|
|
@ -1539,12 +1536,12 @@ where
|
|||
}
|
||||
if state.is_focused() {
|
||||
// Unfocus on clicks outside of the boundaries of the segmented button.
|
||||
if is_pressed(&event) {
|
||||
if is_pressed(event) {
|
||||
state.unfocus();
|
||||
state.pressed_item = None;
|
||||
return;
|
||||
}
|
||||
} else if is_lifted(&event) {
|
||||
} else if is_lifted(event) {
|
||||
state.pressed_item = None;
|
||||
}
|
||||
}
|
||||
|
|
@ -2163,8 +2160,8 @@ where
|
|||
);
|
||||
}
|
||||
|
||||
if show_drop_hint_marker {
|
||||
if matches!(
|
||||
if show_drop_hint_marker
|
||||
&& matches!(
|
||||
drop_hint_marker,
|
||||
Some(DropHint {
|
||||
entity,
|
||||
|
|
@ -2179,7 +2176,6 @@ where
|
|||
appearance.active.text_color,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
nth += 1;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -88,15 +88,14 @@ where
|
|||
|
||||
let mut sort_state = 0;
|
||||
|
||||
if let Some(sort) = val.model.sort {
|
||||
if sort.0 == category {
|
||||
if let Some(sort) = val.model.sort
|
||||
&& sort.0 == category {
|
||||
if sort.1 {
|
||||
sort_state = 1;
|
||||
} else {
|
||||
sort_state = 2;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// Build the category header
|
||||
widget::row::with_capacity(2)
|
||||
|
|
|
|||
|
|
@ -670,18 +670,15 @@ where
|
|||
let old_value = Value::new(&old_value);
|
||||
if state.is_focused()
|
||||
&& let cursor::State::Index(index) = state.cursor.state(&old_value)
|
||||
{
|
||||
if index == old_value.len() {
|
||||
&& index == old_value.len() {
|
||||
state.cursor.move_to(self.value.len());
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(f) = state.is_focused.as_ref().filter(|f| f.focused) {
|
||||
if f.updated_at != LAST_FOCUS_UPDATE.with(|f| f.get()) {
|
||||
if let Some(f) = state.is_focused.as_ref().filter(|f| f.focused)
|
||||
&& f.updated_at != LAST_FOCUS_UPDATE.with(|f| f.get()) {
|
||||
state.unfocus();
|
||||
state.emit_unfocus = true;
|
||||
}
|
||||
}
|
||||
|
||||
if self.is_editable_variant {
|
||||
if !state.is_focused() {
|
||||
|
|
@ -895,8 +892,8 @@ where
|
|||
let line_height = self.line_height;
|
||||
|
||||
// Disables editing of the editable variant when clicking outside of, or for tab focus changes.
|
||||
if self.is_editable_variant {
|
||||
if let Some(ref on_edit) = self.on_toggle_edit {
|
||||
if self.is_editable_variant
|
||||
&& let Some(ref on_edit) = self.on_toggle_edit {
|
||||
let state = tree.state.downcast_mut::<State>();
|
||||
if !state.is_read_only && state.is_focused.is_some_and(|f| !f.focused) {
|
||||
state.is_read_only = true;
|
||||
|
|
@ -908,7 +905,6 @@ where
|
|||
shell.publish((on_edit)(f.focused));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Calculates the layout of the trailing icon button element.
|
||||
if !tree.children.is_empty() {
|
||||
|
|
@ -919,9 +915,9 @@ where
|
|||
trailing_icon_layout = Some(text_layout.children().last().unwrap());
|
||||
|
||||
// Enable custom buttons defined on the trailing icon position to be handled.
|
||||
if !self.is_editable_variant {
|
||||
if let Some(trailing_layout) = trailing_icon_layout {
|
||||
let _res = trailing_icon.as_widget_mut().update(
|
||||
if !self.is_editable_variant
|
||||
&& let Some(trailing_layout) = trailing_icon_layout {
|
||||
trailing_icon.as_widget_mut().update(
|
||||
tree,
|
||||
event,
|
||||
trailing_layout,
|
||||
|
|
@ -936,18 +932,16 @@ where
|
|||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let state = tree.state.downcast_mut::<State>();
|
||||
|
||||
if let Some(on_unfocus) = self.on_unfocus.as_ref() {
|
||||
if state.emit_unfocus {
|
||||
if let Some(on_unfocus) = self.on_unfocus.as_ref()
|
||||
&& state.emit_unfocus {
|
||||
state.emit_unfocus = false;
|
||||
shell.publish(on_unfocus.clone());
|
||||
}
|
||||
}
|
||||
|
||||
let dnd_id = self.dnd_id();
|
||||
let id = Widget::id(self);
|
||||
|
|
@ -1656,11 +1650,10 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
if matches!(state.dragging_state, None | Some(DraggingState::Selection))
|
||||
&& (!state.is_focused() || (is_editable_variant && state.is_read_only))
|
||||
{
|
||||
if !state.is_focused() {
|
||||
if let Some(on_focus) = on_focus {
|
||||
if !state.is_focused()
|
||||
&& let Some(on_focus) = on_focus {
|
||||
shell.publish(on_focus.clone());
|
||||
}
|
||||
}
|
||||
|
||||
if state.is_read_only {
|
||||
state.is_read_only = false;
|
||||
|
|
@ -1685,7 +1678,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
state.last_click = Some(click);
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
} else {
|
||||
state.unfocus();
|
||||
|
||||
|
|
@ -1721,7 +1713,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
if cursor.is_over(layout.bounds()) {
|
||||
shell.capture_event();
|
||||
}
|
||||
return;
|
||||
}
|
||||
Event::Mouse(mouse::Event::CursorMoved { position })
|
||||
| Event::Touch(touch::Event::FingerMoved { position, .. }) => {
|
||||
|
|
@ -1804,7 +1795,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
}
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
Event::Keyboard(keyboard::Event::KeyPressed {
|
||||
|
|
@ -1829,14 +1819,13 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
if state.keyboard_modifiers.command() {
|
||||
match key.to_latin(*physical_key) {
|
||||
Some('c') => {
|
||||
if !is_secure {
|
||||
if let Some((start, end)) = state.cursor.selection(value) {
|
||||
if !is_secure
|
||||
&& let Some((start, end)) = state.cursor.selection(value) {
|
||||
clipboard.write(
|
||||
iced_core::clipboard::Kind::Standard,
|
||||
value.select(start, end).to_string(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
// XXX if we want to allow cutting of secure text, we need to
|
||||
// update the cache and decide which value to cut
|
||||
|
|
@ -2091,7 +2080,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
}
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
Event::Keyboard(keyboard::Event::KeyReleased { key, .. }) => {
|
||||
|
|
@ -2111,7 +2099,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
}
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
Event::Keyboard(keyboard::Event::ModifiersChanged(modifiers)) => {
|
||||
|
|
@ -2127,7 +2114,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
state.preedit = matches!(event, input_method::Event::Opened)
|
||||
.then(input_method::Preedit::new);
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
input_method::Event::Preedit(content, selection) => {
|
||||
if state.is_focused() {
|
||||
|
|
@ -2137,7 +2123,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
text_size: Some(size.into()),
|
||||
});
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
input_method::Event::Commit(text) => {
|
||||
|
|
@ -2155,7 +2140,7 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
LAST_FOCUS_UPDATE.with(|x| x.set(focus.updated_at));
|
||||
|
||||
let mut editor = Editor::new(unsecured_value, &mut state.cursor);
|
||||
editor.paste(Value::new(&text));
|
||||
editor.paste(Value::new(text));
|
||||
|
||||
let contents = editor.contents();
|
||||
let unsecured_value = Value::new(&contents);
|
||||
|
|
@ -2175,7 +2160,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
|
||||
update_cache(state, &value);
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2205,7 +2189,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
// TODO: restore value in text input
|
||||
state.dragging_state = None;
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
#[cfg(all(feature = "wayland", target_os = "linux"))]
|
||||
|
|
@ -2255,7 +2238,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
state.cursor.set_affinity(affinity);
|
||||
state.cursor.move_to(position);
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
#[cfg(all(feature = "wayland", target_os = "linux"))]
|
||||
|
|
@ -2284,7 +2266,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
state.cursor.set_affinity(affinity);
|
||||
state.cursor.move_to(position);
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
#[cfg(all(feature = "wayland", target_os = "linux"))]
|
||||
Event::Dnd(DndEvent::Offer(rectangle, OfferEvent::Drop)) if *rectangle == Some(dnd_id) => {
|
||||
|
|
@ -2301,8 +2282,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
};
|
||||
state.dnd_offer = DndOfferState::Dropped;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
#[cfg(all(feature = "wayland", target_os = "linux"))]
|
||||
Event::Dnd(DndEvent::Offer(id, OfferEvent::LeaveDestination)) if Some(dnd_id) != *id => {}
|
||||
|
|
@ -2322,7 +2301,6 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
}
|
||||
};
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
#[cfg(all(feature = "wayland", target_os = "linux"))]
|
||||
Event::Dnd(DndEvent::Offer(rectangle, OfferEvent::Data { data, mime_type }))
|
||||
|
|
@ -2359,9 +2337,7 @@ pub fn update<'a, Message: Clone + 'static>(
|
|||
};
|
||||
update_cache(state, &value);
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,9 +45,7 @@ impl Value {
|
|||
pub fn previous_start_of_word(&self, index: usize) -> usize {
|
||||
let previous_string = &self.graphemes[..index.min(self.graphemes.len())].concat();
|
||||
|
||||
UnicodeSegmentation::split_word_bound_indices(previous_string as &str)
|
||||
.filter(|(_, word)| !word.trim_start().is_empty())
|
||||
.next_back()
|
||||
UnicodeSegmentation::split_word_bound_indices(previous_string as &str).rfind(|(_, word)| !word.trim_start().is_empty())
|
||||
.map_or(0, |(i, previous_word)| {
|
||||
index
|
||||
- UnicodeSegmentation::graphemes(previous_word, true).count()
|
||||
|
|
|
|||
|
|
@ -182,7 +182,8 @@ impl<'a, Message> Widget<Message, crate::Theme, crate::Renderer> for Toggler<'a,
|
|||
) -> layout::Node {
|
||||
let limits = limits.width(self.width);
|
||||
|
||||
let res = next_to_each_other(
|
||||
|
||||
next_to_each_other(
|
||||
&limits,
|
||||
self.spacing,
|
||||
|limits| {
|
||||
|
|
@ -221,8 +222,7 @@ impl<'a, Message> Widget<Message, crate::Theme, crate::Renderer> for Toggler<'a,
|
|||
}
|
||||
},
|
||||
|_| layout::Node::new(Size::new(48., 24.)),
|
||||
);
|
||||
res
|
||||
)
|
||||
}
|
||||
|
||||
fn update(
|
||||
|
|
|
|||
|
|
@ -456,7 +456,6 @@ pub fn update<'a, Message: Clone + 'static, TopLevelMessage: Clone + 'static>(
|
|||
shell.publish(on_leave.clone());
|
||||
|
||||
shell.capture_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -484,8 +483,8 @@ pub fn update<'a, Message: Clone + 'static, TopLevelMessage: Clone + 'static>(
|
|||
}
|
||||
} else {
|
||||
*guard = cursor.is_over(bounds);
|
||||
if *guard {
|
||||
if let Some(settings) = settings {
|
||||
if *guard
|
||||
&& let Some(settings) = settings {
|
||||
if let Some(delay) = delay {
|
||||
let s = settings.clone();
|
||||
let view = view.clone();
|
||||
|
|
@ -569,7 +568,6 @@ pub fn update<'a, Message: Clone + 'static, TopLevelMessage: Clone + 'static>(
|
|||
shell.publish((on_surface_action)(sm));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue