From 4b71e80636b4be082b1e3d1a5c60ac275adff48f Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Wed, 10 Jun 2026 10:05:49 -0400 Subject: [PATCH] fix(windows): call with_webview on built window, import COREWEBVIEW2_PERMISSION_KIND type with_webview is on WebviewWindow (the built window), not WebviewWindowBuilder. Also import COREWEBVIEW2_PERMISSION_KIND as a type for the out-param zero-init. Co-Authored-By: Claude Sonnet 4.6 --- src-tauri/src/lib.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index acd7de7..0c19b24 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -26,21 +26,22 @@ pub fn run() { }; let app_handle = app.handle().clone(); - let builder = WebviewWindowBuilder::new(app, "main".to_string(), window_url) + let window = WebviewWindowBuilder::new(app, "main".to_string(), window_url) .title("Cinny") .disable_drag_drop_handler() .on_new_window(move |url, _features| { let _ = app_handle.opener().open_url(url.as_str(), None::<&str>); NewWindowResponse::Deny - }); + }) + .build()?; // Grant camera and microphone to WebView2 automatically. - // Windows requires an explicit PermissionRequested COM event handler; - // macOS uses Info.plist. + // Windows requires an explicit PermissionRequested COM event handler. #[cfg(target_os = "windows")] - let builder = builder.with_webview(|webview| { + window.with_webview(|webview| { use webview2_com::{ Microsoft::Web::WebView2::Win32::{ + COREWEBVIEW2_PERMISSION_KIND, COREWEBVIEW2_PERMISSION_KIND_CAMERA, COREWEBVIEW2_PERMISSION_KIND_MICROPHONE, COREWEBVIEW2_PERMISSION_STATE_ALLOW, @@ -53,7 +54,6 @@ pub fn run() { let handler = PermissionRequestedEventHandler::create(Box::new( |_sender, args| { if let Some(args) = args { - // PermissionKind uses a COM out-param pattern let mut kind = COREWEBVIEW2_PERMISSION_KIND(0); unsafe { args.PermissionKind(&mut kind) }?; if kind == COREWEBVIEW2_PERMISSION_KIND_MICROPHONE @@ -70,9 +70,8 @@ pub fn run() { let mut token = Default::default(); let _ = unsafe { core.add_PermissionRequested(&handler, &mut token) }; } - }); + })?; - builder.build()?; Ok(()) }) .run(context)