Skip to content

feat(im-candidate-panel): support tag-based and xprop-based IM candidate panel#948

Merged
zccrs merged 3 commits into
linuxdeepin:masterfrom
glyvut:feat/im-popup
Jun 18, 2026
Merged

feat(im-candidate-panel): support tag-based and xprop-based IM candidate panel#948
zccrs merged 3 commits into
linuxdeepin:masterfrom
glyvut:feat/im-popup

Conversation

@glyvut

@glyvut glyvut commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Support IM candidate panel detection via two paths:

  • XWayland: reads _DEEPIN_IM_CANDIDATE_PANEL xprop via XCB
  • Wayland native: detects via xdg-toplevel-tag protocol

Windows with IM candidate panel attributes get the same behavior as inputPopup: no decoration, no focus stealing, no window animation, visible across all workspaces, positioned near text input cursor.

Log: 支持基于 tag 和 xprop 的输入法候选面板检测
Influence: 具有 IM 候选面板属性的窗口获得与 inputPopup 一致的行为

@deepin-ci-robot

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @glyvut, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@glyvut glyvut marked this pull request as ready for review June 9, 2026 05:15

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @glyvut, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@glyvut glyvut marked this pull request as draft June 9, 2026 08:15
@glyvut glyvut force-pushed the feat/im-popup branch 5 times, most recently from 1b9abb4 to ea492c8 Compare June 10, 2026 05:40
@glyvut glyvut marked this pull request as ready for review June 10, 2026 05:57

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @glyvut, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: asterwyx, glyvut

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread src/core/imcandidatepanelmanager.cpp Outdated
@glyvut glyvut marked this pull request as draft June 12, 2026 07:31
@glyvut glyvut force-pushed the feat/im-popup branch 2 times, most recently from ed34f94 to 6c77ae4 Compare June 12, 2026 08:00
@deepin-bot

deepin-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

TAG Bot

New tag: 0.8.9
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #980

@deepin-bot

deepin-bot Bot commented Jun 15, 2026

Copy link
Copy Markdown

TAG Bot

New tag: 0.8.10
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #983

@glyvut glyvut force-pushed the feat/im-popup branch 2 times, most recently from 1235f2c to f70eb7c Compare June 16, 2026 11:40
@glyvut glyvut marked this pull request as ready for review June 16, 2026 11:41

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @glyvut, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@glyvut glyvut requested a review from zccrs June 16, 2026 11:41
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.h Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp Outdated
Comment thread waylib/src/server/protocols/wxwayland.cpp
@deepin-bot

deepin-bot Bot commented Jun 17, 2026

Copy link
Copy Markdown

TAG Bot

New tag: 0.8.11
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #999

@glyvut glyvut force-pushed the feat/im-popup branch 4 times, most recently from 9f88166 to 11e0b41 Compare June 18, 2026 05:03
@glyvut glyvut requested a review from zccrs June 18, 2026 05:14
@LFRon

LFRon commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

这个补丁我刚刚测试了应该有问题, 可以用Xwayland启动的QQ试一下, 启动之后应该会没有任何动画地出现QQ窗口, 而且无法被点击

@glyvut

glyvut commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

这个补丁我刚刚测试了应该有问题, 可以用Xwayland启动的QQ试一下, 启动之后应该会没有任何动画地出现QQ窗口, 而且无法被点击

未复现,动画倒是有时候有问题

@zccrs

zccrs commented Jun 18, 2026

Copy link
Copy Markdown
Member

这个补丁我刚刚测试了应该有问题, 可以用Xwayland启动的QQ试一下, 启动之后应该会没有任何动画地出现QQ窗口, 而且无法被点击

你那里是稳定出问题吗?

@LFRon

LFRon commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

这个补丁我刚刚测试了应该有问题, 可以用Xwayland启动的QQ试一下, 启动之后应该会没有任何动画地出现QQ窗口, 而且无法被点击

你那里是稳定出问题吗?

不是稳定性的问题, 是QQ打开后整个窗口直接无法响应任何点击行为, 没有复现的话我重新合并一次试试

@zccrs

zccrs commented Jun 18, 2026

Copy link
Copy Markdown
Member

这个补丁我刚刚测试了应该有问题, 可以用Xwayland启动的QQ试一下, 启动之后应该会没有任何动画地出现QQ窗口, 而且无法被点击

你那里是稳定出问题吗?

不是稳定性的问题, 是QQ打开后整个窗口直接无法响应任何点击行为, 没有复现的话我重新合并一次试试

那应该不是这个提交导致的,可以关注下

@LFRon

LFRon commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

这个补丁我刚刚测试了应该有问题, 可以用Xwayland启动的QQ试一下, 启动之后应该会没有任何动画地出现QQ窗口, 而且无法被点击

你那里是稳定出问题吗?

不是稳定性的问题, 是QQ打开后整个窗口直接无法响应任何点击行为, 没有复现的话我重新合并一次试试

那应该不是这个提交导致的,可以关注下

是的, 抱歉我搞错了, 我重新编译测试了一遍, Xwayland窗口是能点击的, 就是动画有问题, 比如QQ主体窗口打开时没有任何动画

@LFRon

LFRon commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

我刚才试了一下, 比如打开多个Xwayland窗口后, 点击行为无法正确聚焦当前窗口的问题遇到了嘛

b1bba46a3959771285378ded4ad4f911.mp4
d62fcbd850b8b13a786cb63e25bb32bb.mp4

我用的代码库是: https://github.com/LFRon/treeland-fix/tree/master-merge-im-popup

@glyvut

glyvut commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

我刚才试了一下, 比如打开多个Xwayland窗口后, 点击行为无法正确聚焦当前窗口的问题遇到了嘛

这个确实有问题

@glyvut glyvut marked this pull request as draft June 18, 2026 07:54
@glyvut glyvut marked this pull request as ready for review June 18, 2026 08:41

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @glyvut, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

zccrs
zccrs previously approved these changes Jun 18, 2026
glyvut added 2 commits June 18, 2026 16:54
…ate panel

Support IM candidate panel detection via two paths:
- XWayland: reads _DEEPIN_IM_CANDIDATE_PANEL xprop via XCB
- Wayland native: detects via xdg-toplevel-tag protocol

Windows with IM candidate panel attributes get the same behavior
as inputPopup: no decoration, no focus stealing, no window
animation, visible across all workspaces, positioned near text
input cursor.

Log: 支持基于 tag 和 xprop 的输入法候选面板检测
Influence: 具有 IM 候选面板属性的窗口获得与 inputPopup 一致的行为
Add two test clients for IM candidate panel identification:
- test_im_candidate_panel_tag: pure C Wayland client
- test_im_candidate_panel_xprop: Qt client that sets
  _DEEPIN_IM_CANDIDATE_PANEL X11 property

添加两个 IM 候选面板测试客户端:
- test_im_candidate_panel_tag:纯 C Wayland 客户端
- test_im_candidate_panel_xprop:Qt 客户端

Log: 添加 IM 候选面板测试客户端
Influence: 无
Implement non-blocking X11 property reads via xcb_get_property_unchecked.
Poll replies in xwayland_user_event_handler after wlroots reads events,
with per-window timer as fallback.

使用 xcb_get_property_unchecked 实现非阻塞 X11 属性读取,
在 xwayland_user_event_handler 中轮询 reply,timer 作为兜底。

Log: 实现异步 X11 属性读取,避免阻塞主线程
Influence: XWayland 窗口属性读取不再阻塞主线程,IM candidate panel 检测正常工作
@zccrs zccrs merged commit f6774c2 into linuxdeepin:master Jun 18, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants