もりきゅうです。

Yasushi Shoji さんは書きました:
>ちょうしに乗って、eventごと Rubyの世界に持って来ようとしたんですが、挫折
>しました(^^;

いま Ruby/Xlib の event 周りを改良中です。手元では
win.event 'button_press' do |event|
  ...
end
となっていて,
event は struct EventButton のインスタンスになります。
もちろん struct EventButton は XEventButton のラッパーです。


また現在 Ruby/Xlib で,いわゆるブラウザを作っています。
# もちろんへなちょこ。
スクロール周りで難航していたのですが,XGetMotionEvents
で解決しそうです。これまで motion_notify をとびとびに
できなかったから,すごく反応が遅くなっていました。

これまで
win.event 'motion_notify' do |x, y|
  ...
end
と書いていた部分は
time = 1
Thread.new {
  while true
    events = win.get_motion_events time, 0
    unless events.empty?
      time, x, y = events[-1]
      ...
    end
  end
}
と書けるようになりました。
Xlib::Window#get_motion_events start, stop
は start から stop までの時間に起こった MotionEvent の配列を返します。
stop = 0 は現在時刻を表します。

# この start, stop (C/API での型は X.h の Time) が Time#to_i の時間軸
# と一致しないのはなぜだろう..

このため,Ruby/Xlib の motion_notify は obsolete になります。

p.s:
Display#close, free 周りでまたまたバグを見つけたので,
早く 0.6.10 を出したいです。^^;

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