This article covers the cumulative AddOn UI Customization and Macro API changes for Patch 1.10.0. See API change summaries for a list of API change summaries for all patches.
API change summaries Interface Customization » WoW API » API change summaries » Patch 1.10.0/API changes

This is a consolidated list of the announced (and sometimes observed) changes in the User Interface API's and functionality for the 1.10 change. Please note that this thread is to discuss the upcoming changes and any clarifications or features that are a direct result of those changes, or things which we've been asked to remind slouken of. It is NOT an appropriate place for general feature requests, they should have their own threads (or be in the suggestions forum).

Significant Change Summary Edit

  • New Font objects for on-the-fly font configuration.
  • Can create new UI Frames, Textures, and FontStrings at runtime
  • It will no longer be possible to replace Blizzard interface files (FrameXML/)
  • You can no longer hook blizzard movement or mouse action functions.
  • AddOns can no longer use RegisterForSave (Will be disabled for 1.10 release).

Widget API Functions Edit

  • NEW: texture = Frame:CreateTexture(["name"] [,"layer"]) -- Create a new Texture object as a child of a frame.
  • NEW: fontstring = Frame:CreateFontString(["name"] [,"layer"]) -- Create a new FontString object as a child of a frame.
  • NEW: numRegions = Frame:GetNumRegions() -- Return the number of regions (Textures/FontStrings) attached to a frame.
  • NEW: a, b, c, ... = Frame:GetRegions() -- Return the regions attached to a frame.

NEW: type = Frame:GetObjectType() -- Behaves as Frame:GetFrameType() does today.

  • NEW: isType = Frame:IsObjectType("type") -- Behaves as Frame:IsFrameType("type") does today.

NEW LayoutFrame (Inherited by all viewable object types) Methods Edit

  • numPoints = LayoutFrame:GetNumPoints() -- Returns the number of anchor points
  • "point",relativeObject,"relativePoint",xOfs,yOfs = LayoutFrame:GetPoint(index) -- Returns details of an anchor point
  • LayoutFrame:SetPoint("point",relativeObject,"relativePoint",xOfs,yOfs) -- New form, in addition to all existing ones (relative object instead of name)

NEW/UPDATED Texture Methods Edit

  • parent = Texture:GetParent()
  • Texture:SetParent(parent or "parent")
  • layer = Texture:GetDrawLayer()
  • Texture:SetDrawLayer("layer")
  • blendMode = Texture:GetBlendMode()
  • Texture:SetBlendMode("blendMode") -- blendMode is one of "DISABLE", "BLEND", "ALPHAKEY", "ADD", "MOD"
  • r,g,b,a = Texture:GetVertexColor()
  • type = Texture:GetObjectType() -- Returns "Texture"
  • isType = Texture:IsObjectType("type") -- Returns whether "type" is "Texture"
  • x,y = Texture:GetCenter();
  • x = Texture:GetLeft();
  • x = Texture:GetRight();
  • y = Texture:GetTop();
  • y = Texture:GetBottom();
  • Texture:SetAllPoints("frame");
  • isFound = Texture:SetTexture("path") -- Now returns true if the path was found, nil if not.

NEW FontString methods Edit

  • parent = FontString:GetParent()
  • FontString:SetParent(parent or "parent")
  • layer = FontString:GetDrawLayer()
  • FontString:SetDrawLayer("layer")
  • a = FontString:GetAlpha()
  • type = FontString:GetObjectType() -- Returns "FontString"
  • isType = FontString:IsObjectType("type") -- Returns whether "type" is "FontString"
  • x,y = FontString:GetCenter();
  • x = FontString:GetLeft();
  • x = FontString:GetRight();
  • y = FontString:GetTop();
  • y = FontString:GetBottom();
  • FontString:SetAllPoints("frame");

NEW/UPDATED methods - FontString related Edit

For each of FontString, MessageFrame, ScrollingMessageFrame, and EditBox the following methods (some may already be present in 1.9):

  • font = Frame:GetFontObject()
  • Frame:SetFontObject(font or nil)
  • fontFile, fontHeight, flags = Frame:GetFont()
  • wasFound = Frame:SetFont("fontFile", fontHeight [, flags]) -- Returns true if specified font was valid, and nil if it was not (the change will not occur).
  • r,g,b,a = Frame:GetTextColor()
  • Frame:SetTextColor(r, g, b [, a])
  • r,g,b,a = Frame:GetShadowColor()
  • Frame:SetShadowColor(r, g, b [, a])
  • x,y = Frame:GetShadowOffset()
  • Frame:SetShadowOffset(x, y)
  • spacing = Frame:GetSpacing()
  • Frame:SetSpacing(spacing)
  • justifyh = Frame:GetJustifyH()
  • Frame:SetJustifyH("LEFT" or "CENTER" or "RIGHT")
  • justfiyv = Frame:GetJustifyV()
  • Frame:SetJustifyV("TOP" or "MIDDLE" or "BOTTOM")

NEW/UPDATED ScrollingMessageFrame methods Edit

  • NEW ScrollingMessageFrame:SetFading(isFading) -- Renamed from ScrollingMessageFrame:EnableFading()
  • NEW isFading = ScrollingMessageFrame:GetFading()
  • NEW duration = ScrollingMessageFrame:GetFadeDuration() -- Get time it takes for lines to fade once they start fading.
  • NEW visTime = ScrollingMessageFrame:GetTimeVisible() -- Get time it takes before a line starts fading.
  • UPDATED ScrollingMessageFrame:SetTimeVisible(visTime) -- Will affect visible lines as well as new ones.
  • UPDATED ScrollingMessageFrame:SetFadeDuration(duration) -- Will affect visible lines as well as new ones.

NEW SimpleHTML methods Edit

("header" is "H1" "H2" or "H3")

  • font = SimpleHTMLGetFontObject(["header",])
  • SimpleHTMLSetFontObject(["header",]font or nil)
  • fontFile, fontHeight, flags = SimpleHTMLGetFont(["header",])
  • wasFound = SimpleHTMLSetFont(["header",]"fontFile", fontHeight [, flags]) -- Returns true if specified font was valid, and nil if it was not (the change will not occur).
  • r,g,b,a = SimpleHTMLGetTextColor(["header",])
  • SimpleHTMLSetTextColor(["header",]r, g, b [, a])
  • r,g,b,a = SimpleHTMLGetShadowColor(["header",])
  • SimpleHTMLSetShadowColor(["header",]r, g, b [, a])
  • x,y = SimpleHTMLGetShadowOffset(["header",])
  • SimpleHTMLSetShadowOffset(["header",]x, y)
  • spacing = SimpleHTMLGetSpacing(["header",])
  • SimpleHTMLSetSpacing(["header",]spacing)
  • justifyh = Font:GetJustifyH(["header",])
  • SimpleHTMLSetJustifyH(["header",]"LEFT" or "CENTER" or "RIGHT")
  • justfiyv = SimpleHTMLGetJustifyV(["header",])
  • SimpleHTMLSetJustifyV(["header",]"TOP" or "MIDDLE" or "BOTTOM")

NEW Font object with methods Edit

  • name = Font:GetName()
  • a = Font:GetAlpha()
  • Font:SetAlpha(a)
  • font = Font:GetFontObject() -- Get the 'parent' of the Font.
  • Font:SetFontObject(font or nil) -- Set the 'parent' of the Font.
  • Font:CopyFontObject(font) -- Set this Font's attributes to be the same as those of font.
  • fontFile, fontHeight, flags = Font:GetFont()
  • wasFound = Font:SetFont("fontFile", fontHeight [, flags]) -- Returns true if specified font was valid, and nil if it was not (the change will not occur).
  • r,g,b,a = Font:GetTextColor()
  • Font:SetTextColor(r, g, b [, a])
  • r,g,b,a = Font:GetShadowColor()
  • Font:SetShadowColor(r, g, b [, a])
  • x,y = Font:GetShadowOffset()
  • Font:SetShadowOffset(x, y)
  • Font:SetSpacing(spacing)
  • spacing = Font:GetSpacing()
  • Font:SetJustifyH("LEFT" or "CENTER" or "RIGHT")
  • justifyh = Font:GetJustifyH()
  • Font:SetJustifyV("TOP" or "MIDDLE" or "BOTTOM")
  • justifyv = Font:GetJustifyV()
  • type = Font:GetObjectType() -- Returns Font
  • isType = Font:IsObjectType("type") -- Return true if type is "Font"

NEW/UPDATED Button methods Edit

  • NEW font = Button:GetTextFontObject()
  • NEW Button:SetTextFontObject(font or nil)
  • NEW font = Button:GetDisabledFontObject()
  • NEW Button:SetDisabledFontObject(font or nil)
  • NEW font = Button:GetHighlightFontObject()
  • NEW Button:SetHighlightFontObject(font or nil)
  • UPDATED Button:SetNormalTexture("texturePath" or TextureObject) -- Added Texture Object option.
  • UPDATED Button:SetPushedTexture("texturePath" or TextureObject) -- Added Texture Object option.
  • UPDATED Button:SetDisabledTexture("texturePath" or TextureObject) -- Added Texture Object option.
  • UPDATED Button:SetHighlightTexture("texturePath" or TextureObject) -- Added Texture Object option.

NEW Minimap methods Edit

  • Minimap:SetMaskTexture("file") -- Set the texture for the minimap mask, defaults to "Textures\\MinimapMask".
  • Minimap:SetIconTexture("file") -- Set the texture for the minimap POI icon, defaults to "Interface\\Minimap\\POIIcons".
  • Minimap:SetBlipTexture("file") -- Set the texture for the minimap tracking blip, defaults to "Interface\\Minimap\\ObjectIcons".

NEW Slider methods Edit

  • orientation = Slider:GetOrientation() -- Return slider orientation
  • Slider:SetOrientation("orientation") -- Set slider orientation ("HORIZONTAL","VERTICAL")

NEW StatusBar methods Edit

  • orientation = StatusBar:GetOrientation() -- Return bar orientation
  • StatusBar:SetOrientation("orientation") -- Set bar orientation ("HORIZONTAL","VERTICAL")
  • filename = StatusBar:GetStatusBarTexture()
  • r, g, b, a = StatusBar:GetStatusBarColor()

NEW EditBox methods Edit

  • EditBox:SetAltArrowKeyMode(enabled) -- Set if the ALT key must be held for arrow keys to work in the edit box.
  • enabled = EditBox:GetAltArrowKeyMode() -- Get the current ALT key mode.

NEW ScrollFrame methods Edit

  • ScrollFrame:SetScrollChild(frame or "framename")
  • frame = ScrollFrame:GetScrollChild()

Frame-related API Functions Edit

  • NEW: frame = CreateFrame("frameType" [,"name"] [, parent]) -- Create a new frame of the specified type ("Button", "Slider", etc).
  • NEW: font = CreateFont("name") -- Dynamically create a font object
  • NEW: num = GetNumFrames() -- Get the current number of Frame (and derivative) objects
  • nextFrame = EnumerateFrames(currentFrame) -- Get the Frame which follows currentFrame (in internal order, use currentFrame=nil for the first one)

XML Schema Changes Edit

  • EditBox, MessageFrame, ScrollingMessageFrame, SimpleHTML accept a font= attribute, which specifies a Font object to use (NOT a font file path)

FrameXML Interface Code Edit

  • NUM_CONTAINER_FRAMES increased to match actual max number of open containers (11, rather than 9)
  • In FrameXML\Fonts.xml, the system FontStrings become Font objects.

Various changes Edit

Spell Casting Edit

  • CastSpellByName("Spell Name" [,onSelf]) -- Now takes optional onSelf parameter similar to UseAction.

Lua Standard Library Edit

  • Enabled the loadstring function.

Other API Functions Edit

  • seterrorhandler(errfunc) -- Sets a new error handler (a function taking error message as its argument)
  • errfunc = geterrorhandler() -- Gets the current error handler.
  • version, buildnum, builddate = GetBuildInfo() -- Returns information about the current build.
  • REMOVED: LaunchURL() will no longer be available.
  • REMOVED: RegisterForSave() will no longer be available to AddOns.
  • MouselookStart() -- Start mouse-looking.
  • MouselookStop() -- Stop mouse-looking.
  • IsMouselooking() -- Return whether mouse look is enabled.

Bug Fixes Edit

  • Enchant tooltips will properly refresh as missing item data is fetched from server.
  • SetBinding will correctly fire UPDATE_BINDINGS events.
  • Removed 1024 character limit on saved variable names.
  • Deeply nested table structures will no longer break saved variables.
  • Fixed UseAction self cast for weapon enchants.
  • Spell links for quest rewards will work reliably.
  • Fixed per-char/global macro ID overwriting.
  • Fixed spell rank increases replacing macros which referred to that spell.
  • Link content spoofing should now be blocked (Presumably with disconnection).
  • Fixed
    </br> problem in SimpleHTML.
  • Fixed problem with tooltip name length breaking accessibility of tooltip content.
  • Fixed schema validation errors in Blizzard XML code.
  • Fixed various SavedVariables encoding issues.

Event Changes Edit

  • Healing will be reported when the target is actually healed, rather than when the client initiates a heal. (Overhealing will still not be reported).
  • There's a new SPELLCAST_CHANNEL_STOP event which replaces both the final SPELLCAST_CHANNEL_UPDATE (arg1==0) and SPELLCAST_STOP for channeled spells (Thanks for Miravlix for researching this).

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.