summaryrefslogtreecommitdiffstats
path: root/ext/tk
diff options
context:
space:
mode:
authornagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-07 09:28:18 +0000
committernagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-07 09:28:18 +0000
commit3f0a43579029fbd0816f653047bba0196193d074 (patch)
tree3e5ef42cb61a0bb13e8cfe07e7425721eb7ff634 /ext/tk
parent7ed4cff32ffe6d0f45cb855a1c5668025a615c48 (diff)
downloadruby-3f0a43579029fbd0816f653047bba0196193d074.tar.gz
ruby-3f0a43579029fbd0816f653047bba0196193d074.tar.xz
ruby-3f0a43579029fbd0816f653047bba0196193d074.zip
* backport changes from 1.9
git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@5399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk')
-rw-r--r--ext/tk/lib/tk.rb17
-rw-r--r--ext/tk/lib/tkcanvas.rb7
-rw-r--r--ext/tk/lib/tktext.rb68
3 files changed, 78 insertions, 14 deletions
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb
index 7de4cd5f2..6bae4d8f4 100644
--- a/ext/tk/lib/tk.rb
+++ b/ext/tk/lib/tk.rb
@@ -4830,16 +4830,18 @@ class TkPanedWindow<TkWindow
fail ArgumentError, "no window in arguments" unless keys
if keys && keys.kind_of?(Hash)
fail ArgumentError, "no window in arguments" if args == []
- args += hash_kv(keys)
+ args = args.collect{|w| w.epath}
+ args.push(hash_kv(keys))
else
args.push(keys) if keys
+ args = args.collect{|w| w.epath}
end
tk_send('add', *args)
self
end
def forget(win, *wins)
- tk_send('forget', win, *wins)
+ tk_send('forget', win.epath, *(wins.collect{|w| w.epath}))
self
end
alias del forget
@@ -4879,14 +4881,14 @@ class TkPanedWindow<TkWindow
end
def panecget(win, key)
- tk_tcl2ruby(tk_send('panecget', win, "-#{key}"))
+ tk_tcl2ruby(tk_send('panecget', win.epath, "-#{key}"))
end
def paneconfigure(win, key, value=nil)
if key.kind_of? Hash
- tk_send('paneconfigure', win, *hash_kv(key))
+ tk_send('paneconfigure', win.epath, *hash_kv(key))
else
- tk_send('paneconfigure', win, "-#{key}", value)
+ tk_send('paneconfigure', win.epath, "-#{key}", value)
end
self
end
@@ -4894,11 +4896,12 @@ class TkPanedWindow<TkWindow
def paneconfiginfo(win, key=nil)
if key
- conf = tk_split_list(tk_send('paneconfigure', win, "-#{key}"))
+ conf = tk_split_list(tk_send('paneconfigure', win.epath, "-#{key}"))
conf[0] = conf[0][1..-1]
conf
else
- tk_split_simplelist(tk_send('paneconfigure', win)).collect{|conflist|
+ tk_split_simplelist(tk_send('paneconfigure',
+ win.epath)).collect{|conflist|
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
if conf[3]
diff --git a/ext/tk/lib/tkcanvas.rb b/ext/tk/lib/tkcanvas.rb
index 32b5ac7af..ccb02c056 100644
--- a/ext/tk/lib/tkcanvas.rb
+++ b/ext/tk/lib/tkcanvas.rb
@@ -862,6 +862,13 @@ end
class TkcWindow<TkcItem
CItemTypeToClass['window'] = self
def create_self(*args)
+ keys = args.pop
+ if keys && keys.kind_of?(Hash)
+ keys = _symbolkey2str(keys)
+ win = keys['window']
+ keys['window'] = win.epath if win.kind_of?(TkWindow)
+ end
+ args.push(keys) if keys
tk_call(@path, 'create', 'window', *args)
end
private :create_self
diff --git a/ext/tk/lib/tktext.rb b/ext/tk/lib/tktext.rb
index 44dc6cc3b..2d37fb8c0 100644
--- a/ext/tk/lib/tktext.rb
+++ b/ext/tk/lib/tktext.rb
@@ -499,8 +499,41 @@ class TkText<TkTextWin
index.configure(slot, value)
else
if slot.kind_of? Hash
+ slot = _symbolkey2str(slot)
+ win = slot['window']
+ slot['window'] = win.epath if win.kind_of?(TkWindow)
+ if slot['create']
+ p_create = slot['create']
+ if p_create.kind_of? Proc
+ slot['create'] = install_cmd(proc{
+ id = p_create.call
+ if id.kind_of?(TkWindow)
+ id.epath
+ else
+ id
+ end
+ })
+ end
+ end
tk_send('window', 'configure', index, *hash_kv(slot))
else
+ if slot == 'window' || slot == :window
+ id = value
+ value = id.epath if id.kind_of?(TkWindow)
+ end
+ if slot == 'create' || slot == :create
+ p_create = value
+ if p_create.kind_of? Proc
+ value = install_cmd(proc{
+ id = p_create.call
+ if id.kind_of?(TkWindow)
+ id.epath
+ else
+ id
+ end
+ })
+ end
+ end
tk_send('window', 'configure', index, "-#{slot}", value)
end
end
@@ -1177,10 +1210,18 @@ class TkTextWindow<TkObject
@index = @path.path
keys = _symbolkey2str(keys)
@id = keys['window']
+ keys['window'] = @id.epath if @id.kind_of?(TkWindow)
if keys['create']
@p_create = keys['create']
if @p_create.kind_of? Proc
- keys['create'] = install_cmd(proc{@id = @p_create.call; @id.path})
+ keys['create'] = install_cmd(proc{
+ @id = @p_create.call
+ if @id.kind_of?(TkWindow)
+ @id.epath
+ else
+ @id
+ end
+ })
end
end
tk_call @t.path, 'window', 'create', @index, *hash_kv(keys)
@@ -1200,16 +1241,21 @@ class TkTextWindow<TkObject
def configure(slot, value=None)
if slot.kind_of? Hash
slot = _symbolkey2str(slot)
- @id = slot['window'] if slot['window']
+ if slot['window']
+ @id = slot['window']
+ slot['window'] = @id.epath if @id.kind_of?(TkWindow)
+ end
if slot['create']
- self.create=value
- slot['create']=nil
+ self.create=slot.delete('create')
end
if slot.size > 0
tk_call(@t.path, 'window', 'configure', @index, *hash_kv(slot))
end
else
- @id = value if slot == 'window' || slot == :window
+ if slot == 'window' || slot == :window
+ @id = value
+ value = @id.epath if @id.kind_of?(TkWindow)
+ end
if slot == 'create' || slot == :create
self.create=value
else
@@ -1228,8 +1274,9 @@ class TkTextWindow<TkObject
end
def window=(value)
- tk_call @t.path, 'window', 'configure', @index, '-window', value
@id = value
+ value = @id.epath if @id.kind_of?(TkWindow)
+ tk_call @t.path, 'window', 'configure', @index, '-window', value
end
def create
@@ -1239,7 +1286,14 @@ class TkTextWindow<TkObject
def create=(value)
@p_create = value
if @p_create.kind_of? Proc
- value = install_cmd(proc{@id = @p_create.call})
+ value = install_cmd(proc{
+ @id = @p_create.call
+ if @id.kind_of?(TkWindow)
+ @id.epath
+ else
+ @id
+ end
+ })
end
tk_call @t.path, 'window', 'configure', @index, '-create', value
end