Takashi Iwai
私の環境のKWordを使って、"Text Oriented"とかいうやつで 試したところ、over the spotだとプリエディットの表示までは できますが、確定はできないようです。
すみませんん、舌足らずでした。 そう、preedit は表示されるけど、確定後に消え去る、という状況ですね。
もちろん(?)、on the spotだと全く表示されません。
まだソースは見れていないんですけど、on the spotの 方は、必要な関数が全く実装されていないのでしょう。 over the spotについては、keyEventのフィルタのところで、 イベントに付加されるテキストを正しく扱ってくれていないのでしょうね。
ところが、qt-immodule パッチなしだと over-the-spot で一応動くので、 当てずっぽうですが、パッチで除去された XIM の初期化部分が問題になって いるのかも。
もう一度動作させて、ログを見て思い出しました。。。
原因は、qt-immoduleパッチを当てた場合には、
コミットは必ずQIMEventを使って行う
ようになっていることにあります。
オリジナルのコードでは、on the spot以外の場合は、
QKeyEventを使っていました。
なので、KWordのimEndEvent()(http://doc.trolltech.com/3.3/qwidget.html#imEndEvent)
を実装しないとコミットができないことになります。
Operaはソースないので分かりませんが、
imEndEvent() だけは実装されているのかもしれません。
なぜこのような構造になったかといいますと、
どうしてもXIMの処理を局所化したかったのですが、
QKeyEventを使うと非常に難しかったんです。
ちょっと時間がないうえに、要議論なものが
immodule-qt@freedesktop.org で溜まってしまっているので、
余力ができたら、QKeyEventでコミットできるように
対応検討してみようかと思います。
ただ、一度断念していますので、
実際にどうなるかは、分かりません。
--
Daisuke Kameda