もりきゅうです。ひとりぼけ,ひとりつっこみ。

>Xlib::VisualInfo と Xlib::Visual を分けちゃえばいいですね。
いや,全然ちゃうな。^^;;;
XVisualInfo と *XVisualInfo なわけだ。
Xlib::Visual は XVisualInfo のラッパーなんだし(ややこしい名前にしたもんだ)。

Display の visuals は変化しないだろうから,
Display.new で display.visuals を生成して,
visuals の free は Display に任せることにしよう。

というわけで 0.6.9 を RAA に置きます。
変更点は次の通り。
--
case Xlib::VERSION

when 0.6.8
  see display.c

  Display.visuals を disp->visual という内部形式にした。
  thanx for report: yashi <yashi / yashi.com>

  see attr.h, gc.c

  attr set は nil を返していた。設定した値をそのまま返すようにし
  た。 foo.x = foo.y = bar.y = 0 などと書ける。

  see Window.event, Window.events

  イベントコールバックは 1 イベントにつき proc ひとつだけ指定でき
  た。同じイベント名に対しては既存の proc は上書きされていたわけ
  である。

  これを複数のイベントコールバックを保存し,実行するようにした。
  Window.events はメソッド名の ID をキーとし,コールバック proc
  の配列を値に持つハッシュを返す。この配列を操作することで,イベ
  ントに対して呼び出す proc を取り消したり,追加したりできるよう
  になった。

end
--

----
Kazuhiro Yoshida  moriq.kazuhiro / nifty.ne.jp