[Anthy-dev 1467] [uim] 候補ウインドウの無選択状態

Back to archive index

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/




Anthy-dev メーリングリストの案内
Back to archive index