かんだです。
  以前流した ruby-gtk パッチの debug と追加です。
  -c を付け忘れたみたいで、位置が分からないかもしれません。
    ary_push(...) は、signal_setup_args() の "size_request" のところです。
    return(make_gdkcolor(color)) は、DEFINE_STYLE_SET_COLOR マクロです。

  signal_setup_args() で size_request の部分を GtkRequisition のコピーでな
く、そのまま Data_Wrap_Struct しています。これは以下の理由です。
  何か間違ってないか確認下さい。
# markはよく分かってないです。

  ・signal_setup_args() は GTK signal の処理関数を Ruby のブロックとして割
   り当てた場合に、gtk のオブジェクトを Ruby のオブジェクトに変換するために
   使われる。

  ・size_request signal は名前の通り、widget に必要なサイズを聞く為に使われ
   るものであって、width, height を受け取る必要がある。その受け渡しは引数
   として与える GtkRequisition* のメンバを変更することで実現される。

  ・以上から、size_request で GtkRequisition をコピーしてしまっては正しく
   結果が渡されない。ゆえに、GtkRequisition をそのまま Ruby 側に渡さなけれ
   ばならない。

  ・この場合のオブジェクトは C でいう const でのポインタ引数と同じようなも
   のだから、GC しないようにする必要がある。だが、そもそもの引数 Requisition
   の生成が C なのか Ruby なのか分からないので mark は使えない(?)
    単純に、何もしない関数を free として Data_Wrap_Struct に渡すことにする。

------------------------------------------------------------------------------
1186a1187
> static void nonfree(void *p) { }
1205c1206,1208
< 	    ary_push(args, make_grequisition(GTK_VALUE_POINTER(params[0])));
---
> 	  /* ary_push(args, make_grequisition(GTK_VALUE_POINTER(params[0]))); */
>         ary_push(args, Data_Wrap_Struct(gRequisition, 0, nonfree,
>                                         GTK_VALUE_POINTER(params[0])));
5826c5829
<   return(make_gdkcolor(*color)); \
---
>   return(make_gdkcolor(color)); \
6074a6078,6085
> static VALUE grequisition_new(VALUE self, VALUE w, VALUE h)
> {
>   GtkRequisition r;
> 
>   r.width = NUM2INT(w);
>   r.height = NUM2INT(h);
>   return make_grequisition(&r);
> }
7317c7328
<     rb_define_method(gStyle, "set_background", style_set_background, 1);
---
>     rb_define_method(gStyle, "set_background", style_set_background, 2);
7362a7374
>     rb_define_singleton_method(gRequisition, "new", grequisition_new, 2);
------------------------------------------------------------------------------