cefsharp / cefsharp/CefSharp

WinForms - Enter/Arrow keys not working with DevTool/Popups with MultiThreadedMessageLoop = false

Open
#2,899 7 comments 0 reactions 0 assignees View on GitHub
up-for-grabs winforms
Dominant language
C#
Stars
10.3k
Forks
2.9k
Avg merge
5d 22h
Merged PRs (30d)
4

Description

- **What version of the product are you using?**

Multiple versions:

*CefSharp.MinimalExample* with Nuget package 75.1.142.

But it also reproduces with 69 and 73

- **What architecture x86 or x64?**

x64

- **On what operating system?**

Windows 10

- **Are you using `WinForms`, `WPF` or `OffScreen`?**

WinForms

- **What steps will reproduce the problem?**

I used *CefSharp.MinimalExample.WinForms.csproj* as the base. I added `MultiThreadedMessageLoop = false` and called `Cef.DoMessageLoopWork()` on a timer to enable the integrated message loop.

Here is a branch with the changes: https://github.com/kiewic/CefSharp.MinimalExample/tree/kiewic/devtools-enter-key-integrated-message-loop

Once the modified sample is running:

1. Open DevTools
2. Write a command, for example, `console.log("Hello World")`
3. Press `ENTER` key, but nothing happens, the key is ignored
4. Press `left arrow` or `right arrow` to move the cursor left or right, but the cursor does not move

- **What is the expected output? What do you see instead?**

It is expected that `ENTER` and arrow keys work the same as in the multi-threaded message loop. ENTER key should execute the command, and arrow keys should move the cursor.

- **Please provide any additional information below.**

No exceptions.

Nothing relevant in *debug.log*.

- **Does this problem also occur in the `CEF` Sample Application from http://opensource.spotify.com/cefbuilds/index.html?**

This does not reproduce with `cefclient.exe`. I executed it WITHOUT `--multi-threaded-message-loop`. I tried version: `cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows64_client`

Contributor guide

Open the contributing guide

Research direction

Start with the CefSharp.MinimalExample.WinForms.csproj changes in the linked branch, especially MultiThreadedMessageLoop = false and the timer calling Cef.DoMessageLoopWork(). Run the sample, open DevTools, and reproduce the Enter and arrow-key failures; compare behavior with the multi-threaded loop and cefclient.exe. Done means both key types work in the integrated message loop.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.