API EasyMenu

From Wowpedia
Jump to: navigation, search
"I" iconThis function is implemented by FrameXML in FrameXML/EasyMenu.lua.

Populate a context menu with options described in a provided table.

EasyMenu(menuList, menuFrame, anchor, x, y, displayMode, autoHideDelay)


Table - an array of tables describing the entries in the menu to be created. The descriptions may use any key-value tables used in a UIDropDownMenu info table; as a bare minimum, each option should specify the "text" key.
Frame - a Frame object that will be used to store some information about the menu, must have a name, and should inherit from UIDropDownMenuTemplate; see the Details section.
String/Region - Specify what to anchor the menu relative to: either "cursor", a region name, or a region (frame) reference.
Number - x offset from the anchor.
Number - y offset from the anchor.
String - "MENU" enables a tooltip-styled context menu, any other value the dropdown style.
Number - Automatically hide the menu after this many seconds.


  • The menu becomes visible as soon as you call the function and goes away after you click a menu item unless keepShownOnClick in menuList was set to 1.
  • UIDropDownMenu_Initialize will be called on the menuFrame argument, which will modify its layout. For this reason, avoid using your own widgets that do not inherit from UIDropDownMenuTemplate as the menuFrame argument.
  • Fine-grained control over the positioning of the menu is possible by setting the menuFrame.point and menuFrame.relativePoint values to specific anchor points to use when anchoring the frame to a non-cursor region.


The following example creates a context menu based on a table description:

local menu = {
    { text = "Select an Option", isTitle = true},
    { text = "Option 1", func = function() print("You've chosen option 1"); end },
    { text = "Option 2", func = function() print("You've chosen option 2"); end },
    { text = "More Options", hasArrow = true,
        menuList = {
            { text = "Option 3", func = function() print("You've chosen option 3"); end }
-- Note that this frame must be named for the dropdowns to work.
local menuFrame = CreateFrame("Frame", "ExampleMenuFrame", UIParent, "UIDropDownMenuTemplate")

-- Make the menu appear at the cursor: 
EasyMenu(menu, menuFrame, "cursor", 0 , 0, "MENU");
-- Or make the menu appear at the frame:
menuFrame:SetPoint("Center", UIParent, "Center")
EasyMenu(menu, menuFrame, menuFrame, 0 , 0, "MENU");

See Also