>>>>> "s" == schneik  <schneik / us.ibm.com> writes:

s> Is this any help?

 I don't have the same error :

pigeon% widget
/usr/local/lib/ruby/1.6/tk.rb:810:in `_invoke': stack level too deep (SystemStackError)
        from /usr/local/lib/ruby/1.6/tk.rb:810:in `collect'
        from /usr/local/lib/ruby/1.6/tk.rb:810:in `_invoke'
        from /usr/local/lib/ruby/1.6/tk.rb:811:in `_invoke'
        from /usr/local/lib/ruby/1.6/tk.rb:811:in `_invoke'
        from /usr/local/lib/ruby/1.6/tk.rb:811:in `_invoke'
        from /usr/local/lib/ruby/1.6/tk.rb:811:in `_invoke'
        from /usr/local/lib/ruby/1.6/tk.rb:811:in `_invoke'
        from /usr/local/lib/ruby/1.6/tk.rb:811:in `_invoke'
         ... 2559 levels...
        from ./widget:27:in `new'
        from /usr/local/lib/ruby/1.6/tk.rb:2216:in `new'
        from /usr/local/lib/ruby/1.6/tk.rb:2216:in `new'
        from ./widget:27
pigeon% 

 try this diff


pigeon% diff -u tk.rb~ tk.rb
--- tk.rb~      Sat Oct  7 14:51:49 2000
+++ tk.rb       Sat Oct  7 14:52:55 2000
@@ -790,27 +790,27 @@
 if /^8\.[1-9]/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK
   class TclTkIp
     # from tkencoding.rb by ttate / jaist.ac.jp
-    alias __eval _eval
-    alias __invoke _invoke
-    private :__eval
-    private :__invoke
+    alias old_eval _eval
+    alias old_invoke _invoke
+    private :old_eval
+    private :old_invoke
     
     attr_accessor :encoding
     
     def _eval(cmd)
       if @encoding
-       _fromUTF8(__eval(_toUTF8(cmd, @encoding)), @encoding)
+       _fromUTF8(old_eval(_toUTF8(cmd, @encoding)), @encoding)
       else
-       __eval(cmd)
+       old_eval(cmd)
       end
     end
     
     def _invoke(*cmds)
       if @encoding
        cmds = cmds.collect{|cmd| _toUTF8(cmd, @encoding)}
-       _fromUTF8(__invoke(*cmds), @encoding)
+       _fromUTF8(old_invoke(*cmds), @encoding)
       else
-       __invoke(*cmds)
+       old_invoke(*cmds)
        end
     end
   end
pigeon% 


Guy Decoux