From: Kazuhiro N. <zn...@mb...> - 2006-07-06 08:02:20
|
西山和広です。 Debian sargeの % pkg-config --modversion gtk+-2.0 2.6.4 % dpkg -l libgtk2-ruby|grep '^ii' ii libgtk2-ruby 0.12.0-2 GTK+ bindings for the Ruby language % という環境で、以下のようにThreadの中でGtk::Dialog#runを実行すると responseが-6(RESPONSE_CANCEL)や-5(RESPONSE_OK)ではなく、 -1(RESPONSE_NONE)になることが多いのですが、 これはそういうもの(Dialog#runしたままシグナルハンドラから 抜けてはいけない)なのでしょうか? 別の処理をしたり外部コマンドを実行したりする都合でスレッドを 作っていて、その中でMessageDialogを使ったら-1になることが 多くて、悩んでいたらスレッドの中というのが原因でした。 #!/usr/bin/ruby -Ku require 'gtk2' Gtk.init window = Gtk::Window.new window.signal_connect('destroy') { Gtk.main_quit } button = Gtk::Button.new('_Test') button.signal_connect('clicked') do Thread.start do dialog = Gtk::MessageDialog.new(nil, Gtk::Dialog::DESTROY_WITH_PARENT, Gtk::MessageDialog::QUESTION, Gtk::MessageDialog::BUTTONS_OK_CANCEL, "test message") dialog.run do |response| p response end dialog.destroy end end window.add(button) window.show_all Gtk.main -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) |