Red Hat Bugzilla – Bug 566209
If turn off Korean engine, preedit character disappears.
Last modified: 2010-04-09 00:27:25 EDT
Description of problem:
While input Korean or Japanese, if switching input method (English <-> Korea or Japanese), preedit character disappears.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. input Korean or Japanese
2. Switch input method
preedit character disappears.
Cursor move to next location.
Sorry. It is not a bug.
Here is a candidate patch.
Korean user asked to commit the preedit string when the engines are switched because Korean users don't distinguish preedit and committed strings.
It might be good to think this problem again.
Previously I thought to send focus out in ibus-hangul's destroy().
But it seems using events in engine side is too late because it seems some of objects are already destroyed or detached so I think this cannot be fixed in the engine side.
Now I think a setting for the focus-out string.
There are two problems.
- preedit string is not committed for ibus-hangul when the engines are changed.
- preedit string is committed in another focus when the focus is changed and global input method mode is selected.
Talking off line, an engine might select commit or clear (or keep) so we think adding a new API could be one of ideas, likes ibus_engine_update_preedit_text_with_mode().
Revised the patch:
Fixed in ibus-hangul-18.104.22.16800329
ibus-hangul-22.214.171.12400329-1.fc13 has been submitted as an update for Fedora 13.
Although updating ibus-hangul-126.96.36.19900329, ibus-1.3.1-1.fc13, this issue doesn't be fixed.
Did you restart your desktop after upgrade?
(In reply to comment #7)
> Did you restart your desktop after upgrade?
Yes, restart and rebooting again.
(In reply to comment #6)
> Although updating ibus-hangul-188.8.131.5200329, ibus-1.3.1-1.fc13, this issue
> doesn't be fixed.
Hmm.., curious. I confirmed the fix.
The new hangul engine uses libibus.so.2.0.0
% ldd /usr/libexec/ibus-engine-hangul
linux-vdso.so.1 => (0x00007fff6e91f000)
libibus.so.2 => /usr/lib64/libibus.so.2 (0x00000036b3a00000)
% ls -l /usr/lib64/libibus.so.2
lrwxrwxrwx 1 root root 16 2010-04-07 17:03 /usr/lib64/libibus.so.2 -> libibus.so.2.0.0
My test case:
1. Type 'a' with ibus-hangul
2. Switch another engine
The Hangul 'a' is committed.
(In reply to comment #9)
> (In reply to comment #6)
> > Although updating ibus-hangul-184.108.40.20600329, ibus-1.3.1-1.fc13, this issue
> > doesn't be fixed.
> Hmm.., curious. I confirmed the fix.
> The new hangul engine uses libibus.so.2.0.0
> % ldd /usr/libexec/ibus-engine-hangul
> linux-vdso.so.1 => (0x00007fff6e91f000)
> libibus.so.2 => /usr/lib64/libibus.so.2 (0x00000036b3a00000)
> % ls -l /usr/lib64/libibus.so.2
> lrwxrwxrwx 1 root root 16 2010-04-07 17:03 /usr/lib64/libibus.so.2 ->
> My test case:
> 1. Type 'a' with ibus-hangul
> 2. Switch another engine
> The Hangul 'a' is committed.
My test case:
2. Switch another engine (Hangul <-> English )
Using ShortKey (shift + space key or Hangul Key), this issue happens.
(In reply to comment #10)
> My test case:
> 2. Switch another engine (Hangul <-> English )
> Using ShortKey (shift + space key or Hangul Key), this issue happens.
OK, it's a different problem. Actually you didn't switch the engines but you turn on/off Korean engine mode. Hmm.., you should provide the test case.
If I used Ctrl + Space, the problem was not happened.
The current workaround is to disable global input method with 'ibus-setup' command.
(In reply to comment #11)
> The current workaround is to disable global input method with 'ibus-setup'
It's my mistake, I used Ctrl + Space again..
Candidate patch is here:
I attached the fixed binary for x86_64.
It would be nice if you could verify the fix with the test binary.
# mv /usr/bin/ibus-daemon /usr/bin/ibus-daemon.orig
# mv ibus-daemon /usr/bin/.
# chmod 755 /usr/bin/ibus-daemon
ibus-hangul-220.127.116.1100329-1.fc13 has been pushed to the Fedora 13 stable repository. If problems still persist, please make note of it in this bug report.