詳細は忘れてしまいましたが、gtk_im_context_reset() の問題については、
このあたりhttp://lists.freedesktop.org/archives/uim/2006-November/001627.html
を参考にしてみてください (非常にわかりにくいとは思いますが)。

http://library.gnome.org/devel/gtk/stable/GtkIMContext.html#gtk-im-context-reset
にあるとおり、gtk_im_context_reset() は
Notify the input method that a change such as a change in cursor
position has been made. This will typically cause the input method to
clear the preedit state.
と、典型的には clear が求められますが、cursor position change 時の挙動は
各言語の IM 依存と考えられます。

ということで、GTK+ では、cursor move と本当の reset が区別
されていないので、各言語の IM で求められる挙動対応するために、
uim では以下のように扱っています (以下の説明が正確かどうかは
忘れてしまったのでちょっと不確実ですが)。

* フォーカスされている GtkIMContext内での gtk_im_context_reset(): カーソルの移動と仮定
* それ以外: 本当のリセット

カーソルの移動時の挙動は、uim 内の各 IM に依存します。
* Byeoru (ハングル) の場合、入力中のプリエディットは確定されます。
* 日本語 IM の場合は、プリエディットの relocation をします。

ということで、アプリケーションが確実にプリエディットを確定したい
のであれば、そのように commit を送るのがよいでしょう。


2010/1/8 masayuki nakano <[email protected]>:
> Mozilla Japanの中野です。
>
> はじめまして。よろしくお願いします。
>
> 私自身はuimではテストできていないのですが、uimを利用していた方から、Firefoxのエディタ上に未確定文字列がある状態でクリックしても文
> 字列が確定されない、という報告を受けています(報告された方はDebian sidでテストされたそうです)。この現象は現在のところ、uimと
> iBusでしか確認されていないので、これらのIMの問題ではないかとの推測からこちらへ来ました。
>
> Firefox等、Mozilla関連のプロダクトの共有コアであるGeckoでは、トップレベルのウインドウごとにIMのコンテキストを生成し、ウイ
> ンドウ内の全ての子ウィジット、そしてその中に生成されるエディタ(<input>や<textarea>、
> contentediable="true"な要素等)間でそれを共有するようになっています。
>
> Geckoの実装の都合や、他のプラットフォームとの挙動の統一のため、現在はエディタ間、あるいはウィジット間でフォーカス移動が発生した場合や、エ
> ディタ内でクリックした場合に未確定文字列が存在する場合、これを強制的に確定し、処理を簡略化しています。このために
> gtk_im_context_reset()を利用しているのですが、これがどうもuimでは機能していないのではないか、と疑っています。
>
> 実際にこの現象をテストするには、Firefox3.5.xか、3.6の開発版、もしくはtrunk buildで、
> 1. 検索バー等にフォーカスを移動
> 2. IMで適当に文字を入力
> 3. そのエディタ内でクリック
> 4. スペースキー等で変換
> を行ってみてください。見た目では確定しますが、4の時点で、変換は続行されてしまい、IMがresetされていないことが確認できるかと思います。
>
> この問題が、uimの実装によるものなのか、どうなのか、どなたか分かりますでしょうか?
>
> ではよろしくお願いします。
>
> See also: https://dev.mozilla.jp/2010/01/gtk_im_context_reset_not_working/
>
> --
> Masayuki Nakano <[email protected]>
> Manager, Internationalization, Mozilla Japan.
>
> --
> Google Groups "uim-ja" group
> [email protected]
> http://groups.google.com/group/uim-ja/about
>



-- 
Etsushi Kato
[email protected]
-- 
Google Groups "uim-ja" group
[email protected]
http://groups.google.com/group/uim-ja/about

メールによる返信