こんにちは。

# 先程の、GtkWidget updateはこの為だったりします。
# しかもちょっと長いです。

ruby/gtkで DnDを使える様にしようと思ったのですが、gtk_drag_*をどこに定義
しようか迷っています。Object Orientのプロの方、おたすけください。

rdpなどで gtk_drag_*()は、Object Hierarchyには入っていません。つまり、普
通に rubyに mapするなら RCの様に GTK moduleの下に Drag moduleを作って関
数をまとめるべきなのかもしれませんが、なんとなく使いづらそうです。

そこで、以下の listなんですが‥。gtk 1.2.6で gtk_drag_*()は最初の引数で
以下の3つに分ることができます

GtkWidget
 - gtk_drag_dest_set
 - gtk_drag_dest_set_proxy
 - gtk_drag_dest_unset
 - gtk_drag_get_data
 - gtk_drag_highlight
 - gtk_drag_unhighlight
 - gtk_drag_begin
 - gtk_drag_source_set
 - gtk_drag_source_set_icon
 - gtk_drag_source_unset
 - gtk_drag_source_handle_event
 - gtk_drag_dest_handle_event

GdkDragContext
 - gtk_drag_finish
 - gtk_drag_get_source_widget
 - gtk_drag_set_icon_widget
 - gtk_drag_set_icon_pixmap
 - gtk_drag_set_icon_default

GdkColormap
 - gtk_drag_set_default_icon


個人的には、

s = Gtk::Text.new(...)
d = Gtk::Text.new(...)

s.drag_source_set(...)
d.drag_dest_set(...)
の方が、

Gtk::Drag.source_set(s, ...)
Gtk::Drag.dest_set(d, ...)
よりも直感的で良いのではと思っています。

が、引き数に GtkWidgetを取らない関数があるのでそれらをそれぞれの class
にも実装しなければならないのがちょっと面倒です。

# しかも Gtk+ 1.3以降で DnDが変ったらそれこそ面倒かもしれません。

1) 素直に、Gtk::Drag moduleを作る。
2) それぞれの classの instance methodにする。
3) Widgetを引き数に取る関数だけ、Widget classの instance methodに
   あとの二つは、Gtk::Dragに

どれが良いでしょうか?

p.s. 読みづらくてごめんなさい m(__)m
--
       yashi