diff --git a/examples/ios_demo/src/index.html b/examples/ios_demo/src/index.html new file mode 100644 index 000000000..9679d1786 --- /dev/null +++ b/examples/ios_demo/src/index.html @@ -0,0 +1,12 @@ + + +
+, props: P, cfg: Config)
let shortcut_manager = ShortcutRegistry::new(&event_loop);
- let web_view = create_new_window(
- cfg,
- &event_loop,
- &proxy,
- VirtualDom::new_with_props(root, props),
- &queue,
- &event_handlers,
- shortcut_manager.clone(),
- );
-
- // By default, we'll create a new window when the app starts
- queue.borrow_mut().push(web_view);
+ // move the props into a cell so we can pop it out later to create the first window
+ // iOS panics if we create a window before the event loop is started
+ let props = Rc::new(Cell::new(Some(props)));
+ let cfg = Rc::new(Cell::new(Some(cfg)));
event_loop.run(move |window_event, event_loop, control_flow| {
*control_flow = ControlFlow::Wait;
@@ -193,8 +186,27 @@ pub fn launch_with_props , props: P, cfg: Config)
_ => {}
},
- Event::NewEvents(StartCause::Init)
- | Event::UserEvent(UserWindowEvent(EventData::NewWindow, _)) => {
+ Event::NewEvents(StartCause::Init) => {
+ //
+ let props = props.take().unwrap();
+ let cfg = cfg.take().unwrap();
+
+ let handler = create_new_window(
+ cfg,
+ &event_loop,
+ &proxy,
+ VirtualDom::new_with_props(root, props),
+ &queue,
+ &event_handlers,
+ shortcut_manager.clone(),
+ );
+
+ let id = handler.desktop_context.webview.window().id();
+ webviews.insert(id, handler);
+ _ = proxy.send_event(UserWindowEvent(EventData::Poll, id));
+ }
+
+ Event::UserEvent(UserWindowEvent(EventData::NewWindow, _)) => {
for handler in queue.borrow_mut().drain(..) {
let id = handler.desktop_context.webview.window().id();
webviews.insert(id, handler);