dellinです。村木さんレスありがとうございます。

この問題は元のgtk+のライブラリがコールバック関数の第一
引数にメニューアイテムへのポインタではなく、NULLを返し
てくるので、修正は難しそうですね。(1.2.8で確認)

>Gtk::MenuItemが前のアイテムと新しく選択されたアイテムの
>2回呼ばれるのには、僕も悩まされていて、とりあえずスクリプト中で
>
>item.signal_connect("toggled") do |mnu|
>   行ないたい処理 if mnu.active?
>end
>
>として、アクティブになったアイテムか非アクティブになった
>アイテムかを判断するようにしています。

ただ、Cでの実装だとCのチュートリアルでやってみると2回
呼ばれることはないため、

解決策 1 本家gtk+にMenuItemへのポインタを返してもらうよう
     お願いする。

解決策 2 なぜ2回呼ばれるのか、原因を究明する。

のいずれかになりますね。

ただ1はちょっと個人的に(^^;困難なので…
2の現象がどうしておきるのか、情報お願いします。

>こんなんでお役に立てるでしょうか?(^_^;

ちなみに、それ以外の対策も考えたのですが、MenuItemのポイン
タが簡単には手に入りそうにもないので断念しました。でも、情
報ありがとうございます。
(ポインタ返してくれれば、この考え方でできるのですが。)

# Menuとかたどっていけばポインタをつかめるのかもしれないけ
# ど、それだとItemFactory使ってるメリットがないから×。

じゃぁ、おやすみなさい〜

------------------------------------------------------------
dellin  Email dellin / thekeyboard.com
        WWW   http://www.din.or.jp/~ogu/