Method: Tk::Tile::Treeview::Root.new

Defined in:
lib/tkextlib/tile/treeview.rb

.new(tree, keys = {}) ⇒ Object



901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
# File 'lib/tkextlib/tile/treeview.rb', line 901

def self.new(tree, keys = {})
  tpath = tree.path
  obj = nil
  Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
    if Tk::Tile::Treeview::Item::ItemID_TBL[tpath] &&
        Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
      obj = Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
    else
      #super(tree, keys)
      (obj = self.allocate).instance_eval{
        @parent = @t = tree
        @tpath = tree.path
        @path = @id = ''
        Tk::Tile::Treeview::Item::ItemID_TBL[@tpath] ||= {}
        Tk::Tile::Treeview::Item::ItemID_TBL[@tpath][@id] = self
      }
    end
  }
  obj.configure(keys) if keys && ! keys.empty?
  obj
end