mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 13:34:17 +02:00
* ext/tk/tkutil.c (tk_conv_args): forget to revert thread_critical
and gc_disable when raise ArgumentError. * ext/tk/lib/remote-tk.rb: RemoteTkIp doesn't need to include TkUtil. * ext/tcltklib/tcltklib.c: add TclTkIp#has_mainwindow? method. * ext/tk/lib/tk.rb: add Tk.has_mainwindow? method. * ext/tk/lib/multi-tk.rb: add MultiTkIp#has_mainwindow? method. * ext/tk/lib/remote-tk.rb: add RemoteTkIp#has_mainwindow? method. * ext/tk/lib/multi-tk.rb: slave IP fail to exit itself when $SAFE==4. * ext/tk/lib/multi-tk.rb: remove constants from MultiTkIp module to avoid access from external. * ext/tk/lib/multi-tk.rb: check_root flag is ignored on slave IPs' mainloop. * ext/tk/lib/multi-tk.rb: hang-up Tk.mainloop called on a slave IP with $SAFE==4. * ext/tk/lib/multi-tk.rb: MultiTkIp#bg_eval_proc doesn't work properly. * ext/tk/lib/multi-tk.rb: add MultiTkIp#set_cb_error(proc) and cb_error(exc) to log errors at callbacks on safe slave IPs. * ext/tk/lib/multi-tk.rb: fail to get an available slave IP object when call Tk.mainloop in the block which is given to new_* method, because cannot finish initialize while the root widget is alive. * ext/tk/lib/multi-tk.rb: fail to control a slave IP when Tk.mainloop runs on the IP. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
07f892fb3c
commit
ecf2813198
8 changed files with 223 additions and 64 deletions
|
@ -4,7 +4,7 @@
|
|||
* Oct. 24, 1997 Y. Matsumoto
|
||||
*/
|
||||
|
||||
#define TCLTKLIB_RELEASE_DATE "2005-07-19"
|
||||
#define TCLTKLIB_RELEASE_DATE "2005-07-22"
|
||||
|
||||
#include "ruby.h"
|
||||
#include "rubysig.h"
|
||||
|
@ -511,6 +511,7 @@ get_ip(self)
|
|||
}
|
||||
if (ptr->ip == (Tcl_Interp*)NULL) {
|
||||
/* rb_raise(rb_eRuntimeError, "deleted IP"); */
|
||||
return((struct tcltkip *)NULL);
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
@ -5293,6 +5294,22 @@ ip_is_deleted_p(self)
|
|||
}
|
||||
}
|
||||
|
||||
static VALUE
|
||||
ip_has_mainwindow_p(self)
|
||||
VALUE self;
|
||||
{
|
||||
struct tcltkip *ptr = get_ip(self);
|
||||
|
||||
if (ptr == (struct tcltkip *)NULL || ptr->ip == (Tcl_Interp *)NULL
|
||||
|| Tcl_InterpDeleted(ptr->ip)) {
|
||||
return Qnil;
|
||||
} else if (Tk_MainWindow(ptr->ip) == (Tk_Window)NULL) {
|
||||
return Qfalse;
|
||||
} else {
|
||||
return Qtrue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
#ifdef HAVE_STDARG_PROTOTYPES
|
||||
|
@ -8557,6 +8574,7 @@ Init_tcltklib()
|
|||
rb_define_method(ip, "allow_ruby_exit=", ip_allow_ruby_exit_set, 1);
|
||||
rb_define_method(ip, "delete", ip_delete, 0);
|
||||
rb_define_method(ip, "deleted?", ip_is_deleted_p, 0);
|
||||
rb_define_method(ip, "has_mainwindow?", ip_has_mainwindow_p, 0);
|
||||
rb_define_method(ip, "invalid_namespace?", ip_has_invalid_namespace_p, 0);
|
||||
rb_define_method(ip, "_eval", ip_eval, 1);
|
||||
rb_define_method(ip, "_toUTF8", ip_toUTF8, -1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue