summaryrefslogtreecommitdiffstats
path: root/native/src/user_interface.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-10 01:55:32 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-10 01:55:32 +0100
commit2303111e09d806ef2a652bddc2b73be6dccf6ae2 (patch)
treeba57c5a2fe67d8a58d4f9b32c2b32fee32932f06 /native/src/user_interface.rs
parent839e039dbf2fb89dcb8c141503740777d2af2eb3 (diff)
downloadiced-2303111e09d806ef2a652bddc2b73be6dccf6ae2.tar.gz
iced-2303111e09d806ef2a652bddc2b73be6dccf6ae2.tar.bz2
iced-2303111e09d806ef2a652bddc2b73be6dccf6ae2.zip
Draft new layout API
Diffstat (limited to 'native/src/user_interface.rs')
-rw-r--r--native/src/user_interface.rs33
1 files changed, 14 insertions, 19 deletions
diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs
index 0760dd7e..7c166094 100644
--- a/native/src/user_interface.rs
+++ b/native/src/user_interface.rs
@@ -1,7 +1,6 @@
-use crate::{input::mouse, Element, Event, Layout, Point};
+use crate::{input::mouse, layout, Element, Event, Layout, Point, Rectangle};
use std::hash::Hasher;
-use stretch::{geometry, result};
/// A set of interactive graphical elements with a specific [`Layout`].
///
@@ -15,7 +14,7 @@ use stretch::{geometry, result};
pub struct UserInterface<'a, Message, Renderer> {
hash: u64,
root: Element<'a, Message, Renderer>,
- layout: result::Layout,
+ layout: Layout,
cursor_position: Point,
}
@@ -110,7 +109,7 @@ where
let layout = if hash == cache.hash {
cache.layout
} else {
- root.compute_layout(renderer)
+ root.layout(renderer, &layout::Limits::NONE)
};
UserInterface {
@@ -210,7 +209,7 @@ where
self.root.widget.on_event(
event,
- Layout::new(&self.layout),
+ &self.layout,
self.cursor_position,
&mut messages,
renderer,
@@ -299,11 +298,9 @@ where
/// }
/// ```
pub fn draw(&self, renderer: &mut Renderer) -> Renderer::Output {
- self.root.widget.draw(
- renderer,
- Layout::new(&self.layout),
- self.cursor_position,
- )
+ self.root
+ .widget
+ .draw(renderer, &self.layout, self.cursor_position)
}
/// Extract the [`Cache`] of the [`UserInterface`], consuming it in the
@@ -326,7 +323,7 @@ where
#[derive(Debug, Clone)]
pub struct Cache {
hash: u64,
- layout: result::Layout,
+ layout: Layout,
cursor_position: Point,
}
@@ -339,16 +336,14 @@ impl Cache {
/// [`Cache`]: struct.Cache.html
/// [`UserInterface`]: struct.UserInterface.html
pub fn new() -> Cache {
- use crate::{Node, Style};
-
- let empty_node = Node::new(Style::default());
-
Cache {
hash: 0,
- layout: empty_node
- .0
- .compute_layout(geometry::Size::undefined())
- .unwrap(),
+ layout: Layout::new(Rectangle {
+ x: 0.0,
+ y: 0.0,
+ width: 0.0,
+ height: 0.0,
+ }),
cursor_position: Point::new(-1.0, -1.0),
}
}