diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-01 09:25:37 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-01 09:25:37 +0000 |
commit | d3a61700106dbb79ff2330517187ff04df63fdb7 (patch) | |
tree | ebd326e315572f9712a37a81ab46c35dea88f1b5 /ext/tk/lib | |
parent | 65cdbd0667ae56198e8ebd7b2b06a6a35c14b718 (diff) | |
download | ruby-d3a61700106dbb79ff2330517187ff04df63fdb7.tar.gz |
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/lib')
-rw-r--r-- | ext/tk/lib/tkafter.rb | 26 | ||||
-rw-r--r-- | ext/tk/lib/tktext.rb | 8 |
2 files changed, 27 insertions, 7 deletions
diff --git a/ext/tk/lib/tkafter.rb b/ext/tk/lib/tkafter.rb index 55bfde4d52..fe3ee38740 100644 --- a/ext/tk/lib/tkafter.rb +++ b/ext/tk/lib/tkafter.rb @@ -1,6 +1,6 @@ # # tkafter.rb : methods for Tcl/Tk after command -# 1998/07/02 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp> +# 2000/08/01 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp> # require 'tk' @@ -37,7 +37,16 @@ class TkAfter ############################### def do_callback(*args) @in_callback = true - ret = @current_proc.call(*args) + begin + ret = @current_proc.call(*args) + rescue StandardError, NameError + if @cancel_on_exception + cancel + return nil + else + fail $! + end + end if @set_next set_next_callback(*args) else @@ -118,6 +127,8 @@ class TkAfter @after_id = nil @after_script = nil + @cancel_on_exception = true + set_procs(*args) if args != [] @running = false @@ -135,7 +146,16 @@ class TkAfter end def current_status - [@running, @current_sleep, @current_proc, @current_args, @do_loop] + [@running, @current_sleep, @current_proc, @current_args, + @do_loop, @cancel_on_exception] + end + + def cancel_on_exception? + @cancel_on_exception + end + + def cancel_on_exception=(mode) + @cancel_on_exception = mode end def running? diff --git a/ext/tk/lib/tktext.rb b/ext/tk/lib/tktext.rb index 163583f139..f7b3f84ba7 100644 --- a/ext/tk/lib/tktext.rb +++ b/ext/tk/lib/tktext.rb @@ -460,7 +460,7 @@ class TkText<TkTextWin when 'anchor' result.push TkTextMarkAnchor.new(self) else - result.push tk_tcl2rb(val) + result.push tk_tcl2ruby(val) end when 'tagon' if val == 'sel' @@ -470,12 +470,12 @@ class TkText<TkTextWin result.push TkTextTagSel.new(self) end else - result.push tk_tcl2rb val + result.push tk_tcl2ruby(val) end when 'tagoff' - result.push tk_tcl2rb sel + result.push tk_tcl2ruby(sel) when 'window' - result.push tk_tcl2rb val + result.push tk_tcl2ruby(val) end i = idx + 1 end |