summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-01 09:25:37 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-01 09:25:37 +0000
commitd3a61700106dbb79ff2330517187ff04df63fdb7 (patch)
treeebd326e315572f9712a37a81ab46c35dea88f1b5 /ext
parent65cdbd0667ae56198e8ebd7b2b06a6a35c14b718 (diff)
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/tk/lib/tkafter.rb26
-rw-r--r--ext/tk/lib/tktext.rb8
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