diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-04-18 08:43:10 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-04-18 08:43:10 +0000 |
commit | 8784f9c23558004e3665d36c0ebdcfa2b33d7cae (patch) | |
tree | 7d4447e7b795bd31e8bb0569643e2e611fc09f63 /ext | |
parent | 434dce137bdf4ba77466b25019b1cbb9bd6b4a56 (diff) |
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/tk/lib/multi-tk.rb | 1 | ||||
-rw-r--r-- | ext/tk/lib/tk.rb | 2 | ||||
-rw-r--r-- | ext/tk/stubs.c | 19 | ||||
-rw-r--r-- | ext/tk/tcltklib.c | 22 |
4 files changed, 32 insertions, 12 deletions
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; } |