summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-01-20 14:07:39 +0800
committerBrendan Allan <[email protected]>2026-01-20 14:07:39 +0800
commit8b379329a6dcd0021709e8486c78acaf7bb52a21 (patch)
tree9069073a124b06280b97385327cb00640af152cf /packages/desktop/src
parent68d1755a9ed49b2bbf29964db295817349025563 (diff)
downloadopencode-8b379329a6dcd0021709e8486c78acaf7bb52a21.tar.gz
opencode-8b379329a6dcd0021709e8486c78acaf7bb52a21.zip
fix(desktop): completely disable pinch to zoom
Diffstat (limited to 'packages/desktop/src')
-rw-r--r--packages/desktop/src/index.tsx6
-rw-r--r--packages/desktop/src/webview-zoom.ts31
2 files changed, 32 insertions, 5 deletions
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx
index a06270b13..d6ee121af 100644
--- a/packages/desktop/src/index.tsx
+++ b/packages/desktop/src/index.tsx
@@ -1,4 +1,5 @@
// @refresh reload
+import "./webview-zoom"
import { render } from "solid-js/web"
import { AppBaseProviders, AppInterface, PlatformProvider, Platform } from "@opencode-ai/app"
import { open, save } from "@tauri-apps/plugin-dialog"
@@ -303,11 +304,6 @@ const createPlatform = (password: Accessor<string | null>): Platform => ({
createMenu()
-// Stops mousewheel events from reaching Tauri's pinch-to-zoom handler
-root?.addEventListener("mousewheel", (e) => {
- e.stopPropagation()
-})
-
render(() => {
const [serverPassword, setServerPassword] = createSignal<string | null>(null)
const platform = createPlatform(() => serverPassword())
diff --git a/packages/desktop/src/webview-zoom.ts b/packages/desktop/src/webview-zoom.ts
new file mode 100644
index 000000000..9fa9bb9ed
--- /dev/null
+++ b/packages/desktop/src/webview-zoom.ts
@@ -0,0 +1,31 @@
+// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+import { invoke } from "@tauri-apps/api/core"
+import { type as ostype } from "@tauri-apps/plugin-os"
+
+const OS_NAME = ostype()
+
+let zoomLevel = 1
+
+const MAX_ZOOM_LEVEL = 10
+const MIN_ZOOM_LEVEL = 0.2
+
+window.addEventListener("keydown", (event) => {
+ if (OS_NAME === "macos" ? event.metaKey : event.ctrlKey) {
+ if (event.key === "-") {
+ zoomLevel -= 0.2
+ } else if (event.key === "=" || event.key === "+") {
+ zoomLevel += 0.2
+ } else if (event.key === "0") {
+ zoomLevel = 1
+ } else {
+ return
+ }
+ zoomLevel = Math.min(Math.max(zoomLevel, MIN_ZOOM_LEVEL), MAX_ZOOM_LEVEL)
+ invoke("plugin:webview|set_webview_zoom", {
+ value: zoomLevel,
+ })
+ }
+})