feat(tauri-runtime-wry): allow window creation and closing on the main thread (#2668)

This commit is contained in:
Lucas Fernandes Nogueira
2021-09-27 20:18:06 -03:00
committed by GitHub
parent ac8e69a98c
commit d24fd8d102
7 changed files with 400 additions and 428 deletions

View File

@@ -3,4 +3,4 @@
"tauri-runtime-wry": patch
---
Allow window, global shortcut and clipboard APIs to be called on the main thread (except window's `close` and `create_window`).
Allow window, global shortcut and clipboard APIs to be called on the main thread.

View File

@@ -92,6 +92,7 @@ use std::{
convert::TryFrom,
fmt,
fs::read,
ops::Deref,
path::PathBuf,
sync::{
mpsc::{channel, Sender},
@@ -117,6 +118,13 @@ pub type MenuEventHandler = Box<dyn Fn(&MenuEvent) + Send>;
pub type MenuEventListeners = Arc<Mutex<HashMap<WindowId, WindowMenuEventListeners>>>;
pub type WindowMenuEventListeners = Arc<Mutex<HashMap<Uuid, MenuEventHandler>>>;
macro_rules! getter {
($self: ident, $rx: expr, $message: expr) => {{
send_user_message(&$self.context, $message)?;
$rx.recv().unwrap()
}};
}
macro_rules! window_getter {
($self: ident, $message: expr) => {{
let (tx, rx) = channel();
@@ -124,45 +132,33 @@ macro_rules! window_getter {
}};
}
macro_rules! send_user_message {
($self: ident, $message: expr) => {{
if current_thread().id() == $self.context.main_thread_id {
handle_user_message(
&mut ControlFlow::Wait,
None,
$message,
UserMessageContext {
callback: None,
window_event_listeners: &$self.context.window_event_listeners,
global_shortcut_manager: $self.context.main_thread.global_shortcut_manager.clone(),
clipboard_manager: $self.context.main_thread.clipboard_manager.clone(),
menu_event_listeners: &$self.context.menu_event_listeners,
windows: $self.context.main_thread.windows.clone(),
#[cfg(feature = "system-tray")]
tray_context: &$self.context.main_thread.tray_context,
},
&$self.context.main_thread.web_context,
);
Ok(())
} else {
$self
.context
.proxy
.send_event($message)
.map_err(|_| Error::FailedToSendMessage)
}
}};
}
macro_rules! getter {
($self: ident, $rx: expr, $message: expr) => {{
send_user_message!($self, $message)?;
$rx.recv().unwrap()
}};
fn send_user_message(context: &Context, message: Message) -> Result<()> {
if current_thread().id() == context.main_thread_id {
handle_user_message(
&context.main_thread.window_target,
message,
UserMessageContext {
window_event_listeners: &context.window_event_listeners,
global_shortcut_manager: context.main_thread.global_shortcut_manager.clone(),
clipboard_manager: context.main_thread.clipboard_manager.clone(),
menu_event_listeners: &context.menu_event_listeners,
windows: context.main_thread.windows.clone(),
#[cfg(feature = "system-tray")]
tray_context: &context.main_thread.tray_context,
},
&context.main_thread.web_context,
);
Ok(())
} else {
context
.proxy
.send_event(message)
.map_err(|_| Error::FailedToSendMessage)
}
}
#[derive(Clone)]
struct EventLoopContext {
struct Context {
main_thread_id: ThreadId,
proxy: EventLoopProxy<Message>,
window_event_listeners: WindowEventListeners,
@@ -170,9 +166,23 @@ struct EventLoopContext {
main_thread: DispatcherMainThreadContext,
}
impl fmt::Debug for EventLoopContext {
#[derive(Debug, Clone)]
struct DispatcherMainThreadContext {
window_target: EventLoopWindowTarget<Message>,
web_context: WebContextStore,
global_shortcut_manager: Arc<Mutex<WryShortcutManager>>,
clipboard_manager: Arc<Mutex<Clipboard>>,
windows: Arc<Mutex<HashMap<WindowId, WindowWrapper>>>,
#[cfg(feature = "system-tray")]
tray_context: TrayContext,
}
// the main thread context is only used on the main thread
unsafe impl Send for DispatcherMainThreadContext {}
impl fmt::Debug for Context {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("EventLoopContext")
f.debug_struct("Context")
.field("main_thread_id", &self.main_thread_id)
.field("proxy", &self.proxy)
.field("main_thread", &self.main_thread)
@@ -372,7 +382,7 @@ unsafe impl Send for GlobalShortcutWrapper {}
/// Wrapper around [`WryShortcutManager`].
#[derive(Clone)]
pub struct GlobalShortcutManagerHandle {
context: EventLoopContext,
context: Context,
shortcuts: Arc<Mutex<HashMap<String, (AcceleratorId, GlobalShortcutWrapper)>>>,
listeners: GlobalShortcutListeners,
}
@@ -447,7 +457,7 @@ impl GlobalShortcutManager for GlobalShortcutManagerHandle {
#[derive(Debug, Clone)]
pub struct ClipboardManagerWrapper {
context: EventLoopContext,
context: Context,
}
impl ClipboardManager for ClipboardManagerWrapper {
@@ -1005,34 +1015,17 @@ pub enum Message {
Clipboard(ClipboardMessage),
}
#[derive(Clone)]
struct DispatcherContext {
main_thread_id: ThreadId,
proxy: EventLoopProxy<Message>,
window_event_listeners: WindowEventListeners,
menu_event_listeners: MenuEventListeners,
main_thread: DispatcherMainThreadContext,
}
#[derive(Debug, Clone)]
struct DispatcherMainThreadContext {
web_context: WebContextStore,
global_shortcut_manager: Arc<Mutex<WryShortcutManager>>,
clipboard_manager: Arc<Mutex<Clipboard>>,
windows: Arc<Mutex<HashMap<WindowId, WindowWrapper>>>,
#[cfg(feature = "system-tray")]
tray_context: TrayContext,
}
// the main thread context is only used on the main thread
unsafe impl Send for DispatcherMainThreadContext {}
impl fmt::Debug for DispatcherContext {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("DispatcherContext")
.field("main_thread_id", &self.main_thread_id)
.field("proxy", &self.proxy)
.finish()
impl Clone for Message {
fn clone(&self) -> Self {
match self {
Self::Window(i, m) => Self::Window(*i, m.clone()),
Self::Webview(i, m) => Self::Webview(*i, m.clone()),
#[cfg(feature = "system-tray")]
Self::Tray(m) => Self::Tray(m.clone()),
Self::GlobalShortcut(m) => Self::GlobalShortcut(m.clone()),
Self::Clipboard(m) => Self::Clipboard(m.clone()),
_ => unimplemented!(),
}
}
}
@@ -1040,7 +1033,7 @@ impl fmt::Debug for DispatcherContext {
#[derive(Debug, Clone)]
pub struct WryDispatcher {
window_id: WindowId,
context: DispatcherContext,
context: Context,
}
impl Dispatch for WryDispatcher {
@@ -1048,7 +1041,7 @@ impl Dispatch for WryDispatcher {
type WindowBuilder = WindowBuilderWrapper;
fn run_on_main_thread<F: FnOnce() + Send + 'static>(&self, f: F) -> Result<()> {
send_user_message!(self, Message::Task(Box::new(f)))
send_user_message(&self.context, Message::Task(Box::new(f)))
}
fn on_window_event<F: Fn(&WindowEvent) + Send + 'static>(&self, f: F) -> Uuid {
@@ -1175,19 +1168,19 @@ impl Dispatch for WryDispatcher {
}
fn print(&self) -> Result<()> {
send_user_message!(
self,
Message::Webview(self.window_id, WebviewMessage::Print)
send_user_message(
&self.context,
Message::Webview(self.window_id, WebviewMessage::Print),
)
}
fn request_user_attention(&self, request_type: Option<UserAttentionType>) -> Result<()> {
send_user_message!(
self,
send_user_message(
&self.context,
Message::Window(
self.window_id,
WindowMessage::RequestUserAttention(request_type.map(Into::into)),
)
),
)
}
@@ -1197,24 +1190,19 @@ impl Dispatch for WryDispatcher {
&mut self,
pending: PendingWindow<Self::Runtime>,
) -> Result<DetachedWindow<Self::Runtime>> {
if current_thread().id() == self.context.main_thread_id {
panic!("This API cannot be called on the main thread. Try using `std::thread::spawn` or `tauri::async_runtime::spawn`.");
}
let (tx, rx) = channel();
let label = pending.label.clone();
let context = self.context.clone();
self
.context
.proxy
.send_event(Message::CreateWebview(
send_user_message(
&self.context,
Message::CreateWebview(
Box::new(move |event_loop, web_context| {
create_webview(event_loop, web_context, context, pending)
}),
tx,
))
.map_err(|_| Error::FailedToSendMessage)?;
),
)?;
let window_id = rx.recv().unwrap();
let dispatcher = WryDispatcher {
@@ -1225,73 +1213,77 @@ impl Dispatch for WryDispatcher {
}
fn set_resizable(&self, resizable: bool) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetResizable(resizable),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetResizable(resizable)),
)
}
fn set_title<S: Into<String>>(&self, title: S) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetTitle(title.into()),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetTitle(title.into())),
)
}
fn maximize(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::Maximize)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::Maximize),
)
}
fn unmaximize(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::Unmaximize)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::Unmaximize),
)
}
fn minimize(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::Minimize)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::Minimize),
)
}
fn unminimize(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::Unminimize)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::Unminimize),
)
}
fn show_menu(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::ShowMenu)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::ShowMenu),
)
}
fn hide_menu(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::HideMenu)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::HideMenu),
)
}
fn show(&self) -> Result<()> {
send_user_message!(self, Message::Window(self.window_id, WindowMessage::Show))
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::Show),
)
}
fn hide(&self) -> Result<()> {
send_user_message!(self, Message::Window(self.window_id, WindowMessage::Hide))
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::Hide),
)
}
fn close(&self) -> Result<()> {
if current_thread().id() == self.context.main_thread_id {
panic!("This API cannot be called on the main thread. Try using `std::thread::spawn` or `tauri::async_runtime::spawn`.");
}
// NOTE: close cannot use the `send_user_message` function because it accesses the event loop callback
self
.context
.proxy
@@ -1300,99 +1292,99 @@ impl Dispatch for WryDispatcher {
}
fn set_decorations(&self, decorations: bool) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetDecorations(decorations),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetDecorations(decorations)),
)
}
fn set_always_on_top(&self, always_on_top: bool) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetAlwaysOnTop(always_on_top),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetAlwaysOnTop(always_on_top)),
)
}
fn set_size(&self, size: Size) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetSize(size),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetSize(size)),
)
}
fn set_min_size(&self, size: Option<Size>) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetMinSize(size),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetMinSize(size)),
)
}
fn set_max_size(&self, size: Option<Size>) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetMaxSize(size),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetMaxSize(size)),
)
}
fn set_position(&self, position: Position) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetPosition(position),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetPosition(position)),
)
}
fn set_fullscreen(&self, fullscreen: bool) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetFullscreen(fullscreen),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetFullscreen(fullscreen)),
)
}
fn set_focus(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetFocus)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetFocus),
)
}
fn set_icon(&self, icon: Icon) -> Result<()> {
send_user_message!(
self,
send_user_message(
&self.context,
Message::Window(
self.window_id,
WindowMessage::SetIcon(WryIcon::try_from(icon)?.0),
)
),
)
}
fn set_skip_taskbar(&self, skip: bool) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::SetSkipTaskbar(skip),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::SetSkipTaskbar(skip)),
)
}
fn start_dragging(&self) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::DragWindow)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::DragWindow),
)
}
fn eval_script<S: Into<String>>(&self, script: S) -> Result<()> {
send_user_message!(
self,
send_user_message(
&self.context,
Message::Webview(
self.window_id,
WebviewMessage::EvaluateScript(script.into()),
)
),
)
}
fn update_menu_item(&self, id: u16, update: MenuUpdate) -> Result<()> {
send_user_message!(
self,
Message::Window(self.window_id, WindowMessage::UpdateMenuItem(id, update),)
send_user_message(
&self.context,
Message::Window(self.window_id, WindowMessage::UpdateMenuItem(id, update)),
)
}
}
@@ -1460,7 +1452,7 @@ pub struct Wry {
/// A handle to the Wry runtime.
#[derive(Debug, Clone)]
pub struct WryHandle {
dispatcher_context: DispatcherContext,
context: Context,
}
impl WryHandle {
@@ -1469,22 +1461,15 @@ impl WryHandle {
&self,
f: F,
) -> Result<Weak<Window>> {
if current_thread().id() == self.dispatcher_context.main_thread_id {
panic!("This API cannot be called on the main thread. Try using `std::thread::spawn` or `tauri::async_runtime::spawn`.");
}
let (tx, rx) = channel();
self
.dispatcher_context
.proxy
.send_event(Message::CreateWindow(Box::new(f), tx))
.map_err(|_| Error::FailedToSendMessage)?;
send_user_message(&self.context, Message::CreateWindow(Box::new(f), tx))?;
rx.recv().unwrap()
}
/// Send a message to the event loop.
pub fn send_event(&self, message: Message) -> Result<()> {
self
.dispatcher_context
.context
.proxy
.send_event(message)
.map_err(|_| Error::FailedToSendMessage)?;
@@ -1503,22 +1488,21 @@ impl RuntimeHandle for WryHandle {
) -> Result<DetachedWindow<Self::Runtime>> {
let (tx, rx) = channel();
let label = pending.label.clone();
let dispatcher_context = self.dispatcher_context.clone();
self
.dispatcher_context
.proxy
.send_event(Message::CreateWebview(
let context = self.context.clone();
send_user_message(
&self.context,
Message::CreateWebview(
Box::new(move |event_loop, web_context| {
create_webview(event_loop, web_context, dispatcher_context, pending)
create_webview(event_loop, web_context, context, pending)
}),
tx,
))
.map_err(|_| Error::FailedToSendMessage)?;
),
)?;
let window_id = rx.recv().unwrap();
let dispatcher = WryDispatcher {
window_id,
context: self.dispatcher_context.clone(),
context: self.context.clone(),
};
Ok(DetachedWindow { label, dispatcher })
}
@@ -1552,12 +1536,13 @@ impl Runtime for Wry {
#[cfg(feature = "system-tray")]
let tray_context = TrayContext::default();
let event_loop_context = EventLoopContext {
let event_loop_context = Context {
main_thread_id,
proxy,
window_event_listeners: window_event_listeners.clone(),
menu_event_listeners: menu_event_listeners.clone(),
main_thread: DispatcherMainThreadContext {
window_target: event_loop.deref().clone(),
web_context: web_context.clone(),
global_shortcut_manager: global_shortcut_manager.clone(),
clipboard_manager: clipboard_manager.clone(),
@@ -1594,12 +1579,13 @@ impl Runtime for Wry {
fn handle(&self) -> Self::Handle {
WryHandle {
dispatcher_context: DispatcherContext {
context: Context {
main_thread_id: self.main_thread_id,
proxy: self.event_loop.create_proxy(),
window_event_listeners: self.window_event_listeners.clone(),
menu_event_listeners: self.menu_event_listeners.clone(),
main_thread: DispatcherMainThreadContext {
window_target: self.event_loop.deref().clone(),
web_context: self.web_context.clone(),
global_shortcut_manager: self.global_shortcut_manager.clone(),
clipboard_manager: self.clipboard_manager.clone(),
@@ -1625,12 +1611,13 @@ impl Runtime for Wry {
let webview = create_webview(
&self.event_loop,
&self.web_context,
DispatcherContext {
Context {
main_thread_id: self.main_thread_id,
proxy: proxy.clone(),
window_event_listeners: self.window_event_listeners.clone(),
menu_event_listeners: self.menu_event_listeners.clone(),
main_thread: DispatcherMainThreadContext {
window_target: self.event_loop.deref().clone(),
web_context: self.web_context.clone(),
global_shortcut_manager: self.global_shortcut_manager.clone(),
clipboard_manager: self.clipboard_manager.clone(),
@@ -1682,12 +1669,13 @@ impl Runtime for Wry {
let dispatcher = WryDispatcher {
window_id: webview.inner.window().id(),
context: DispatcherContext {
context: Context {
main_thread_id: self.main_thread_id,
proxy,
window_event_listeners: self.window_event_listeners.clone(),
menu_event_listeners: self.menu_event_listeners.clone(),
main_thread: DispatcherMainThreadContext {
window_target: self.event_loop.deref().clone(),
web_context: self.web_context.clone(),
global_shortcut_manager: self.global_shortcut_manager.clone(),
clipboard_manager: self.clipboard_manager.clone(),
@@ -1858,7 +1846,6 @@ struct EventLoopIterationContext<'a> {
}
struct UserMessageContext<'a> {
callback: Option<&'a mut (dyn FnMut(RunEvent) + 'static)>,
window_event_listeners: &'a WindowEventListeners,
global_shortcut_manager: Arc<Mutex<WryShortcutManager>>,
clipboard_manager: Arc<Mutex<Clipboard>>,
@@ -1869,14 +1856,12 @@ struct UserMessageContext<'a> {
}
fn handle_user_message(
control_flow: &mut ControlFlow,
event_loop: Option<&EventLoopWindowTarget<Message>>,
event_loop: &EventLoopWindowTarget<Message>,
message: Message,
context: UserMessageContext<'_>,
web_context: &WebContextStore,
) -> RunIteration {
let UserMessageContext {
callback,
window_event_listeners,
menu_event_listeners,
global_shortcut_manager,
@@ -1959,19 +1944,7 @@ fn handle_user_message(
WindowMessage::HideMenu => window.hide_menu(),
WindowMessage::Show => window.set_visible(true),
WindowMessage::Hide => window.set_visible(false),
WindowMessage::Close => {
if let Some(callback) = callback {
on_window_close(
callback,
id,
windows.lock().expect("poisoned webview collection"),
control_flow,
#[cfg(target_os = "linux")]
window_event_listeners,
menu_event_listeners.clone(),
);
}
}
WindowMessage::Close => panic!("cannot handle `WindowMessage::Close` on the main thread"),
WindowMessage::SetDecorations(decorations) => window.set_decorations(decorations),
WindowMessage::SetAlwaysOnTop(always_on_top) => window.set_always_on_top(always_on_top),
WindowMessage::SetSize(size) => {
@@ -2063,55 +2036,47 @@ fn handle_user_message(
}
}
},
Message::CreateWebview(handler, sender) => {
if let Some(event_loop) = event_loop {
match handler(event_loop, web_context) {
Ok(webview) => {
let window_id = webview.inner.window().id();
windows
.lock()
.expect("poisoned webview collection")
.insert(window_id, webview);
sender.send(window_id).unwrap();
}
Err(e) => {
eprintln!("{}", e);
}
}
Message::CreateWebview(handler, sender) => match handler(event_loop, web_context) {
Ok(webview) => {
let window_id = webview.inner.window().id();
windows
.lock()
.expect("poisoned webview collection")
.insert(window_id, webview);
sender.send(window_id).unwrap();
}
}
Err(e) => {
eprintln!("{}", e);
}
},
Message::CreateWindow(handler, sender) => {
if let Some(event_loop) = event_loop {
let (label, builder) = handler();
if let Ok(window) = builder.build(event_loop) {
let window_id = window.id();
let (label, builder) = handler();
if let Ok(window) = builder.build(event_loop) {
let window_id = window.id();
context
.window_event_listeners
.lock()
.unwrap()
.insert(window.id(), WindowEventListenersMap::default());
window_event_listeners
.lock()
.unwrap()
.insert(window.id(), WindowEventListenersMap::default());
context
.menu_event_listeners
.lock()
.unwrap()
.insert(window.id(), WindowMenuEventListeners::default());
menu_event_listeners
.lock()
.unwrap()
.insert(window.id(), WindowMenuEventListeners::default());
let w = Arc::new(window);
let w = Arc::new(window);
windows.lock().expect("poisoned webview collection").insert(
window_id,
WindowWrapper {
label,
inner: WindowHandle::Window(w.clone()),
menu_items: Default::default(),
},
);
sender.send(Ok(Arc::downgrade(&w))).unwrap();
} else {
sender.send(Err(Error::CreateWindow)).unwrap();
}
windows.lock().expect("poisoned webview collection").insert(
window_id,
WindowWrapper {
label,
inner: WindowHandle::Window(w.clone()),
menu_items: Default::default(),
},
);
sender.send(Ok(Arc::downgrade(&w))).unwrap();
} else {
sender.send(Err(Error::CreateWindow)).unwrap();
}
}
@@ -2361,22 +2326,32 @@ fn handle_event_loop(
}
}
Event::UserEvent(message) => {
return handle_user_message(
control_flow,
Some(event_loop),
message,
UserMessageContext {
callback: Some(callback),
if let Message::Window(id, WindowMessage::Close) = message {
on_window_close(
callback,
id,
windows.lock().expect("poisoned webview collection"),
control_flow,
#[cfg(target_os = "linux")]
window_event_listeners,
global_shortcut_manager,
clipboard_manager,
menu_event_listeners,
windows,
#[cfg(feature = "system-tray")]
tray_context,
},
web_context,
)
menu_event_listeners.clone(),
);
} else {
return handle_user_message(
event_loop,
message,
UserMessageContext {
window_event_listeners,
global_shortcut_manager,
clipboard_manager,
menu_event_listeners,
windows,
#[cfg(feature = "system-tray")]
tray_context,
},
web_context,
);
}
}
_ => (),
}
@@ -2515,7 +2490,7 @@ fn to_wry_menu(
fn create_webview(
event_loop: &EventLoopWindowTarget<Message>,
web_context: &WebContextStore,
context: DispatcherContext,
context: Context,
pending: PendingWindow<Wry>,
) -> Result<WindowWrapper> {
#[allow(unused_mut)]
@@ -2617,7 +2592,7 @@ fn create_webview(
/// Create a wry rpc handler from a tauri rpc handler.
fn create_rpc_handler(
context: DispatcherContext,
context: Context,
label: String,
handler: WebviewRpcHandler<Wry>,
) -> Box<dyn Fn(&Window, WryRpcRequest) -> Option<RpcResponse> + 'static> {
@@ -2638,7 +2613,7 @@ fn create_rpc_handler(
/// Create a wry file drop handler from a tauri file drop handler.
fn create_file_drop_handler(
context: DispatcherContext,
context: Context,
label: String,
handler: FileDropHandler<Wry>,
) -> Box<dyn Fn(&Window, WryFileDropEvent) -> bool + 'static> {

View File

@@ -324,13 +324,6 @@ macro_rules! shared_app_impl {
($app: ty) => {
impl<R: Runtime> $app {
/// Creates a new webview window.
///
/// # Panics
///
/// - Panics if the event loop is not running yet, usually when called on the [`setup`](crate::Builder#method.setup) closure.
/// - Panics when called on the main thread, usually on the [`run`](crate::App#method.run) closure.
///
/// You can spawn a task to use the API using [`crate::async_runtime::spawn`] or [`std::thread::spawn`] to prevent the panic.
pub fn create_window<F>(
&self,
label: impl Into<String>,

View File

@@ -155,13 +155,6 @@ impl<R: Runtime> Window<R> {
}
/// Creates a new webview window.
///
/// # Panics
///
/// - Panics if the event loop is not running yet, usually when called on the [`setup`](crate::Builder#method.setup) closure.
/// - Panics when called on the main thread, usually on the [`run`](crate::App#method.run) closure.
///
/// You can spawn a task to use the API using [`crate::async_runtime::spawn`] or [`std::thread::spawn`] to prevent the panic.
pub fn create_window<F>(
&mut self,
label: String,

View File

@@ -359,7 +359,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -569,7 +569,7 @@ dependencies = [
"proc-macro2",
"quote 1.0.9",
"smallvec",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -579,7 +579,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e"
dependencies = [
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -603,7 +603,7 @@ dependencies = [
"proc-macro2",
"quote 1.0.9",
"strsim 0.9.3",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -614,7 +614,7 @@ checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
dependencies = [
"darling_core",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -645,7 +645,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -658,7 +658,7 @@ dependencies = [
"proc-macro2",
"quote 1.0.9",
"rustc_version",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -753,7 +753,7 @@ checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -913,7 +913,7 @@ dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1135,7 +1135,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1246,7 +1246,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1284,7 +1284,7 @@ dependencies = [
"markup5ever",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1464,9 +1464,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.102"
version = "0.2.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103"
checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"
[[package]]
name = "lock_api"
@@ -1546,12 +1546,6 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "memchr"
version = "2.4.1"
@@ -1657,7 +1651,7 @@ dependencies = [
"proc-macro-crate 0.1.5",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1764,7 +1758,7 @@ dependencies = [
"proc-macro-crate 1.1.0",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2012,7 +2006,7 @@ dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2026,7 +2020,7 @@ dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2061,9 +2055,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
version = "0.3.19"
version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
checksum = "7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb"
[[package]]
name = "png"
@@ -2142,7 +2136,7 @@ dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"version_check",
]
@@ -2551,7 +2545,7 @@ checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2573,7 +2567,7 @@ checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2746,7 +2740,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2758,7 +2752,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2774,9 +2768,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.76"
version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84"
checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0"
dependencies = [
"proc-macro2",
"quote 1.0.9",
@@ -2828,7 +2822,7 @@ dependencies = [
[[package]]
name = "tao"
version = "0.5.2"
source = "git+https://github.com/tauri-apps/tao?branch=next#e1e9b61993e18422efa7810a17ed1aaa2000621a"
source = "git+https://github.com/tauri-apps/tao?branch=next#69ee3f1474007c6e6acc20bcfc71ed3f43ca5414"
dependencies = [
"bitflags 1.3.2",
"cairo-rs",
@@ -2980,7 +2974,7 @@ version = "1.0.0-beta.5"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"tauri-codegen",
]
@@ -3098,7 +3092,7 @@ checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -3122,9 +3116,9 @@ dependencies = [
[[package]]
name = "tinyvec"
version = "1.4.0"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5241dd6f21443a3606b432718b166d3cedc962fd4b8bea54a8bc7f514ebda986"
checksum = "f83b2a3d4d9091d0abd7eba4dc2710b1718583bd4d8992e2190720ea38f391f7"
dependencies = [
"tinyvec_macros",
]
@@ -3322,7 +3316,7 @@ dependencies = [
"log",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"wasm-bindgen-shared",
]
@@ -3356,7 +3350,7 @@ checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -3442,7 +3436,7 @@ checksum = "2eba35fdbb8fbc8de7e7479532a356dbbf2754d8a6e9c9fbfa430896cbb1ca89"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -3531,7 +3525,7 @@ version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5566b8c51118769e4a9094a688bf1233a3f36aacbfc78f3b15817fe0b6e0442f"
dependencies = [
"syn 1.0.76",
"syn 1.0.77",
"windows_gen",
"windows_quote",
"windows_reader",
@@ -3610,13 +3604,12 @@ dependencies = [
[[package]]
name = "x11-dl"
version = "2.19.0"
version = "2.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eab1e810da9042813865ebe3477261aa77d1f2241f6be747ef8c0e442bc1fa3"
checksum = "ea26926b4ce81a6f5d9d0f3a0bc401e5a37c6ae14a1bfaa8ff6099ca80038c59"
dependencies = [
"lazy_static",
"libc",
"maybe-uninit",
"pkg-config",
]
@@ -3670,7 +3663,7 @@ dependencies = [
"proc-macro-crate 0.1.5",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -3738,5 +3731,5 @@ dependencies = [
"proc-macro-crate 1.1.0",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]

View File

@@ -341,37 +341,6 @@ dependencies = [
"objc",
]
[[package]]
name = "com"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a30a2b2a013da986dc5cc3eda3d19c0d59d53f835be1b2356eb8d00f000c793"
dependencies = [
"com_macros",
]
[[package]]
name = "com_macros"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7606b05842fea68ddcc89e8053b8860ebcb2a0ba8d6abfe3a148e5d5a8d3f0c1"
dependencies = [
"com_macros_support",
"proc-macro2",
"syn 1.0.76",
]
[[package]]
name = "com_macros_support"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97e9a6d20f4ac8830e309a455d7e9416e65c6af5a97c88c55fbb4c2012e107da"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
]
[[package]]
name = "concurrent-queue"
version = "1.2.2"
@@ -381,6 +350,12 @@ dependencies = [
"cache-padded",
]
[[package]]
name = "const-sha1"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb58b6451e8c2a812ad979ed1d83378caa5e927eef2622017a45f251457c2c9d"
[[package]]
name = "constant_time_eq"
version = "0.1.5"
@@ -542,7 +517,7 @@ dependencies = [
"proc-macro2",
"quote 1.0.9",
"smallvec",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -552,7 +527,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e"
dependencies = [
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -576,7 +551,7 @@ dependencies = [
"proc-macro2",
"quote 1.0.9",
"strsim",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -587,7 +562,7 @@ checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
dependencies = [
"darling_core",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -618,7 +593,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -631,7 +606,7 @@ dependencies = [
"proc-macro2",
"quote 1.0.9",
"rustc_version",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -726,7 +701,7 @@ checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -886,7 +861,7 @@ dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1108,7 +1083,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1219,7 +1194,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1251,7 +1226,7 @@ dependencies = [
"markup5ever",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1421,9 +1396,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.102"
version = "0.2.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103"
checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"
[[package]]
name = "lock_api"
@@ -1503,12 +1478,6 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "memchr"
version = "2.4.1"
@@ -1614,7 +1583,7 @@ dependencies = [
"proc-macro-crate 0.1.5",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1721,7 +1690,7 @@ dependencies = [
"proc-macro-crate 1.1.0",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1963,7 +1932,7 @@ dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -1977,7 +1946,7 @@ dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2012,9 +1981,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
version = "0.3.19"
version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
checksum = "7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb"
[[package]]
name = "png"
@@ -2093,7 +2062,7 @@ dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"version_check",
]
@@ -2502,7 +2471,7 @@ checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2524,7 +2493,7 @@ checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2691,7 +2660,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2703,7 +2672,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -2719,9 +2688,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.76"
version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84"
checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0"
dependencies = [
"proc-macro2",
"quote 1.0.9",
@@ -2773,8 +2742,7 @@ dependencies = [
[[package]]
name = "tao"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aa57de7c282b68f8906278543a724ed8f5a2568f069dd0cc05fc10d1f07036b"
source = "git+https://github.com/tauri-apps/tao?branch=next#69ee3f1474007c6e6acc20bcfc71ed3f43ca5414"
dependencies = [
"bitflags 1.3.2",
"cairo-rs",
@@ -2805,7 +2773,8 @@ dependencies = [
"scopeguard",
"serde",
"unicode-segmentation",
"winapi",
"webview2-com-sys",
"windows",
"x11-dl",
]
@@ -2902,7 +2871,7 @@ version = "1.0.0-beta.5"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"tauri-codegen",
]
@@ -2919,7 +2888,7 @@ dependencies = [
"tauri-utils",
"thiserror",
"uuid",
"winapi",
"webview2-com-sys",
]
[[package]]
@@ -2933,7 +2902,7 @@ dependencies = [
"tauri-runtime",
"tauri-utils",
"uuid",
"winapi",
"webview2-com",
"wry",
]
@@ -2954,19 +2923,6 @@ dependencies = [
"zstd",
]
[[package]]
name = "tauri-webview2"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7685d17e9007618d13f011f916e28a8830c7108c46cf263bd3ab53a19e1a4fc3"
dependencies = [
"com",
"once_cell",
"webview2-sys",
"widestring",
"winapi",
]
[[package]]
name = "tempfile"
version = "3.2.0"
@@ -3015,7 +2971,7 @@ checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -3039,9 +2995,9 @@ dependencies = [
[[package]]
name = "tinyvec"
version = "1.4.0"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5241dd6f21443a3606b432718b166d3cedc962fd4b8bea54a8bc7f514ebda986"
checksum = "f83b2a3d4d9091d0abd7eba4dc2710b1718583bd4d8992e2190720ea38f391f7"
dependencies = [
"tinyvec_macros",
]
@@ -3237,7 +3193,7 @@ dependencies = [
"log",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"wasm-bindgen-shared",
]
@@ -3271,7 +3227,7 @@ checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -3339,13 +3295,38 @@ dependencies = [
]
[[package]]
name = "webview2-sys"
version = "0.1.1"
name = "webview2-com"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24b7889e893ac4c50d7346356be3ce13a85e56512c38b8fde0526559b8012a4c"
checksum = "f2294dee38668da0d71019097dddc6cef525fde7aa4784243dd83f0752e08aa5"
dependencies = [
"com",
"winapi",
"webview2-com-macros",
"webview2-com-sys",
"windows",
]
[[package]]
name = "webview2-com-macros"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eba35fdbb8fbc8de7e7479532a356dbbf2754d8a6e9c9fbfa430896cbb1ca89"
dependencies = [
"proc-macro2",
"quote 1.0.9",
"syn 1.0.77",
]
[[package]]
name = "webview2-com-sys"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14690dcb8b57c5238c4502cfc321f858fa1306edd4109e8e1d7ddee0c29b06a5"
dependencies = [
"regex",
"serde",
"serde_json",
"thiserror",
"windows",
]
[[package]]
@@ -3357,12 +3338,6 @@ dependencies = [
"cc",
]
[[package]]
name = "widestring"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
[[package]]
name = "wildmatch"
version = "1.1.0"
@@ -3400,6 +3375,51 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef84dd25f4c69a271b1bba394532bf400523b43169de21dfc715e8f8e491053d"
dependencies = [
"const-sha1",
"windows_gen",
"windows_macros",
]
[[package]]
name = "windows_gen"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac7bb21b8ff5e801232b72a6ff554b4cc0cef9ed9238188c3ca78fe3968a7e5d"
dependencies = [
"windows_quote",
"windows_reader",
]
[[package]]
name = "windows_macros"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5566b8c51118769e4a9094a688bf1233a3f36aacbfc78f3b15817fe0b6e0442f"
dependencies = [
"syn 1.0.77",
"windows_gen",
"windows_quote",
"windows_reader",
]
[[package]]
name = "windows_quote"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4af8236a9493c38855f95cdd11b38b342512a5df4ee7473cffa828b5ebb0e39c"
[[package]]
name = "windows_reader"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c8d5cf83fb08083438c5c46723e6206b2970da57ce314f80b57724439aaacab"
[[package]]
name = "winres"
version = "0.1.11"
@@ -3434,7 +3454,7 @@ dependencies = [
[[package]]
name = "wry"
version = "0.12.2"
source = "git+https://github.com/tauri-apps/wry?rev=21692d986138570d2edc31f84bddb442a3c84a9c#21692d986138570d2edc31f84bddb442a3c84a9c"
source = "git+https://github.com/tauri-apps/wry?rev=e056fb2a15e29de1b8ed85a548cfeb1f85031357#e056fb2a15e29de1b8ed85a548cfeb1f85031357"
dependencies = [
"cocoa",
"core-graphics 0.22.2",
@@ -3451,24 +3471,22 @@ dependencies = [
"serde",
"serde_json",
"tao",
"tauri-webview2",
"thiserror",
"url",
"webkit2gtk",
"webkit2gtk-sys",
"webview2-sys",
"winapi",
"webview2-com",
"windows",
]
[[package]]
name = "x11-dl"
version = "2.19.0"
version = "2.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eab1e810da9042813865ebe3477261aa77d1f2241f6be747ef8c0e442bc1fa3"
checksum = "ea26926b4ce81a6f5d9d0f3a0bc401e5a37c6ae14a1bfaa8ff6099ca80038c59"
dependencies = [
"lazy_static",
"libc",
"maybe-uninit",
"pkg-config",
]
@@ -3522,7 +3540,7 @@ dependencies = [
"proc-macro-crate 0.1.5",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]
[[package]]
@@ -3590,5 +3608,5 @@ dependencies = [
"proc-macro-crate 1.1.0",
"proc-macro2",
"quote 1.0.9",
"syn 1.0.76",
"syn 1.0.77",
]

View File

@@ -58,9 +58,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
name = "libc"
version = "0.2.102"
version = "0.2.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103"
checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"
[[package]]
name = "num-integer"
@@ -202,9 +202,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.76"
version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84"
checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0"
dependencies = [
"proc-macro2",
"quote",