Kouhei Sutou
kou****@cozmi*****
2004年 1月 12日 (月) 00:58:39 JST
はじめまして,須藤と申します. Sodipodiでuimを使うと,テキストを入力した時点でSodipodiが終 了します. gdbで追ってみたところ,以下のようになっているようです. (1) SodipodiはGDK_KEY_PRESSイベントが発生した時にテキスト の初期化をしているようだ. (2) uimはuim_key_snoopでアプリケーションがGDK_KEY_PRESSイ ベントを扱う前に"preedit_changed"シグナルを発生させる ようだ. (3) Sodipodiは"preedit_changed"シグナルが発生したらテキス トを挿入したりアンドゥリストをいじったりしているようだ. 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の作り方が悪いのですか? # im-jaはfilter_keypressでシグナルを発生させているのでこの問 # 題は発生していないようです.