From: NAGAI Hidetoshi Date: 1998-06-17T15:04:33+09:00 Subject: [ruby-dev:2892] Re: TkMenu's bug 永井@知能.九工大です. >>>>> "M" == Yukihiro Matsumoto writes: M> In message "[ruby-dev:2890] Re: TkMenu's bug" M> on 98/06/17, NAGAI Hidetoshi writes: M> |上記の場合の proc では @id.path は必要ありませんでした. M> |ですが,やはり install_cmd というか,TkCore.callback での対処は M> |必要なようです. M> そうですか.たとえば M> def TkCore.callback(arg) M> arg = Array(tk_split_list(arg)) M> _get_eval_string(TkUtil.eval_cmd(Tk_CMDTBL[arg.shift], *arg)) M> end M> のような変更が有効かもしれません.が,これだけでは足りなくて M> 後2箇所ほど変更が必要のようです(eval.cとtcltklib.cそれぞれ). そうですか.変更をお願いできますでしょうか? M> こういう感じにしてみました.`,'による文字列での指定と配列で M> の指定の両方が可能です. M> def _bind(path, context, cmd, args=nil) M> context = context.split(",") if /,/ =~ context M> context = context.join('><') if context.kind_of? Array M> id = install_bind(cmd, args) M> begin M> tk_call 'bind', path, "<#{context}>", id M> rescue M> uninstall_cmd(id) M> fail M> end M> end これですと,context に配列を指定した場合, 頭の正規表現との比較の部分で TypeError をだすのではないでしょうか? -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp