稲地といいます。 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)