diff --git a/ChangeLog b/ChangeLog index 730986121a..a531bd5827 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Tue Apr 18 17:40:37 2006 Hidetoshi NAGAI + + * ext/tk/lib/multi-tk.rb: add a binding to a container for a slave IP. + + * ext/tk/lib/tk.rb: update RELEASE_DATE. + + * ext/tk/tcltklib.c: forget to reset a Tcl interpreter. + + * ext/tk/stubs.c: fix potential bugs about handling rb_argv0. + Sat Apr 8 18:06:28 2006 Masaki Suketa * ext/win32ole/win32ole.c: add WIN32OLE_METHOD#inspect, diff --git a/ext/tk/lib/multi-tk.rb b/ext/tk/lib/multi-tk.rb index 84c2322d56..8fc99dff73 100644 --- a/ext/tk/lib/multi-tk.rb +++ b/ext/tk/lib/multi-tk.rb @@ -944,6 +944,7 @@ class MultiTkIp dup_keys['fill'] = :both unless dup_keys.key?('fill') dup_keys['expand'] = true unless dup_keys.key?('expand') c = TkFrame.new(top, :container=>true).pack(dup_keys) + c.bind('Destroy', proc{top.destroy}) # return keys loadTk_keys['use'] = TkWinfo.id(c) diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index bf053058da..45468a3bfd 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -4559,7 +4559,7 @@ end #Tk.freeze module Tk - RELEASE_DATE = '2006-04-06'.freeze + RELEASE_DATE = '2006-04-18'.freeze autoload :AUTO_PATH, 'tk/variable' autoload :TCL_PACKAGE_PATH, 'tk/variable' diff --git a/ext/tk/stubs.c b/ext/tk/stubs.c index cf362f4e12..23ff42a4f4 100644 --- a/ext/tk/stubs.c +++ b/ext/tk/stubs.c @@ -141,7 +141,8 @@ ruby_open_tk_dll() char tk_name[20]; if (!tcl_dll) { - int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); + /* int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */ + int ret = ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0); if (ret != TCLTK_STUBS_OK) return ret; } @@ -212,7 +213,9 @@ ruby_tcl_create_ip_and_stubs_init(st) Tcl_Interp *(*p_Tcl_DeleteInterp)(); if (!tcl_dll) { - int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); + /* int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */ + int ret = ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0); + if (ret != TCLTK_STUBS_OK) { if (st) *st = ret; return (Tcl_Interp*)NULL; @@ -345,7 +348,8 @@ ruby_tcltk_stubs() int st; Tcl_Interp *tcl_ip; - st = ruby_open_tcltk_dll(RSTRING(rb_argv0)->ptr); + /* st = ruby_open_tcltk_dll(RSTRING(rb_argv0)->ptr); */ + st = ruby_open_tcltk_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0); switch(st) { case NO_FindExecutable: return -7; @@ -407,7 +411,8 @@ ruby_open_tcl_dll(appname) int ruby_open_tk_dll() { if (!open_tcl_dll) { - ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); + /* ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */ + ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0); } return TCLTK_STUBS_OK; @@ -438,7 +443,8 @@ ruby_tcl_create_ip_and_stubs_init(st) Tcl_Interp *tcl_ip; if (!open_tcl_dll) { - ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); + /* ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */ + ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0); } if (st) *st = 0; @@ -502,7 +508,8 @@ ruby_tk_stubs_safeinit(tcl_ip) int ruby_tcltk_stubs() { - Tcl_FindExecutable(RSTRING(rb_argv0)->ptr); + /* Tcl_FindExecutable(RSTRING(rb_argv0)->ptr); */ + Tcl_FindExecutable(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0); return 0; } diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c index ecb73e6743..ebc2ac5d76 100644 --- a/ext/tk/tcltklib.c +++ b/ext/tk/tcltklib.c @@ -4,7 +4,7 @@ * Oct. 24, 1997 Y. Matsumoto */ -#define TCLTKLIB_RELEASE_DATE "2006-04-06" +#define TCLTKLIB_RELEASE_DATE "2006-04-18" #include "ruby.h" #include "rubysig.h" @@ -5118,7 +5118,10 @@ ip_make_safe_core(interp, argc, argv) } if (Tcl_MakeSafe(ptr->ip) == TCL_ERROR) { - return rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip)); + /* return rb_exc_new2(rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); */ + return create_ip_exc(interp, rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); } ptr->allow_ruby_exit = 0; @@ -7050,7 +7053,10 @@ ip_get_variable2_core(interp, argc, argv) if (ret == (Tcl_Obj*)NULL) { volatile VALUE exc; - exc = rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip)); + /* exc = rb_exc_new2(rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); */ + exc = create_ip_exc(interp, rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); /* Tcl_Release(ptr->ip); */ rbtk_release_ip(ptr); rb_thread_critical = thr_crit_bup; @@ -7186,7 +7192,10 @@ ip_set_variable2_core(interp, argc, argv) if (ret == (Tcl_Obj*)NULL) { volatile VALUE exc; - exc = rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip)); + /* exc = rb_exc_new2(rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); */ + exc = create_ip_exc(interp, rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); /* Tcl_Release(ptr->ip); */ rbtk_release_ip(ptr); rb_thread_critical = thr_crit_bup; @@ -7303,7 +7312,10 @@ ip_unset_variable2_core(interp, argc, argv) if (ptr->return_value == TCL_ERROR) { if (FIX2INT(flag) & TCL_LEAVE_ERR_MSG) { - return rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip)); + /* return rb_exc_new2(rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); */ + return create_ip_exc(interp, rb_eRuntimeError, + Tcl_GetStringResult(ptr->ip)); } return Qfalse; }