TOKUNAGA Hiroyuki
tkng****@xem*****
2004年 1月 12日 (月) 02:11:41 JST
On Mon, 12 Jan 2004 00:58:39 +0900 (JST) Kouhei Sutou <kou****@cozmi*****> wrote: > Sodipodi的には(1)->(3)の順序で実行されることを想定しているよ > うですが,uimと一緒に使うことにより(2)->(3)->(1)という順序で > 実行されてしまうようです. > # 試しにuim_key_snoopでuim_press_keyが実行される前に > # p g_signal_emit_by_name(grab_widget, "key_press_event", key) > # としてやると(1)->(2)->(3)と実行されてうまくいきました. > > これはSodipodiの作り方が悪いのですか? key_snooperを使うuimのやりかたははっきりいって行儀がよくないです。(そ もそも、snooperはInput Methodのために用意されているものではないと、メン テナのOwen Taylorが書いてます。) しかし、それとは別に、SodipodiのGDK_KEY_PRESSが発生した時点でテキスト の初期化をするというやりかたはよくありません。そのやりかたは音声入力や文 字コード表などからの入力を考慮していないからです。 というわけで、preedit_changedシグナルが発生した場合にテキストが初期化 されていなければ初期化するというチェックを追加するか、最初からテキストを 初期化しておくかといった形で、Sodipodi側になんらかの修正が必要だとおもい ます。uim側としては現在のアプリケーションがsodipodiであるかどうかを認識 してsnooperの使用をやめるという事も可能ではありますが、それよりは Sodipodi側をなんとかする方が簡単な気がします。 -- 徳永拓之