Hiroyuki Komatsu
komat****@taiya*****
2004年 12月 7日 (火) 19:18:01 JST
小松です。 candidate-window-position の件はありがとうございました。 もうひとつお願いがあります。 PRIME では、候補ウインドウに無選択状態という状態があります。 これは、候補ウインドウを開いてはいるけれど、どの候補もハイライト されていないという状態です。PRIME はプリエディット時にも候補ウインドウを 開いていて、その時は候補ウインドウは無選択状態になっています。 で、この無選択状態にするには、Scheme のレベルでは、 im-activate-candidates-selecter だけ呼んで、im-select-candidate を 呼ばない という仕様になっていました。つまり、 (im-activate-candidate-selector context num-of-cands size-of-rows) だけなら無選択状態になり、 (im-activate-candidate-selector context num-of-cands size-of-rows) (im-select-candidate context 0) だと、最初の候補がハイライトされます。 uim/gtk 0.4.5 では、この無選択状態にならないようですので、 修正していただけると助かります。 ざっとソースを読んでみたところ、無選択状態は UIMCandWinGtk.candidate_inex の値が -1 の時に有効になるようです。しかし、gtk/uim-cand-win-gtk.c , uim_cand_win_gtk_set_page (Line:461) の内部で、candidate_inex の値が 0 以下の場合の例外処理が含まれているため、 -1 が 0 に修正されます。 結果、無選択状態にならないようです。 gtk/uim-cand-win-gtk.c: Line 488 if (cwin->display_limit) { if (cwin->candidate_index >= 0) new_index = (new_page * cwin->display_limit) + (cwin->candidate_index % cwin->display_limit); else new_index = new_page * cwin->display_limit; // ← ここ } else { new_index = cwin->candidate_index; } 確証はありません。 -- 小松弘幸 ----------------------- http://taiyaki.org/