diff options
Diffstat (limited to 'native/src/widget')
-rw-r--r-- | native/src/widget/button.rs | 8 | ||||
-rw-r--r-- | native/src/widget/checkbox.rs | 6 | ||||
-rw-r--r-- | native/src/widget/column.rs | 6 | ||||
-rw-r--r-- | native/src/widget/container.rs | 6 | ||||
-rw-r--r-- | native/src/widget/image/viewer.rs | 6 | ||||
-rw-r--r-- | native/src/widget/pane_grid.rs | 30 | ||||
-rw-r--r-- | native/src/widget/pane_grid/content.rs | 10 | ||||
-rw-r--r-- | native/src/widget/pane_grid/title_bar.rs | 8 | ||||
-rw-r--r-- | native/src/widget/pick_list.rs | 8 | ||||
-rw-r--r-- | native/src/widget/radio.rs | 6 | ||||
-rw-r--r-- | native/src/widget/row.rs | 6 | ||||
-rw-r--r-- | native/src/widget/scrollable.rs | 18 | ||||
-rw-r--r-- | native/src/widget/slider.rs | 8 | ||||
-rw-r--r-- | native/src/widget/text_input.rs | 16 | ||||
-rw-r--r-- | native/src/widget/toggler.rs | 6 | ||||
-rw-r--r-- | native/src/widget/tooltip.rs | 8 |
16 files changed, 77 insertions, 79 deletions
diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index 1d785f35..686289e4 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -9,7 +9,7 @@ use crate::renderer; use crate::touch; use crate::{ Background, Clipboard, Color, Element, Hasher, Layout, Length, Padding, - Point, Rectangle, Vector, Widget, + Point, Rectangle, Shell, Vector, Widget, }; use std::hash::Hash; @@ -197,7 +197,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { if let event::Status::Captured = self.content.on_event( event.clone(), @@ -205,7 +205,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) { return event::Status::Captured; } @@ -232,7 +232,7 @@ where self.state.is_pressed = false; if bounds.contains(cursor_position) { - messages.push(on_press); + shell.publish(on_press); } return event::Status::Captured; diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index 81611426..2af2d60c 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -11,7 +11,7 @@ use crate::touch; use crate::widget::{self, Row, Text}; use crate::{ Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point, - Rectangle, Widget, + Rectangle, Shell, Widget, }; pub use iced_style::checkbox::{Style, StyleSheet}; @@ -171,7 +171,7 @@ where cursor_position: Point, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) @@ -179,7 +179,7 @@ where let mouse_over = layout.bounds().contains(cursor_position); if mouse_over { - messages.push((self.on_toggle)(!self.is_checked)); + shell.publish((self.on_toggle)(!self.is_checked)); return event::Status::Captured; } diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 0d4d6fa7..4c43c8c8 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -8,7 +8,7 @@ use crate::overlay; use crate::renderer; use crate::{ Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point, - Rectangle, Widget, + Rectangle, Shell, Widget, }; use std::u32; @@ -146,7 +146,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { self.children .iter_mut() @@ -158,7 +158,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) }) .fold(event::Status::Ignored, event::Status::merge) diff --git a/native/src/widget/container.rs b/native/src/widget/container.rs index 596af7fd..756d9d1b 100644 --- a/native/src/widget/container.rs +++ b/native/src/widget/container.rs @@ -9,7 +9,7 @@ use crate::overlay; use crate::renderer; use crate::{ Background, Clipboard, Color, Element, Hasher, Layout, Length, Padding, - Point, Rectangle, Widget, + Point, Rectangle, Shell, Widget, }; use std::u32; @@ -167,7 +167,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { self.content.widget.on_event( event, @@ -175,7 +175,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) } diff --git a/native/src/widget/image/viewer.rs b/native/src/widget/image/viewer.rs index 95e5c6e4..0fc766c3 100644 --- a/native/src/widget/image/viewer.rs +++ b/native/src/widget/image/viewer.rs @@ -5,8 +5,8 @@ use crate::layout; use crate::mouse; use crate::renderer; use crate::{ - Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector, - Widget, + Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Shell, Size, + Vector, Widget, }; use std::hash::Hash; @@ -169,7 +169,7 @@ where cursor_position: Point, renderer: &Renderer, _clipboard: &mut dyn Clipboard, - _messages: &mut Vec<Message>, + _shell: &mut Shell<'_, Message>, ) -> event::Status { let bounds = layout.bounds(); let is_mouse_over = bounds.contains(cursor_position); diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 3637822b..24b87eed 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -34,8 +34,8 @@ use crate::overlay; use crate::renderer; use crate::touch; use crate::{ - Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, - Vector, Widget, + Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Shell, + Size, Vector, Widget, }; pub use iced_style::pane_grid::{Line, StyleSheet}; @@ -205,7 +205,7 @@ where &mut self, layout: Layout<'_>, cursor_position: Point, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) { let mut clicked_region = self.elements.iter().zip(layout.children()).filter( @@ -214,7 +214,7 @@ where if let Some(((pane, content), layout)) = clicked_region.next() { if let Some(on_click) = &self.on_click { - messages.push(on_click(*pane)); + shell.publish(on_click(*pane)); } if let Some(on_drag) = &self.on_drag { @@ -226,7 +226,7 @@ where self.state.pick_pane(pane, origin); - messages.push(on_drag(DragEvent::Picked { pane: *pane })); + shell.publish(on_drag(DragEvent::Picked { pane: *pane })); } } } @@ -236,7 +236,7 @@ where &mut self, layout: Layout<'_>, cursor_position: Point, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { if let Some((_, on_resize)) = &self.on_resize { if let Some((split, _)) = self.state.picked_split() { @@ -263,7 +263,7 @@ where } }; - messages.push(on_resize(ResizeEvent { split, ratio })); + shell.publish(on_resize(ResizeEvent { split, ratio })); return event::Status::Captured; } @@ -362,7 +362,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { let mut event_status = event::Status::Ignored; @@ -395,15 +395,11 @@ where if let Some((split, axis, _)) = clicked_split { self.state.pick_split(&split, axis); } else { - self.click_pane( - layout, - cursor_position, - messages, - ); + self.click_pane(layout, cursor_position, shell); } } None => { - self.click_pane(layout, cursor_position, messages); + self.click_pane(layout, cursor_position, shell); } } } @@ -430,7 +426,7 @@ where _ => DragEvent::Canceled { pane }, }; - messages.push(on_drag(event)); + shell.publish(on_drag(event)); } self.state.idle(); @@ -445,7 +441,7 @@ where Event::Mouse(mouse::Event::CursorMoved { .. }) | Event::Touch(touch::Event::FingerMoved { .. }) => { event_status = - self.trigger_resize(layout, cursor_position, messages); + self.trigger_resize(layout, cursor_position, shell); } _ => {} } @@ -464,7 +460,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, is_picked, ) }) diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index c44506dd..533827b7 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -5,7 +5,9 @@ use crate::overlay; use crate::renderer; use crate::widget::container; use crate::widget::pane_grid::TitleBar; -use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size}; +use crate::{ + Clipboard, Element, Hasher, Layout, Point, Rectangle, Shell, Size, +}; /// The content of a [`Pane`]. /// @@ -160,7 +162,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, is_picked: bool, ) -> event::Status { let mut event_status = event::Status::Ignored; @@ -174,7 +176,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ); children.next().unwrap() @@ -191,7 +193,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) }; diff --git a/native/src/widget/pane_grid/title_bar.rs b/native/src/widget/pane_grid/title_bar.rs index 070cf404..353e1ce9 100644 --- a/native/src/widget/pane_grid/title_bar.rs +++ b/native/src/widget/pane_grid/title_bar.rs @@ -5,7 +5,7 @@ use crate::overlay; use crate::renderer; use crate::widget::container; use crate::{ - Clipboard, Element, Hasher, Layout, Padding, Point, Rectangle, Size, + Clipboard, Element, Hasher, Layout, Padding, Point, Rectangle, Shell, Size, }; /// The title bar of a [`Pane`]. @@ -218,7 +218,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { let mut children = layout.children(); let padded = children.next().unwrap(); @@ -235,7 +235,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) } else { event::Status::Ignored @@ -247,7 +247,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ); control_status.merge(title_status) diff --git a/native/src/widget/pick_list.rs b/native/src/widget/pick_list.rs index 9d1a86ec..cb781a89 100644 --- a/native/src/widget/pick_list.rs +++ b/native/src/widget/pick_list.rs @@ -11,7 +11,7 @@ use crate::text::{self, Text}; use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, - Size, Widget, + Shell, Size, Widget, }; use std::borrow::Cow; @@ -245,7 +245,7 @@ where cursor_position: Point, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) @@ -271,7 +271,7 @@ where }; if let Some(last_selection) = self.last_selection.take() { - messages.push((self.on_selected)(last_selection)); + shell.publish((self.on_selected)(last_selection)); *self.is_open = false; @@ -312,7 +312,7 @@ where }; if let Some(next_option) = next_option { - messages.push((self.on_selected)(next_option.clone())); + shell.publish((self.on_selected)(next_option.clone())); } event::Status::Captured diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index 86ad4c4e..523773bd 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -11,7 +11,7 @@ use crate::touch; use crate::widget::{self, Row, Text}; use crate::{ Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point, - Rectangle, Widget, + Rectangle, Shell, Widget, }; pub use iced_style::radio::{Style, StyleSheet}; @@ -187,13 +187,13 @@ where cursor_position: Point, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) | Event::Touch(touch::Event::FingerPressed { .. }) => { if layout.bounds().contains(cursor_position) { - messages.push(self.on_click.clone()); + shell.publish(self.on_click.clone()); return event::Status::Captured; } diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index 6fe3284b..a0174f79 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -6,7 +6,7 @@ use crate::overlay; use crate::renderer; use crate::{ Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point, - Rectangle, Widget, + Rectangle, Shell, Widget, }; use std::hash::Hash; @@ -145,7 +145,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { self.children .iter_mut() @@ -157,7 +157,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) }) .fold(event::Status::Ignored, event::Status::merge) diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 2bf2ea5e..fac8af9e 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -8,7 +8,7 @@ use crate::touch; use crate::widget::Column; use crate::{ Alignment, Background, Clipboard, Color, Element, Hasher, Layout, Length, - Padding, Point, Rectangle, Size, Vector, Widget, + Padding, Point, Rectangle, Shell, Size, Vector, Widget, }; use std::{f32, hash::Hash, u32}; @@ -144,14 +144,14 @@ impl<'a, Message, Renderer: crate::Renderer> Scrollable<'a, Message, Renderer> { &self, bounds: Rectangle, content_bounds: Rectangle, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) { if content_bounds.height <= bounds.height { return; } if let Some(on_scroll) = &self.on_scroll { - messages.push(on_scroll( + shell.publish(on_scroll( self.state.offset.absolute(bounds, content_bounds) / (content_bounds.height - bounds.height), )); @@ -251,7 +251,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { let bounds = layout.bounds(); let is_mouse_over = bounds.contains(cursor_position); @@ -286,7 +286,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) }; @@ -307,7 +307,7 @@ where } } - self.notify_on_scroll(bounds, content_bounds, messages); + self.notify_on_scroll(bounds, content_bounds, shell); return event::Status::Captured; } @@ -336,7 +336,7 @@ where self.notify_on_scroll( bounds, content_bounds, - messages, + shell, ); } } @@ -377,7 +377,7 @@ where content_bounds, ); - self.notify_on_scroll(bounds, content_bounds, messages); + self.notify_on_scroll(bounds, content_bounds, shell); return event::Status::Captured; } @@ -409,7 +409,7 @@ where self.notify_on_scroll( bounds, content_bounds, - messages, + shell, ); return event::Status::Captured; diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs index 3ce53f6c..65632a5c 100644 --- a/native/src/widget/slider.rs +++ b/native/src/widget/slider.rs @@ -8,7 +8,7 @@ use crate::renderer; use crate::touch; use crate::{ Background, Clipboard, Color, Element, Hasher, Layout, Length, Point, - Rectangle, Size, Widget, + Rectangle, Shell, Size, Widget, }; use std::hash::Hash; @@ -191,7 +191,7 @@ where cursor_position: Point, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { let is_dragging = self.state.is_dragging; @@ -220,7 +220,7 @@ where }; if (self.value.into() - new_value.into()).abs() > f64::EPSILON { - messages.push((self.on_change)(new_value)); + shell.publish((self.on_change)(new_value)); self.value = new_value; } @@ -241,7 +241,7 @@ where | Event::Touch(touch::Event::FingerLost { .. }) => { if is_dragging { if let Some(on_release) = self.on_release.clone() { - messages.push(on_release); + shell.publish(on_release); } self.state.is_dragging = false; diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs index 40c6c573..5e1726db 100644 --- a/native/src/widget/text_input.rs +++ b/native/src/widget/text_input.rs @@ -21,7 +21,7 @@ use crate::text::{self, Text}; use crate::touch; use crate::{ Clipboard, Color, Element, Hasher, Layout, Length, Padding, Point, - Rectangle, Size, Vector, Widget, + Rectangle, Shell, Size, Vector, Widget, }; use std::u32; @@ -384,7 +384,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) @@ -509,7 +509,7 @@ where editor.insert(c); let message = (self.on_change)(editor.contents()); - messages.push(message); + shell.publish(message); return event::Status::Captured; } @@ -521,7 +521,7 @@ where match key_code { keyboard::KeyCode::Enter => { if let Some(on_submit) = self.on_submit.clone() { - messages.push(on_submit); + shell.publish(on_submit); } } keyboard::KeyCode::Backspace => { @@ -551,7 +551,7 @@ where editor.backspace(); let message = (self.on_change)(editor.contents()); - messages.push(message); + shell.publish(message); } keyboard::KeyCode::Delete => { if platform::is_jump_modifier_pressed(modifiers) @@ -582,7 +582,7 @@ where editor.delete(); let message = (self.on_change)(editor.contents()); - messages.push(message); + shell.publish(message); } keyboard::KeyCode::Left => { if platform::is_jump_modifier_pressed(modifiers) @@ -674,7 +674,7 @@ where editor.delete(); let message = (self.on_change)(editor.contents()); - messages.push(message); + shell.publish(message); } keyboard::KeyCode::V => { if self.state.keyboard_modifiers.command() { @@ -700,7 +700,7 @@ where editor.paste(content.clone()); let message = (self.on_change)(editor.contents()); - messages.push(message); + shell.publish(message); self.state.is_pasting = Some(content); } else { diff --git a/native/src/widget/toggler.rs b/native/src/widget/toggler.rs index 2dcc3ffe..6cecc7e1 100644 --- a/native/src/widget/toggler.rs +++ b/native/src/widget/toggler.rs @@ -10,7 +10,7 @@ use crate::text; use crate::widget::{Row, Text}; use crate::{ Alignment, Clipboard, Element, Event, Hasher, Layout, Length, Point, - Rectangle, Widget, + Rectangle, Shell, Widget, }; pub use iced_style::toggler::{Style, StyleSheet}; @@ -173,14 +173,14 @@ where cursor_position: Point, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => { let mouse_over = layout.bounds().contains(cursor_position); if mouse_over { - messages.push((self.on_toggle)(!self.is_active)); + shell.publish((self.on_toggle)(!self.is_active)); event::Status::Captured } else { diff --git a/native/src/widget/tooltip.rs b/native/src/widget/tooltip.rs index c35005e0..79a57824 100644 --- a/native/src/widget/tooltip.rs +++ b/native/src/widget/tooltip.rs @@ -11,8 +11,8 @@ use crate::text; use crate::widget::container; use crate::widget::text::Text; use crate::{ - Clipboard, Element, Event, Hasher, Layout, Length, Padding, Point, Size, - Vector, Widget, + Clipboard, Element, Event, Hasher, Layout, Length, Padding, Point, Shell, + Size, Vector, Widget, }; /// An element to display a widget over another. @@ -130,7 +130,7 @@ where cursor_position: Point, renderer: &Renderer, clipboard: &mut dyn Clipboard, - messages: &mut Vec<Message>, + shell: &mut Shell<'_, Message>, ) -> event::Status { self.content.widget.on_event( event, @@ -138,7 +138,7 @@ where cursor_position, renderer, clipboard, - messages, + shell, ) } |