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.
This commit is contained in:
parent
1a93f0ef4a
commit
a92a0b73ed
13 changed files with 245 additions and 155 deletions
|
|
@ -1,4 +1,4 @@
|
|||
use crate::Application;
|
||||
use crate::Instance;
|
||||
|
||||
use std::rc::Rc;
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ where
|
|||
pub fn new() -> Self {
|
||||
Self {
|
||||
publish: Rc::new(Box::new(|message, root| {
|
||||
let app = root.unwrap_mut::<Application<Message>>();
|
||||
let app = root.unwrap_mut::<Instance<Message>>();
|
||||
|
||||
app.update(message)
|
||||
})),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue