diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ext/tk/lib/tk.rb | 17 | ||||
-rw-r--r-- | ext/tk/lib/tkcanvas.rb | 7 | ||||
-rw-r--r-- | ext/tk/lib/tktext.rb | 68 |
4 files changed, 86 insertions, 14 deletions
@@ -1,3 +1,11 @@ +Wed Jan 7 14:26:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> + + * ext/tk/lib/tk.rb (TkPanedWindow): use epath for embedded windows. + + * ext/tk/lib/tktext.rb: use epath for embedded windows. + + * ext/tk/lib/tkcanvas.rb: use epath for window items. + Wed Jan 7 14:24:04 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp> * lib/soap/{attachment.rb,mimemessage.rb}: added from soap4r/1.5.2. 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 |