Hello!

I am trying to bind context-menus to a Tk canvas.  The canvas itself should
have a context menu, giving the ability to create new objects.  In addition,
every object should have its own context menu so that the object can be
modified/deleted.  This is what I'm doing:

  #! /usr/bin/ruby
  require 'tk'
  $-w = 1
  
  root = TkRoot.new
  canvas = TkCanvas.new.pack
  
  # This is the context menu for the canvas to create new objects
  #
  menu=TkMenu.new
  menu.add('command', 'label'=>'New Foo', 'command'=>proc{p "new foo"})
  menu.add('command', 'label'=>'New Bar', 'command'=>proc{p "new bar"})

  # canvas binding
  canvas.bind("Button-3") { |e| evt=e; menu.popup(e.x_root, e.y_root) }
  
  # Now create a new object and bind to it a context menu to modify/delete
  # the object
  #
  rect = TkcRectangle.new(canvas, 0, 0, 50, 50, "fill"=>"white")
  menu=TkMenu.new
  menu.add('command', 'label'=>'Edit',   'command'=>proc{p "edit"})
  menu.add('command', 'label'=>'Delete', 'command'=>proc{p "del"})

  # object binding
  canvas.itembind(rect, "Button-3") { |e| menu.popup(e.x_root, e.y_root) }
  
  Tk.mainloop

Unfortunately, this don't work as desired.  As soon as the binding to the
object is done, the canvas binding seems to be overridden.  Even when
right-klicking on empty space in the canvas, the object's menu is invoked.

Any ideas what I am doing wrong here?