Skip to content

9.1.0 Consolidated UI Changes

Daniel Yates edited this page Jul 8, 2021 · 58 revisions

Contents

Notable Changes

  • The interface version is 90100.
  • The client now supports loading TOC files specific to the Retail client. The client will first look for an "MyAddOn-Mainline.toc" file in in an addon directory and load that if present, or will fall back to the standard "MyAddOn.toc". More details can be read here.
  • A new event trace tool has been added with a significantly improved feature set.
  • A new scrollable data frame system is available.
  • The level up notification frame has been overhauled and replaced by a more generic event toast notification system.
  • The player choice UI and its associated APIs have been significantly overhauled.
  • The transmogrification APIs have undergone significant changes.
  • The world marker (/wm) command now supports target modifiers such as @cursor when used in macros.
  • The string.format function will no longer error for the %x, %u, or %o specifiers when supplied numeric values outside of a signed 32-bit integer range.

Event Trace Tool

The event trace tool has been rewritten and has a significant number of quality-of-life changes that should make using the tool much easier.

  • Search functionality has been added to the event log.
  • Filtered events are now persisted across sessions.
  • Filtered events can now be reconfigured from within the UI directly; you no longer need to worry about accidentally filtering an event you were interested in receiving.
  • A set of default filters has been added for events that are generally spammy or uninteresting.
  • The new event trace tool is capable of monitoring events dispatched through the global callback registry.

The new tool opens up via the same old /etrace command straight into a tabbed interface, starting with the Log tab, which offers the view of all events captured since the window was opened.

Event Trace Log Tab

The log can be cleared by clicking the "Discard All" button, paused and resumed via the "Pause" button, and dummy marker rows can be inserted into the list via the "Marker" button.

Events can be searched via the search box at the top-left. The search functionality supports searching for both event names as well as for elements in the payload string itself.

Double clicking an entry in the event list will automatically populate the search box with the name of the fired event, and filter the list to show only other occurrences of that event. Double clicking a row again will clear the search input and restore the full list.

Event Trace Search

The options dropdown at the top-right offers basic configuration of the new tool.

Event Trace Options

  • Apply Default Filter: Clicking this will reset the configured filters to a set of defaults that filter out uninteresting or spammy events.
  • Show Event Arguments: If checked, shows event payloads next to event names in the log view.
  • Show Event Timestamps: If checked, shows timestamp information at the end of each row.
  • Log Global Registry Events: If checked, captures and displays events dispatched through the global callback registry.

The new Filter tab allows users to control the state of any filtered events. The check/uncheck functionality allows event filters to be temporarily disabled without removing them from the list, and the red "x" button removes the filter entirely.

Event Trace Filter Tab

API Changes by Category

C_BarberShop

Barbershop APIs (both global and namespaced) have been cleaned up to remove the old pre-9.x API entirely.

C_ChallengeMode

C_MythicPlus

C_ChatInfo

C_EventToastManager

The new event toast system and its associated APIs replace the existing level up toasts.

C_FrameManager

C_Garrison

C_Item

C_ItemUpgrade

C_LegendaryCrafting

C_LFGInfo

C_LFGList

C_PetJournal

C_PlayerChoice

C_PlayerInfo

C_QuestLog

C_ScenarioInfo

C_Soulbinds

C_SpellBook

C_Transmog

C_TransmogCollection

C_TransmogSets

C_UIWidgetManager

C_VoiceChat

Global APIs

Enum Changes

The following enumerations have been converted from LE_* style global constants to the new Enum.* format, and names have undergone casing changes.

  • Moved: LE_BATTLE_PET_{WEATHER,ALLY,ENEMY}Enum.BattlePetOwner.*
  • Moved: LE_BATTLE_PET_ACTION_*Enum.BattlePetAction.*
  • Moved: LE_ITEM_ARMOR_*Enum.ItemArmorSubclass.*
  • Moved: LE_ITEM_CLASS_*Enum.ItemClass.*
  • Moved: LE_ITEM_GEM_*Enum.ItemGemSubclass.*
  • Moved: LE_ITEM_MISCELLANEOUS_*Enum.ItemMiscellaneousSubclass.*
  • Moved: LE_ITEM_RECIPE_*Enum.ItemRecipeSubclass.*
  • Moved: LE_ITEM_WEAPON_*Enum.ItemWeaponSubclass.*
  • Moved: LE_PET_BATTLE_STATE_*Enum.PetBattleState.*
  • Moved: LE_TRANSMOG_SEARCH_TYPE_*Enum.TransmogSearchType.*
  • Moved: SCHOOL_MASK_*Enum.Damageclass.Mask*

Event Changes

FrameXML API Changes

Note that each build generally has a significant number of FrameXML utility changes, of which only significant ones of interest will be listed here.

Widget API Changes

AnimationGroup

Region

Frame

  • Added: Frame:SetFrameBuffer - If set, causes a frame to be rendered in its own framebuffer. Can be used to work around alpha-related issues.

EditBox

GameTooltip

DressUpModel

ModelScene

ModelSceneActor

XML Changes

Attributes

Deprecated APIs

The following APIs have been deprecated and will be removed in the next expansion. Migration code can be found here for functions that do not have replacements listed below.

Resources