diff options
| author | Chris Yang <[email protected]> | 2026-01-26 17:50:51 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-26 18:50:51 -0600 |
| commit | d9e8b2b65d9fba4b54cb6a7f7d677162335c8e3f (patch) | |
| tree | b3a205cddf3ab7b121029f8bd5c62dd7186893b5 | |
| parent | 7655f51e101b318efe0e6a23e05052b344348a90 (diff) | |
| download | opencode-d9e8b2b65d9fba4b54cb6a7f7d677162335c8e3f.tar.gz opencode-d9e8b2b65d9fba4b54cb6a7f7d677162335c8e3f.zip | |
fix(desktop): disable magnification gestures on macOS (#10605)
| -rw-r--r-- | packages/desktop/src-tauri/Cargo.lock | 2 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/Cargo.toml | 4 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/src/window_customizer.rs | 12 |
3 files changed, 18 insertions, 0 deletions
diff --git a/packages/desktop/src-tauri/Cargo.lock b/packages/desktop/src-tauri/Cargo.lock index a41739a69..294d7ad6c 100644 --- a/packages/desktop/src-tauri/Cargo.lock +++ b/packages/desktop/src-tauri/Cargo.lock @@ -3028,6 +3028,8 @@ dependencies = [ "futures", "gtk", "listeners", + "objc2 0.6.3", + "objc2-web-kit", "reqwest", "semver", "serde", diff --git a/packages/desktop/src-tauri/Cargo.toml b/packages/desktop/src-tauri/Cargo.toml index 6296b8325..b875f928b 100644 --- a/packages/desktop/src-tauri/Cargo.toml +++ b/packages/desktop/src-tauri/Cargo.toml @@ -47,6 +47,10 @@ comrak = { version = "0.50", default-features = false } gtk = "0.18.2" webkit2gtk = "=2.0.1" +[target.'cfg(target_os = "macos")'.dependencies] +objc2 = "0.6" +objc2-web-kit = "0.3" + [target.'cfg(windows)'.dependencies] windows = { version = "0.61", features = [ "Win32_Foundation", diff --git a/packages/desktop/src-tauri/src/window_customizer.rs b/packages/desktop/src-tauri/src/window_customizer.rs index cd42fd029..682f57f24 100644 --- a/packages/desktop/src-tauri/src/window_customizer.rs +++ b/packages/desktop/src-tauri/src/window_customizer.rs @@ -29,6 +29,18 @@ impl<R: Runtime> Plugin<R> for PinchZoomDisablePlugin { gobject_ffi::g_signal_handlers_destroy(data.as_ptr().cast()); } } + + #[cfg(target_os = "macos")] + unsafe { + use objc2::rc::Retained; + use objc2_web_kit::WKWebView; + + // Get the WKWebView pointer and disable magnification gestures + // This prevents Cmd+Ctrl+scroll and pinch-to-zoom from changing the zoom level + let wk_webview: Retained<WKWebView> = + Retained::retain(_webview.inner().cast()).unwrap(); + wk_webview.setAllowsMagnification(false); + } }); } } |
