2011-02-27 (日) の 16:03 +0900 に Etsushi Kato さんは書きました:
> 2011/2/27 Hiroyuki Ikezoe <hiike...@gnome.org>:
> > 実際のところ、アプリケーション側からそういう風に強制的にコミットする機
> > 能って必要なんでしょうか? ”本当のリセット”のことも考えると以下の3つの
> > APIが要るんじゃないかと考えてる人がいる気がします。
> >
> > a) gtk_im_context_reset: プリエディット中に呼び出された場合の動作は各IM
> > の実装に任せる
> >
> > b) gtk_im_context_clear_preedit: プリエディット中の状態を初期化(プリエ
> > ディット文字列を削除)
> >
> > c) gtk_im_context_fix_preedit: プリエディット中の文字列をそのままコミッ
> > ト
> >
> > この中で、今のGTK+にはa)しかないわけですが、個人的にはアプリケーションが
> > b)c)を呼び出す必要性がいまいちピンと来ないので(IMのプリエディット中にそ
> > の状態をどうするかはアプリケーションには決められないと思ってるので)、現
> > 状のままでもgtk_im_context_reset時の挙動に関して開発者の間で合意が取れて
> > いれば(GTK+のドキュメントに修正を入れた方がいいかもしれませんが)、今の
> > ままでよいのではないかとも考えています。
> >
> > ただ、2)の場合にもresetが飛んできてしまうので、その点ではGTK+を修正しな
> > くてはいけませんが。
> 
> 
> 前のスレッドのなかのさんの話が、まさしくアプリケーション側 (Firefox) が強制的にプリエディットを消去したい、という話だと思います
> (いくつかの text field がひとつの im context を共有しているため)。

Firefoxの場合はGeckoの実装上の都合でそうなっているだけで、実際にユーザー
がそれでいいのか、IMもそれでいいのかっていうところを知りたいです。

> GTK+ 側も、例えば XIM module では、gtk_im_context_reset
> でプリエディットがあればコミットしてから消去するような動きになっているので、これを期待したアプリケーションでは immodule
> の種類によってはうまく動かないので直してほしい、ということだと思います。
> 
> uim の視点では、GTK+ のように安易に gtk_im_context_reset
> が呼び出されるような状況では、日本語のように長いプリエディットを利用する IM の場合、消去するのは好ましくないという考えのようです。

そうだと思います。

実際にアプリケーション側の勝手な都合でプリエディットを消去してくれという
リクエストが来ることはIMにとっては問題ないのでしょうか?
例えば、先のByeoruの場合でいうと消去するのではなく、コミットしたいIMだと
思うんですが、そういう場合はclear_preeditなるメソッドが呼ばれた時にコ
ミットしちゃうという実装をするのでしょうか?それはすごく気持ち悪いと思い
ます。

-- 
Hiroyuki Ikezoe

-- 
Google Groups "uim-ja" group
uim-ja@googlegroups.com
http://groups.google.com/group/uim-ja/about

メールによる返信