diff options
author | 2019-11-14 06:46:50 +0100 | |
---|---|---|
committer | 2019-11-14 06:46:50 +0100 | |
commit | bc8d347736ec997ec0e0c401289e2bc09e212b8a (patch) | |
tree | b98798c09a3aa914b7d0869fba0cfd3efff7754f /native/src/widget/text_input.rs | |
parent | 839e039dbf2fb89dcb8c141503740777d2af2eb3 (diff) | |
parent | 73f3c900071f950ea914652ca3f0002c1e173f61 (diff) | |
download | iced-bc8d347736ec997ec0e0c401289e2bc09e212b8a.tar.gz iced-bc8d347736ec997ec0e0c401289e2bc09e212b8a.tar.bz2 iced-bc8d347736ec997ec0e0c401289e2bc09e212b8a.zip |
Merge pull request #52 from hecrj/custom-layout-engine
Custom layout engine
Diffstat (limited to 'native/src/widget/text_input.rs')
-rw-r--r-- | native/src/widget/text_input.rs | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs index d9837b61..7e81e257 100644 --- a/native/src/widget/text_input.rs +++ b/native/src/widget/text_input.rs @@ -1,6 +1,6 @@ use crate::{ input::{keyboard, mouse, ButtonState}, - Element, Event, Hasher, Layout, Length, Node, Point, Rectangle, Style, + layout, Element, Event, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; @@ -11,19 +11,24 @@ where Renderer: self::Renderer, Message: Clone + std::fmt::Debug, { - fn node(&self, renderer: &Renderer) -> Node { - let text_bounds = - Node::new(Style::default().width(Length::Fill).height( - Length::Units(self.size.unwrap_or(renderer.default_size())), - )); - - Node::with_children( - Style::default() - .width(self.width) - .max_width(self.width) - .padding(self.padding), - vec![text_bounds], - ) + fn layout( + &self, + renderer: &Renderer, + limits: &layout::Limits, + ) -> layout::Node { + let padding = self.padding as f32; + let text_size = self.size.unwrap_or(renderer.default_size()); + + let limits = limits + .pad(padding) + .width(self.width) + .height(Length::Units(text_size)); + + let mut text = layout::Node::new(limits.resolve(Size::ZERO)); + text.bounds.x = padding; + text.bounds.y = padding; + + layout::Node::with_children(text.size().pad(padding), vec![text]) } fn on_event( |