diff options
author | 2019-11-21 13:47:20 +0100 | |
---|---|---|
committer | 2019-11-21 13:47:20 +0100 | |
commit | 65eb218d3d7ba52b2869a586a1480eeb3c8f84e4 (patch) | |
tree | 644f27f40f2f4b8ee1abe7743aac426297503eea /wgpu/src/renderer/widget/text_input.rs | |
parent | d3553adf278e5b616fbd885f321faa83a4d24b56 (diff) | |
download | iced-65eb218d3d7ba52b2869a586a1480eeb3c8f84e4.tar.gz iced-65eb218d3d7ba52b2869a586a1480eeb3c8f84e4.tar.bz2 iced-65eb218d3d7ba52b2869a586a1480eeb3c8f84e4.zip |
Move widgets from `core` to `native` and `web`
Also made fields private and improved `Renderer` traits.
Diffstat (limited to 'wgpu/src/renderer/widget/text_input.rs')
-rw-r--r-- | wgpu/src/renderer/widget/text_input.rs | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/wgpu/src/renderer/widget/text_input.rs b/wgpu/src/renderer/widget/text_input.rs index 855e945c..9ed3b415 100644 --- a/wgpu/src/renderer/widget/text_input.rs +++ b/wgpu/src/renderer/widget/text_input.rs @@ -1,8 +1,8 @@ use crate::{Primitive, Renderer}; use iced_native::{ - text::HorizontalAlignment, text::VerticalAlignment, text_input, Background, - Color, Font, MouseCursor, Point, Rectangle, Size, TextInput, Vector, + text_input, Background, Color, Font, HorizontalAlignment, MouseCursor, + Point, Rectangle, Size, Vector, VerticalAlignment, }; use std::f32; @@ -12,19 +12,22 @@ impl text_input::Renderer for Renderer { 20 } - fn draw<Message>( + fn draw( &mut self, - text_input: &TextInput<Message>, bounds: Rectangle, text_bounds: Rectangle, cursor_position: Point, + size: u16, + placeholder: &str, + value: &text_input::Value, + state: &text_input::State, ) -> Self::Output { let is_mouse_over = bounds.contains(cursor_position); let border = Primitive::Quad { bounds, background: Background::Color( - if is_mouse_over || text_input.state.is_focused { + if is_mouse_over || state.is_focused() { [0.5, 0.5, 0.5] } else { [0.7, 0.7, 0.7] @@ -45,12 +48,12 @@ impl text_input::Renderer for Renderer { border_radius: 5, }; - let size = f32::from(text_input.size.unwrap_or(self.default_size())); - let text = text_input.value.to_string(); + let size = f32::from(size); + let text = value.to_string(); - let value = Primitive::Text { + let text_value = Primitive::Text { content: if text.is_empty() { - text_input.placeholder.clone() + placeholder.to_string() } else { text.clone() }, @@ -70,14 +73,12 @@ impl text_input::Renderer for Renderer { vertical_alignment: VerticalAlignment::Center, }; - let (contents_primitive, offset) = if text_input.state.is_focused { - let text_before_cursor = &text_input - .value - .until(text_input.state.cursor_position(&text_input.value)) - .to_string(); + let (contents_primitive, offset) = if state.is_focused() { + let text_before_cursor = + value.until(state.cursor_position(value)).to_string(); let (mut text_value_width, _) = self.text_pipeline.measure( - text_before_cursor, + &text_before_cursor, size, Font::Default, Size::new(f32::INFINITY, text_bounds.height), @@ -104,7 +105,7 @@ impl text_input::Renderer for Renderer { ( Primitive::Group { - primitives: vec![value, cursor], + primitives: vec![text_value, cursor], }, Vector::new( ((text_value_width + 5.0) - text_bounds.width).max(0.0) @@ -113,7 +114,7 @@ impl text_input::Renderer for Renderer { ), ) } else { - (value, Vector::new(0, 0)) + (text_value, Vector::new(0, 0)) }; let contents = Primitive::Clip { |