summaryrefslogtreecommitdiffstats
path: root/native/src/widget/scrollable.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2019-11-14 06:46:50 +0100
committerLibravatar GitHub <noreply@github.com>2019-11-14 06:46:50 +0100
commitbc8d347736ec997ec0e0c401289e2bc09e212b8a (patch)
treeb98798c09a3aa914b7d0869fba0cfd3efff7754f /native/src/widget/scrollable.rs
parent839e039dbf2fb89dcb8c141503740777d2af2eb3 (diff)
parent73f3c900071f950ea914652ca3f0002c1e173f61 (diff)
downloadiced-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/scrollable.rs')
-rw-r--r--native/src/widget/scrollable.rs38
1 files changed, 19 insertions, 19 deletions
diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs
index de4c749c..091dac47 100644
--- a/native/src/widget/scrollable.rs
+++ b/native/src/widget/scrollable.rs
@@ -1,11 +1,13 @@
use crate::{
column,
input::{mouse, ButtonState},
- Element, Event, Hasher, Layout, Node, Point, Rectangle, Style, Widget,
+ layout, Element, Event, Hasher, Layout, Length, Point, Rectangle, Size,
+ Widget,
};
pub use iced_core::scrollable::State;
+use std::f32;
use std::hash::Hash;
/// A scrollable [`Column`].
@@ -19,26 +21,25 @@ impl<'a, Message, Renderer> Widget<Message, Renderer>
where
Renderer: self::Renderer + column::Renderer,
{
- fn node(&self, renderer: &Renderer) -> Node {
- let mut content = self.content.node(renderer);
-
- {
- let mut style = content.0.style();
- style.flex_shrink = 0.0;
-
- content.0.set_style(style);
- }
-
- let mut style = Style::default()
- .width(self.content.width)
- .max_width(self.content.max_width)
- .height(self.height)
+ fn layout(
+ &self,
+ renderer: &Renderer,
+ limits: &layout::Limits,
+ ) -> layout::Node {
+ let limits = limits
.max_height(self.max_height)
- .align_self(self.align_self);
+ .width(Length::Fill)
+ .height(self.height);
+
+ let child_limits = layout::Limits::new(
+ Size::new(limits.min().width, 0.0),
+ Size::new(limits.max().width, f32::INFINITY),
+ );
- style.0.flex_direction = stretch::style::FlexDirection::Column;
+ let content = self.content.layout(renderer, &child_limits);
+ let size = limits.resolve(content.size());
- Node::with_children(style, vec![content])
+ layout::Node::with_children(size, vec![content])
}
fn on_event(
@@ -167,7 +168,6 @@ where
self.height.hash(state);
self.max_height.hash(state);
- self.align_self.hash(state);
self.content.hash_layout(state)
}