Hi Scott,

I think its a regression in LyX code. Although the Qt version is different, the code in 2.3.x branch correctly returns the position of the caret in `GuiWorkArea::inputMethodQuery`. However in 2.4.x branch, it returns `im_cursor_rect_` which is only updated when preedit is enabled.

Allan Chain


On 2024-04-06 11:01 AM, lyx-devel-requ...@lists.lyx.org wrote:
On Thu, Mar 21, 2024 at 11:31:35AM GMT, Allan Chain wrote:
Hello, LyX developers!

I'm trying out LyX 2.4.0-rc3 (qt6) on KDE6+Wayland, and I'm using fcitx5 to
input CJK characters. I found that the candidate window of the input method
is always on the top left corner of the window, regardless of the cursor
position. I think it's a regression since 2.3.7 does not have such problem.

After looking into the source code, I found that the position hint
(Qt::ImCursorRectangle) is only updated when preedit is enabled. Although
enabling preedit eases the problem, the experience is still not very smooth.
Specifically, when the position of the cursor is changed, for example by
clicking, the position hint for the candidate window is not immediately
updated, and thus the candidate window pops up in a wrong position. Only
after some keystrokes triggering preedit event that the position of the
candidate window is correctly updated.

I'm not familiar with LyX codebase, but in my opinion, a better solution is
to update the position hint for the input method every time the cursor
position changes.

I'm happy to provide more information to help fixing this.
Hi Allan,

Thanks a lot for reaching out to the list! I don't know anything about
this code, but I did want to bump this email thread so maybe someone
more knowledgeable has an idea.

One question though: are you sure it's a regression in the LyX code?
Could it be differences in the Qt library that the binaries use that is
the real reason, or are the Qt versions the same?

Scott
-- 
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to