From a92a0b73ed7ed935df762d06c4249894fd35b227 Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector0193@gmail.com>
Date: Wed, 9 Oct 2019 05:36:49 +0200
Subject: Move `winit` logic from `iced` to `iced_winit`

- Added new `renderer::Windowed` trait. This shoud allow users to easily
  try different renderers by simply changing one line.
- Renamed `UserInterface` traits to `Application`, as the `run` method
  takes total control of the current thread.
- Moved `MouseCursor` back to `iced_native`. The new
  `renderer::Windowed` trait returns one on `draw`.
- Split `iced_native` renderer in multiple modules, for consistency.
---
 web/src/lib.rs | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

(limited to 'web/src/lib.rs')

diff --git a/web/src/lib.rs b/web/src/lib.rs
index caf17df5..04848d07 100644
--- a/web/src/lib.rs
+++ b/web/src/lib.rs
@@ -11,7 +11,7 @@ pub use element::Element;
 pub use iced_core::{Align, Color, Justify, Length};
 pub use widget::*;
 
-pub trait UserInterface {
+pub trait Application {
     type Message;
 
     fn update(
@@ -25,23 +25,23 @@ pub trait UserInterface {
     where
         Self: 'static + Sized,
     {
+        let app = Instance::new(self);
+
         let window = web_sys::window().unwrap();
         let document = window.document().unwrap();
         let body = document.body().unwrap();
-
-        let app = Application::new(self);
-
         let vdom = dodrio::Vdom::new(&body, app);
+
         vdom.forget();
     }
 }
 
-struct Application<Message> {
-    ui: RefCell<Box<dyn UserInterface<Message = Message>>>,
+struct Instance<Message> {
+    ui: RefCell<Box<dyn Application<Message = Message>>>,
 }
 
-impl<Message> Application<Message> {
-    fn new(ui: impl UserInterface<Message = Message> + 'static) -> Self {
+impl<Message> Instance<Message> {
+    fn new(ui: impl Application<Message = Message> + 'static) -> Self {
         Self {
             ui: RefCell::new(Box::new(ui)),
         }
@@ -55,7 +55,7 @@ impl<Message> Application<Message> {
     }
 }
 
-impl<Message> dodrio::Render for Application<Message>
+impl<Message> dodrio::Render for Instance<Message>
 where
     Message: 'static,
 {
-- 
cgit