CefView / QCefView

A Qt Widget encapsulated CEF view based on QWidget
https://cefview.github.io/QCefView/
GNU Lesser General Public License v2.1
533 stars 139 forks source link

[BUG]: 在Linux下 NCW 模式下无法输入中文问题。 #363

Open ravenq opened 9 months ago

ravenq commented 9 months ago

Describe the bug 【Bug描述】

... 在Linux下 NCW 模式下无法输入中文问题。

To Reproduce 【复现步骤】

在Linux下 NCW 模式下无法输入中文,原因是开启了多线程消息循环 multi-thread-message-loop(看了很多issue 感觉是CEF 消息循环没有输入法环境的问题,但是这个这个问题在CEF社区很多年了一直没解决)

但是经测试,不使用多线程消息循环 + QT Application::exec() 消息循环,则无法显示页面,如下:

image

如果,不使用多线程消息循环 + CEF 自身的消息循环CefRunMessageLoop() 则页面可以渲染,但是QT 相关的都行都不渲染了。甚至关闭按钮都失效了(感觉像CEF消息循环没有投递到QT环境?) 注意:下图左边是QT渲染部分

image

Expected behavior 【正确的预期行为】

...

Screenshots 【截图】

...

Environment 【BUG产生的环境】

Additional context 【更多额外信息】

搜狗输入法和统信自带的输入法效果都一样,当前没有ubutun资源,改天我试试ubuntu下会如何

...

ravenq commented 9 months ago

相关bug #20 #291 #262

https://github.com/chromiumembedded/cef/issues/3474 https://github.com/chromiumembedded/cef/issues/1813 https://github.com/chromiumembedded/cef/issues/2039 https://github.com/ONLYOFFICE/DesktopEditors/issues/8

ravenq commented 8 months ago

用 external_message_loop 模式能解决这个问题

tishion commented 4 months ago

用 external_message_loop 模式能解决这个问题

@L-Super 可以尝试改变一下线程模式,目前只有macOS使用了external_message_loop模型。 我有空也尝试改造一下

L-Super commented 4 months ago

用 external_message_loop 模式能解决这个问题

@L-Super 可以尝试改变一下线程模式,目前只有macOS使用了external_message_loop模型。 我有空也尝试改造一下

OK