code: func drawTreeNode(win *Window, style *nstyle.Window, type_ TreeType, header rect.Rect, sym rect.Rect) rect.Rect {
  	z := &win.ctx.Style
  	out := &win.cmds
  
  	item_spacing := style.Spacing
  	panel_padding := style.Padding
  
  	if type_ == TreeTab {
  		var background *nstyle.Item = &z.Tab.Background
  		if background.Type == nstyle.ItemImage {
  			win.cmds.DrawImage(header, background.Data.Image)
  		} else {
  			out.FillRect(header, 0, z.Tab.BorderColor)
  			out.FillRect(shrinkRect(header, z.Tab.Border), z.Tab.Rounding, background.Data.Color)
  		}
  	}
  
  	/* draw node label */
  	var lblrect rect.Rect
  	header.W = max(header.W, sym.W+item_spacing.Y+panel_padding.X)
  	lblrect.X = sym.X + sym.W + item_spacing.X + 2*z.Tab.Spacing.X
  	lblrect.Y = sym.Y
  	lblrect.W = header.W - (sym.W + 2*z.Tab.Spacing.X + item_spacing.Y + panel_padding.X)
  	lblrect.H = FontHeight(z.Font)
  
  	return lblrect
  }
docs: ///////////////////////////////////////////////////////////////////////////////////
  // TREE
  ///////////////////////////////////////////////////////////////////////////////////