いがらしです。

どうもRubyが1.5になってからRuby/GTKの挙動があやしいと思ったら、
RTEST()の定義変更

-#define RTEST(v) rb_test_false_or_nil((VALUE)(v))
+#define RTEST(v) ((VALUE)(v) & ~Qnil)
 
の影響を受けてたようです。

現状ではRuby 1.4だと
    RTEST(true) == !0 (具体的な値は環境依存)
で、1.5の場合
    RTEST(true) == 2  (たいてい!0とは等しくない)
です。TRUEは大抵の環境では!0ですよね。

一方、GLIBで定義されているgboolean型は、ドキュメントによれば
    Variables of this type should only contain the value TRUE or FALSE.
だそうで。GTK+には gboolean値同士を == で比較している箇所があって
    RTEST(true) == TRUE
が偽になってしまい、誤動作してました。

1.4のrb_test_false_or_nil相当物を用意して代用するしかないですかね。

--
五十嵐  宏  (Hiroshi IGARASHI)