promotional bannermobile promotional banner

Dragonflight UI Classic - Revived

Dragonflight UI Classic - Revived
Back to Files

DragonflightUI_Revived_V1.zip

File nameDragonflightUI_Revived_V1.zip
Uploader
insanerage80insanerage80
Uploaded
Jul 22, 2026
Downloads
1.1K
Size
52.1 MB
Flavors
MoP ClassicClassic TBCClassic
File ID
8490330
Type
R
Release
Supported game versions
  • 5.5.4
  • 2.5.6
  • 1.15.9

What's new

Fixes addon breakage on TBC 2.5.6 and MoP 5.5.4 clients.

Fixes

  • Quest tracker freezeUpdateTrackerState resized WatchFrame inside its own SetPoint hook; on 5.5.4 this feeds back into tracker relayout and stalls the client for minutes at login and on every tracker update. Resize now happens once in MoveTracker.
  • Removed globals/frames: guards and fallbacks for DebuffTypeColorTextStatusBar_UpdateTextStringTarget_Spellbar_AdjustPositionMiniMapLFGFrame, StanceBar textures, XP/Rep/MaxLevel bars, MultiCastActionBarFrame, retail-style PartyFrame (skipped, port TODO).
  • Editmode-managed UI: hide StatusTrackingBarManager (replaces MainMenuExpBar/ReputationWatchBar), reanchor BagsBar via editmode override, chain-anchor micromenu buttons (captured anchors carry nil relativeTo on 5.5.4), SetMovable before SetUserPlaced on unitframes, game menu buttons via InitButtons/AddButton API, calendar button click handlers, LFG eye visibility.

Tested in-game on 5.5.4 and 2.5.6. Some fixes mirror #687 - credit to its author for the tracker and micromenu groundwork.

Classic Era 1.15.9 compatibility overhaul (+ fixes & new features)

Era patch 1.15.9 backported the Midnight-era UI to Classic (Edit Mode, retail-style action bars/party frames, Blizzard_NamePlates with the new nameplateStyle CVar, and a much stricter script-time governor — the client logs it as LimitedLuaResources). This PR makes DragonflightUI fully functional on 1.15.9 Era, verified through extended live-play iteration on an Era client.

Heads-up: this was developed and tested on Era only. TBC/MoP share most of the gated paths (feature detection, not flavor checks, wherever possible), Wrath/Cata paths are untouched — but there may still be bugs. Treat it as a strong starting point, happy to iterate.

Includes @icebreethe's #691 commits (cherry-picked with attribution) — most of their TBC 2.5.6/MoP 5.5.4 guards apply to Era 1.15.9 unchanged.

Core compatibility

  • DF.API.Version.IsModern — feature probe (EditModeManagerFrame/StatusTrackingBarManager) instead of flavor checks; true on TBC 2.5.6+, MoP 5.5.4+, Era 1.15.9+, stays correct as Blizzard rolls the backport forward
  • Era routed onto the modern-UI paths (action bars, micromenu chain-anchoring, LFG eye, Edit-Mode game menu); BagsBar sites are feature-checked (Era keeps MainMenuBarBagButtons)
  • Editmode module now initializes LibEditModeOverride on Era — without it OverrideBlizzEditmode is nil and the whole Actionbar module died at enable time
  • Party reskin skipped on modern clients (member frames are pooled/anonymous — same situation as the existing TBC TODO)
  • TextStatusBar/raid-manager/etc. removals guarded capability-based; audited against the full Blizzard 1.15.8→1.15.9 exported source diff (flavor-accurate: per-flavor TOCs + AllowLoadGameType tags)

The script-time governor (why the enable flow changed)

1.15.9's LimitedLuaResources kills execution slices at a small, variable budget (observed ~350ms–1s), surfacing as script ran too long at whatever innocent line is executing. DFUI's enable chain regularly crossed it, killing modules half-initialized.

  • Actionbar setup now runs as ~40 small pcall-isolated steps batched into ~100ms time slices (2–3 frames total, no visible assembly): one slow/failing step can no longer sever the chain
  • Helper:Benchmark optionally persists per-phase timings to a DragonflightUIPerfLog SavedVariable — this is how every issue in this PR was diagnosed from disk, and should help debugging other flavors

Fixes

  • Action bar backgrounds: modern buttons' own SlotBackground (classic quickslot art) drew over the DF slot deco on every bar — now hidden (also on pet buttons)
  • Main bar: keep MainActionBar shown-but-parked (buttons are parented to it; upstream's Hide() only worked because ActionBarController re-shows it later on stock timing)
  • Main bar paging: full 1–6 arrow cycling via C_ActionBar.SetActionBarPage (Blizzard's modern OnClick skips pages claimed by visible MultiBars → cycle collapsed to 1↔2) + own ACTIONBAR_PAGE_CHANGED watcher for the page number (its updater died with UnregisterAllEvents)
  • Buffs: Blizzard buff/debuff frames re-shown by Edit Mode after Hide() (doubled buffs) — now reparented to a hidden holder
  • Pet bar: modern PetActionButtons are main-button-sized; scaled to classic pet-bar proportions, modern slot art stripped
  • Micro menu: right-to-left chain from the container edge (deterministic right alignment)
  • Vehicle/taxi leave button: wears the retail round exit-arrow art the addon already ships (was preview-only) and docks at the main bar's right end
  • ForceMoveBlizzEditModeGhosts: batched into a single ApplyChanges (4× ~65ms → 1×)
  • Assorted nil-guards from the source-diff audit (gryphon step upvalue, CompactRaidFrameManager_ResizeFrame_SavePosition, micromenu anchors, …)

New

  • Nameplates module (default on): flips the new nameplateStyle CVar to Modern — Blizzard's native retail thin plates (Era defaults to the classic ring/level-box style) — plus DF health-bar texture, outlined names, and nameplateShowClassColor for class-colored enemies
  • DFMinimap addon adoption (only if that addon is installed: applies its look, disables it)

Known gaps: PartyFrame on modern clients (structural, see TBC TODO), Dark Mode still has no live revert, cosmetic defaults (pet scale, bag/micro nudges) tuned on one setup.

  • Combat reload safetyHelper:RunOutOfCombat defers the Actionbar/Unitframe enable chains when loading under combat lockdown — protected-frame setup (moving secure bars, state drivers, SetAttribute) is silently blocked in combat, so a mid-fight /reload used to bring the UI up half-built. Setup now completes on PLAYER_REGEN_ENABLED with a chat notice.
  • Main bar page arrows rebuilt as secure buttons (modern-client fallback path): the adopted Blizzard arrows lost their skin to MainActionBar:OnShow → UpdateEndCaps re-atlasing on every loading screen, and their insecure OnClick (C_ActionBar.SetActionBarPage) was lockdown-blocked in combat. Now type='actionbar' SecureActionButtonTemplate arrows with a [bar:N] state driver keeping each arrow's target page current — full 1-6 cycle, works in combat. Two follow-up gotchas fixed: both click edges must be registered (ActionButtonUseKeyDown=1 acts on down-press only), and explicitly LeftButton (on modern clients "Any" includes the mouse wheel as click buttons).
  • Page-cycling bindings routed through the secure arrows: NEXT/PREVIOUSACTIONPAGE run ActionBar_PageUp/Down, which cycle only VIEWABLE_ACTION_BAR_PAGES — {1,2} with the multibars shown — and burst-y mouse wheels deliver dozens of ticks per gesture, strobing the page 1↔2. SetOverrideBindingClick on the bound keys gives one full-cycle step per tick, combat-safe.
  • Party frames: circular mask on the pooled-frame portraits — the in-range portrait snapshot is square and its corners poked out behind the DF ring art.

This mod has no additional files