稲地といいます。
ruby-list には初めてです。よろしくお願いします。

----- Original Message -----
送信者 : Kazunori Akaishi <akaishi / master.cjn.ad.jp>
宛先 : ruby mailing list <ruby-list / netlab.co.jp>
送信日時 : 1999年7月2日 14:04
件名 : [ruby-list:15196] Re: Gtk::Menuの使い方に関する質問


> akaishi です。
>
> From: Hiroshi Igarashi <igarashi / ueda.info.waseda.ac.jp>
> Subject: [ruby-list:15195] Re: Gtk::Menu の使い方に関する質問
> Date: Fri, 2 Jul 1999 13:42:20 +0900
>
> > > しかしTEST ボタンを押すとき、目に見えているのはメニューではなくてオプ
ショ
> > > ンメニュー(のみ)です。そしてどうやらラベルはメニューアイテムではなく
(一
> > > 時的に)オプションメニューに親がすげかえられている(?)ようです。
> >
> > このへん、私も昨晩GTK+のソースを見て確認しました。
> > 一瞬Ruby/GTKのバグかと思いましたが、そうではないようです。
> > #GTK+にNULLが渡ってしまうのはやっぱりバグか。
>
> MenuItem の child がとれないことの説明は上記で良いとして、
>
> > 宮木さんのスクリプトを上記のように書き換えた場合、
> > opt.childrenは要素数1のArray [false]を返します。
> > これは変ですね。Ruby/GTKのバグかもしれません。調べてみます。
>
> 自分のところでは動いているのになんでやー、と思って調べたところ、事前に
> MenuItem の child を参照しているかしていないかで挙動が異なるようです。
> 例えば、
>
> ['Item1','Item2','Item3'].each{|text|
>   menuitem = Gtk::MenuItem.new(text)
>   menuitem.child                       # この行を追加
>   menu.append menuitem
>   menuitem.show
> }
>
> このようにしてやると、opt.children がちゃんと参照できます。
> # Gtk+ の中で何らかの最適化機構が働いているのかも。

このへんの原因はなんとなくわかってきたので、
後で ruby-ext に報告しておきます。

とりあえずは、OptionMenu は Bin から派生しているので
children でなく child で取り出すようにしてもらえればよいと
思います。

---
稲地 稔 (e-mail: inachi / earth.interq.or.jp)