From f4b8bce837513cdd06df3a3ceba86fd9256d3cc5 Mon Sep 17 00:00:00 2001
From: daxpedda <daxpedda@gmail.com>
Date: Fri, 14 Feb 2020 21:41:35 +0100
Subject: Revert changing the constructor and implement new method.

---
 native/src/layout/flex.rs         |  6 ++----
 native/src/layout/node.rs         | 22 +++++++++++++++-------
 native/src/user_interface.rs      |  2 +-
 native/src/widget/button.rs       |  8 +++-----
 native/src/widget/container.rs    |  4 ++--
 native/src/widget/image.rs        |  2 +-
 native/src/widget/progress_bar.rs |  2 +-
 native/src/widget/scrollable.rs   |  2 +-
 native/src/widget/slider.rs       |  2 +-
 native/src/widget/space.rs        |  2 +-
 native/src/widget/svg.rs          |  2 +-
 native/src/widget/text.rs         |  2 +-
 native/src/widget/text_input.rs   | 14 ++++----------
 13 files changed, 34 insertions(+), 36 deletions(-)

(limited to 'native/src')

diff --git a/native/src/layout/flex.rs b/native/src/layout/flex.rs
index 02037b14..2f65f1c1 100644
--- a/native/src/layout/flex.rs
+++ b/native/src/layout/flex.rs
@@ -18,7 +18,7 @@
 // limitations under the License.
 use crate::{
     layout::{Limits, Node},
-    Align, Element, Size,
+    Align, Element, Point, Size,
 };
 
 /// The main axis of a flex layout.
@@ -152,8 +152,7 @@ where
 
         let (x, y) = axis.pack(main, padding);
 
-        node.bounds.x = x;
-        node.bounds.y = y;
+        node.move_to(Point::new(x, y));
 
         match axis {
             Axis::Horizontal => {
@@ -174,7 +173,6 @@ where
 
     Node::with_children(
         Size::new(size.width + padding * 2.0, size.height + padding * 2.0),
-        Size::ZERO,
         nodes,
     )
 }
diff --git a/native/src/layout/node.rs b/native/src/layout/node.rs
index e9885725..777a57fb 100644
--- a/native/src/layout/node.rs
+++ b/native/src/layout/node.rs
@@ -1,9 +1,9 @@
-use crate::{Align, Rectangle, Size};
+use crate::{Align, Point, Rectangle, Size};
 
 /// The bounds of an element and its children.
 #[derive(Debug, Clone, Default)]
 pub struct Node {
-    pub(crate) bounds: Rectangle,
+    bounds: Rectangle,
     children: Vec<Node>,
 }
 
@@ -12,19 +12,19 @@ impl Node {
     ///
     /// [`Node`]: struct.Node.html
     /// [`Size`]: ../struct.Size.html
-    pub fn new(size: Size, bound: Size) -> Self {
-        Self::with_children(size, bound, Vec::new())
+    pub fn new(size: Size) -> Self {
+        Self::with_children(size, Vec::new())
     }
 
     /// Creates a new [`Node`] with the given [`Size`] and children.
     ///
     /// [`Node`]: struct.Node.html
     /// [`Size`]: ../struct.Size.html
-    pub fn with_children(size: Size, bound: Size, children: Vec<Node>) -> Self {
+    pub fn with_children(size: Size, children: Vec<Node>) -> Self {
         Node {
             bounds: Rectangle {
-                x: bound.width,
-                y: bound.height,
+                x: 0.0,
+                y: 0.0,
                 width: size.width,
                 height: size.height,
             },
@@ -84,4 +84,12 @@ impl Node {
             }
         }
     }
+
+    /// Move item to [`Point`].
+    ///
+    /// [`Point`]: ../struct.Point.html
+    pub fn move_to(&mut self, position: Point) {
+        self.bounds.x = position.x;
+        self.bounds.y = position.y;
+    }
 }
diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs
index b8fe7848..08914bed 100644
--- a/native/src/user_interface.rs
+++ b/native/src/user_interface.rs
@@ -307,7 +307,7 @@ impl Cache {
     pub fn new() -> Cache {
         Cache {
             hash: 0,
-            layout: layout::Node::new(Size::ZERO, Size::ZERO),
+            layout: layout::Node::new(Size::new(0.0, 0.0)),
             bounds: Size::ZERO,
             cursor_position: Point::new(-1.0, -1.0),
         }
diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs
index 73be4d49..f1d46936 100644
--- a/native/src/widget/button.rs
+++ b/native/src/widget/button.rs
@@ -7,7 +7,7 @@
 use crate::{
     input::{mouse, ButtonState},
     layout, Clipboard, Element, Event, Hasher, Layout, Length, Point,
-    Rectangle, Size, Widget,
+    Rectangle, Widget,
 };
 use std::hash::Hash;
 
@@ -168,13 +168,11 @@ where
             .pad(padding);
 
         let mut content = self.content.layout(renderer, &limits);
-
-        content.bounds.x = padding;
-        content.bounds.y = padding;
+        content.move_to(Point::new(padding, padding));
 
         let size = limits.resolve(content.size()).pad(padding);
 
-        layout::Node::with_children(size, Size::ZERO, vec![content])
+        layout::Node::with_children(size, vec![content])
     }
 
     fn on_event(
diff --git a/native/src/widget/container.rs b/native/src/widget/container.rs
index d2065234..07bb62c6 100644
--- a/native/src/widget/container.rs
+++ b/native/src/widget/container.rs
@@ -2,7 +2,7 @@
 use std::hash::Hash;
 
 use crate::{
-    layout, Align, Clipboard, Size, Element, Event, Hasher, Layout, Length, Point,
+    layout, Align, Clipboard, Element, Event, Hasher, Layout, Length, Point,
     Rectangle, Widget,
 };
 
@@ -148,7 +148,7 @@ where
 
         content.align(self.horizontal_alignment, self.vertical_alignment, size);
 
-        layout::Node::with_children(size, Size::ZERO, vec![content])
+        layout::Node::with_children(size, vec![content])
     }
 
     fn on_event(
diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs
index 6938f5d5..200401f9 100644
--- a/native/src/widget/image.rs
+++ b/native/src/widget/image.rs
@@ -88,7 +88,7 @@ where
             size.height = height as f32 * size.width / width as f32;
         }
 
-        layout::Node::new(size, Size::ZERO)
+        layout::Node::new(size)
     }
 
     fn draw(
diff --git a/native/src/widget/progress_bar.rs b/native/src/widget/progress_bar.rs
index d011cc8a..67d1ab83 100644
--- a/native/src/widget/progress_bar.rs
+++ b/native/src/widget/progress_bar.rs
@@ -95,7 +95,7 @@ where
 
         let size = limits.resolve(Size::ZERO);
 
-        layout::Node::new(size, Size::ZERO)
+        layout::Node::new(size)
     }
 
     fn draw(
diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs
index 6408a3d2..e83f25af 100644
--- a/native/src/widget/scrollable.rs
+++ b/native/src/widget/scrollable.rs
@@ -143,7 +143,7 @@ where
         let content = self.content.layout(renderer, &child_limits);
         let size = limits.resolve(content.size());
 
-        layout::Node::with_children(size, Size::ZERO, vec![content])
+        layout::Node::with_children(size, vec![content])
     }
 
     fn on_event(
diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs
index c554fb9e..008203fe 100644
--- a/native/src/widget/slider.rs
+++ b/native/src/widget/slider.rs
@@ -135,7 +135,7 @@ where
 
         let size = limits.resolve(Size::ZERO);
 
-        layout::Node::new(size, Size::ZERO)
+        layout::Node::new(size)
     }
 
     fn on_event(
diff --git a/native/src/widget/space.rs b/native/src/widget/space.rs
index 899c258e..24c94bf6 100644
--- a/native/src/widget/space.rs
+++ b/native/src/widget/space.rs
@@ -62,7 +62,7 @@ where
     ) -> layout::Node {
         let limits = limits.width(self.width).height(self.height);
 
-        layout::Node::new(limits.resolve(Size::ZERO), Size::ZERO)
+        layout::Node::new(limits.resolve(Size::ZERO))
     }
 
     fn draw(
diff --git a/native/src/widget/svg.rs b/native/src/widget/svg.rs
index 60d403ef..063730bb 100644
--- a/native/src/widget/svg.rs
+++ b/native/src/widget/svg.rs
@@ -85,7 +85,7 @@ where
             size.height = height as f32 * size.width / width as f32;
         }
 
-        layout::Node::new(size, Size::ZERO)
+        layout::Node::new(size)
     }
 
     fn draw(
diff --git a/native/src/widget/text.rs b/native/src/widget/text.rs
index ef8a9dbc..e4490fb6 100644
--- a/native/src/widget/text.rs
+++ b/native/src/widget/text.rs
@@ -140,7 +140,7 @@ where
 
         let size = limits.resolve(Size::new(width, height));
 
-        layout::Node::new(size, Size::ZERO)
+        layout::Node::new(size)
     }
 
     fn draw(
diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs
index 42aa3d69..c068b895 100644
--- a/native/src/widget/text_input.rs
+++ b/native/src/widget/text_input.rs
@@ -183,16 +183,10 @@ where
             .max_width(self.max_width)
             .height(Length::Units(text_size));
 
-        let mut text =
-            layout::Node::new(limits.resolve(Size::ZERO), Size::ZERO);
-        text.bounds.x = padding;
-        text.bounds.y = padding;
-
-        layout::Node::with_children(
-            text.size().pad(padding),
-            Size::ZERO,
-            vec![text],
-        )
+        let mut text = layout::Node::new(limits.resolve(Size::ZERO));
+        text.move_to(Point::new(padding, padding));
+
+        layout::Node::with_children(text.size().pad(padding), vec![text])
     }
 
     fn on_event(
-- 
cgit