tauri-apps / tauri

Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
https://tauri.app
Apache License 2.0
84.66k stars 2.55k forks source link

[bug] The touch action does not work correctly on Windows 7 using a capacitive touchscreen #5054

Open JonathanYi2020 opened 2 years ago

JonathanYi2020 commented 2 years ago

Describe the bug

Description The touch action does not work properly on Windows 7 using a capacitive touchscreen. when click some buttons or any other things on the page ,the click event is only triggered after several random touch actions.

i search this issue and find same issue is reported on the wpf which using webview; they got a solution that close the built-in wpf-tablet support,and it will work correctly; this is the link

i want to know how can i do in tauri for same issue ,thank you Version tauri:1.0.4 webwiew:FixedVersionRuntime.102.0.1245.41.x64

Reproduction

1.start the app 2.waiting to the app finish initialize 3.touch the screen to click some button ,like login ,or menu 4.need to click several times and may one will be work

Expected behavior

click one and the click event triggered correctly

Platform and versions

because i just distribute my app to a industrial client and this paltform info is my development computer ,so this is not the real user's pc

Environment › OS: Manjaro 21.3.3 X64 › Node.js: 18.5.0 › npm: 8.13.2 › pnpm: Not installed! › yarn: 1.22.18 › rustup: 1.25.1 › rustc: 1.61.0 › cargo: 1.61.0 › Rust toolchain: 1.61-x86_64-unknown-linux-gnu

Packages › @tauri-apps/cli [NPM]: 1.0.0-rc.14 › @tauri-apps/api [NPM]: 1.0.0-rc.7 › tauri [RUST]: 1.0.5, › tauri-build [RUST]: 1.0.4, › tao [RUST]: 0.12.1, › wry [RUST]: 0.19.0,

App › build-type: bundle › CSP: unset › distDir: ../dist › devPath: http://localhost:3000/ › framework: Vue.js

App directory structure ├─ src-tauri ├─ .vscode ├─ src ├─ dist ├─ .local_history ├─ public ├─ .VSCodeCounter ├─ node_modules └─ .git

Stack trace

No response

Additional context

No response

nothingismagick commented 2 years ago

Would love to hear from @wravery about suggestions for this one - and it probably should be filed in the tao repo, right @amrbashir ?

amrbashir commented 2 years ago

We are not using WPF, we are using raw win32 APIs so we shouldn't be affected by the issue mentioned in the link.

@JonathanYi2020 Can you try this sample Win32_Webview2_Sample.zip and see if it has this issue? It is a pre-compiled webview2 sample from the official webview2 samples repo.

wravery commented 2 years ago

That's pretty much what I would have suggested, but I didn't have a pre-compiled copy of the sample, so this is much better. 👍🏼

The touch input APIs in Windows changed a lot between Windows 7 and 8. It used to be focused on tracking a single touch point for either a stylus or finger from the Tablet PC days. Then Windows 8 was supposed to be touch-first with multi-finger tracking (up to 10 touch points, IIRC), gestures, etc., so the original APIs couldn't handle the added complexity. The WPF workaround seems to indicate that code which supported touch on Windows 7 can interfere with using the more modern APIs in later versions.

I suspect the sample will have the same problem on Windows 7. Windows 7 is old enough that it probably doesn't get much testing with WebView2, let alone with touch screens. If so, then this is a bug that we should report to the WebView2 team, using the sample to eliminate the Tauri dependency. If not, then we need to figure out what the sample is doing to prevent it.