code: func (win *Window) Menu(lbl label.Label, width int, updateFn UpdateFn) *Window {
  	state, header, fitting := win.widget()
  	if fitting != nil {
  		fitting(buttonWidth(lbl, &win.ctx.Style.MenuButton, win.ctx.Style.Font))
  	}
  	if !state {
  		return nil
  	}
  
  	in := &Input{}
  	if win.toplevel() {
  		in = &win.ctx.Input
  		in.Mouse.clip = win.cmds.Clip
  	}
  	is_clicked := doButton(win, lbl, header, &win.ctx.Style.MenuButton, in, false)
  
  	if popup := win.ctx.Windows[len(win.ctx.Windows)-1]; updateFn == nil && popup.header == header {
  		popup.specialPanelBegin()
  		return popup
  	}
  
  	if !is_clicked {
  		return nil
  	}
  
  	flags := windowMenu | WindowNoScrollbar
  
  	width = win.ctx.scale(width)
  
  	if width == 0 {
  		width = nk_null_rect.W
  		flags = flags | windowHDynamic
  	}
  
  	var body rect.Rect
  	body.X = header.X
  	body.W = width
  	body.Y = header.Y + header.H
  	body.H = (win.layout.Bounds.Y + win.layout.Bounds.H) - body.Y
  
  	return win.ctx.nonblockOpen(flags, body, header, updateFn)
  }
docs: ///////////////////////////////////////////////////////////////////////////////////
  // MENU
  ///////////////////////////////////////////////////////////////////////////////////
  // Adds a menu to win with a text label.
  // If width == 0 the width will be automatically adjusted to fit the largest MenuItem