QCefView
QCefView copied to clipboard
[BUG]: 在Linux下 NCW 模式下无法输入中文问题。
Describe the bug 【Bug描述】
... 在Linux下 NCW 模式下无法输入中文问题。
To Reproduce 【复现步骤】
在Linux下 NCW 模式下无法输入中文,原因是开启了多线程消息循环 multi-thread-message-loop(看了很多issue 感觉是CEF 消息循环没有输入法环境的问题,但是这个这个问题在CEF社区很多年了一直没解决)
但是经测试,不使用多线程消息循环 + QT Application::exec() 消息循环,则无法显示页面,如下:
如果,不使用多线程消息循环 + CEF 自身的消息循环CefRunMessageLoop() 则页面可以渲染,但是QT 相关的都行都不渲染了。甚至关闭按钮都失效了(感觉像CEF消息循环没有投递到QT环境?) 注意:下图左边是QT渲染部分
Expected behavior 【正确的预期行为】
...
Screenshots 【截图】
...
Environment 【BUG产生的环境】
- OSR/NCW Mode: NCW
- OS & Version: [e.g. Windows/macOS/Linux] Linux 统信UOS专业版
- Qt Version: qt5.11.3
- CEF Version: 102 113 120 119
Additional context 【更多额外信息】
搜狗输入法和统信自带的输入法效果都一样,当前没有ubutun资源,改天我试试ubuntu下会如何
...
相关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
用 external_message_loop 模式能解决这个问题
用 external_message_loop 模式能解决这个问题
@L-Super 可以尝试改变一下线程模式,目前只有macOS使用了external_message_loop模型。 我有空也尝试改造一下
用 external_message_loop 模式能解决这个问题
@L-Super 可以尝试改变一下线程模式,目前只有macOS使用了external_message_loop模型。 我有空也尝试改造一下
OK
linux下换成external_message_loop,cpu占用100%。
好像还真是,大佬们有啥办法不
同样的问题(Linux & CEF102版本): 1.multi-thread-message-loop=true,无法切换输入法、上传、下载文件无法唤起系统原生窗口; 2.external_message_loop=true,可以切换输入法、上传、下载文件可唤起系统原生窗口,cpu占用100%。 求解决方案
https://github.com/CefView/QCefView/commit/660a45ad15bf96e2b552bb1b03aacdd5d9cc34bf
这个应该修复了,100%是因为之前的测试代码使用的是interval是0,忘了改回来。