summaryrefslogtreecommitdiffstats
path: root/native/src/overlay.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-07-10 01:31:56 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-07-10 01:35:46 +0200
commit1070b61f3408539f6c9cb9d265f3295e6d055db7 (patch)
treea4cb2a93b1f008ca251e2742e812b2bd8b1e41f6 /native/src/overlay.rs
parentce8cb228ef608b247c8a84f9d3a4a7faff68b355 (diff)
downloadiced-1070b61f3408539f6c9cb9d265f3295e6d055db7.tar.gz
iced-1070b61f3408539f6c9cb9d265f3295e6d055db7.tar.bz2
iced-1070b61f3408539f6c9cb9d265f3295e6d055db7.zip
Rename `overlay::Content` trait to `Overlay`
The `Overlay` struct is now `overlay::Element`.
Diffstat (limited to 'native/src/overlay.rs')
-rw-r--r--native/src/overlay.rs143
1 files changed, 17 insertions, 126 deletions
diff --git a/native/src/overlay.rs b/native/src/overlay.rs
index b8c8bb48..b6cbbec3 100644
--- a/native/src/overlay.rs
+++ b/native/src/overlay.rs
@@ -1,101 +1,13 @@
-mod content;
+mod element;
pub mod menu;
-pub use content::Content;
+pub use element::Element;
pub use menu::Menu;
-use crate::{layout, Clipboard, Event, Hasher, Layout, Point, Size, Vector};
-use std::rc::Rc;
+use crate::{layout, Clipboard, Event, Hasher, Layout, Point, Size};
-#[allow(missing_debug_implementations)]
-pub struct Overlay<'a, Message, Renderer> {
- position: Point,
- content: Box<dyn Content<Message, Renderer> + 'a>,
-}
-
-impl<'a, Message, Renderer> Overlay<'a, Message, Renderer>
-where
- Renderer: crate::Renderer,
-{
- pub fn new(
- position: Point,
- content: Box<dyn Content<Message, Renderer> + 'a>,
- ) -> Self {
- Self { position, content }
- }
-
- pub fn translate(mut self, translation: Vector) -> Self {
- self.position = self.position + translation;
- self
- }
-
- pub fn map<B>(self, f: Rc<dyn Fn(Message) -> B>) -> Overlay<'a, B, Renderer>
- where
- Message: 'a,
- Renderer: 'a,
- B: 'static,
- {
- Overlay {
- position: self.position,
- content: Box::new(Map::new(self.content, f)),
- }
- }
-
- pub fn layout(&self, renderer: &Renderer, bounds: Size) -> layout::Node {
- self.content.layout(renderer, bounds, self.position)
- }
-
- pub fn draw(
- &self,
- renderer: &mut Renderer,
- defaults: &Renderer::Defaults,
- layout: Layout<'_>,
- cursor_position: Point,
- ) -> Renderer::Output {
- self.content
- .draw(renderer, defaults, layout, cursor_position)
- }
-
- pub fn hash_layout(&self, state: &mut Hasher) {
- self.content.hash_layout(state, self.position);
- }
-
- pub fn on_event(
- &mut self,
- event: Event,
- layout: Layout<'_>,
- cursor_position: Point,
- messages: &mut Vec<Message>,
- renderer: &Renderer,
- clipboard: Option<&dyn Clipboard>,
- ) {
- self.content.on_event(
- event,
- layout,
- cursor_position,
- messages,
- renderer,
- clipboard,
- )
- }
-}
-
-struct Map<'a, A, B, Renderer> {
- content: Box<dyn Content<A, Renderer> + 'a>,
- mapper: Rc<dyn Fn(A) -> B>,
-}
-
-impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> {
- pub fn new(
- content: Box<dyn Content<A, Renderer> + 'a>,
- mapper: Rc<dyn Fn(A) -> B + 'static>,
- ) -> Map<'a, A, B, Renderer> {
- Map { content, mapper }
- }
-}
-
-impl<'a, A, B, Renderer> Content<B, Renderer> for Map<'a, A, B, Renderer>
+pub trait Overlay<Message, Renderer>
where
Renderer: crate::Renderer,
{
@@ -104,34 +16,7 @@ where
renderer: &Renderer,
bounds: Size,
position: Point,
- ) -> layout::Node {
- self.content.layout(renderer, bounds, position)
- }
-
- fn on_event(
- &mut self,
- event: Event,
- layout: Layout<'_>,
- cursor_position: Point,
- messages: &mut Vec<B>,
- renderer: &Renderer,
- clipboard: Option<&dyn Clipboard>,
- ) {
- let mut original_messages = Vec::new();
-
- self.content.on_event(
- event,
- layout,
- cursor_position,
- &mut original_messages,
- renderer,
- clipboard,
- );
-
- original_messages
- .drain(..)
- .for_each(|message| messages.push((self.mapper)(message)));
- }
+ ) -> layout::Node;
fn draw(
&self,
@@ -139,12 +24,18 @@ where
defaults: &Renderer::Defaults,
layout: Layout<'_>,
cursor_position: Point,
- ) -> Renderer::Output {
- self.content
- .draw(renderer, defaults, layout, cursor_position)
- }
+ ) -> Renderer::Output;
+
+ fn hash_layout(&self, state: &mut Hasher, position: Point);
- fn hash_layout(&self, state: &mut Hasher, position: Point) {
- self.content.hash_layout(state, position);
+ fn on_event(
+ &mut self,
+ _event: Event,
+ _layout: Layout<'_>,
+ _cursor_position: Point,
+ _messages: &mut Vec<Message>,
+ _renderer: &Renderer,
+ _clipboard: Option<&dyn Clipboard>,
+ ) {
}
}