promotional bannermobile promotional banner

LibEQOL

LibEQOL: QoL toolkit for WoW addons. Edit Mode overlays, handles, keyboard nudge, reset, overlay eye, overlap chooser, auto settings (checkbox/dropdown/slider/color). Settings Mode for Blizzard Settings with prefix safety and notify hooks.

File Details

23

  • R
  • Apr 21, 2026
  • 111.35 KB
  • 1.4K
  • 12.0.1+11
  • Retail

File Name

LibEQOL-23.zip

Supported Versions

  • 12.0.1
  • 12.0.0
  • 11.2.7
  • 11.2.5
  • 11.2.0
  • 11.1.7
  • 11.1.5
  • 11.1.0
  • 11.0.7
  • 11.0.5
  • 11.0.2
  • 11.0.0

Changelog

[23] - 2026-04-21

Fixed:

  • EditMode: Input rows now receive the current settings row width before setup, preventing pooled edit boxes from inheriting stale tiny widths.
  • EditMode/Settings: Input controls now clamp transiently small available widths to a practical minimum instead of collapsing to a 1px edit box.

[22] - 2026-04-13

Added:

  • Settings: Input controls now support numeric min/max bounds with optional clampToRange handling.

Fixed:

  • Settings: Multi Dropdown rows now forward desc/cbDesc/tooltip data so row tooltips render consistently.

[21] - 2026-03-24

Fixed:

  • EditMode: Standalone/settings dialogs now keep bottom action buttons in stable full-width or compact two-column layouts when the dialog rebuilds.
  • EditMode: settingsMaxHeight now reserves space for the bottom action area so dialog buttons stay visible instead of being clipped by the scroll region.

[20] - 2026-03-15

Added:

  • EditMode: Multi Dropdown rows now support refreshOnSelect = false to skip the automatic settings refresh after each menu toggle when only the summary text should change.

Fixed:

  • EditMode: Settings and setting-value refreshes are now deferred while dropdown menus are open, preventing re-entrant rebuilds during menu interaction.
  • EditMode: Deferred setting-value refreshes now retain queued target rows so dependent controls stay in sync once the menu closes.

[19] - 2026-03-08

Added:

  • EditMode: New opt-in standalone settings dialog APIs (ShowStandaloneSettingsDialog, HideStandaloneSettingsDialog, IsStandaloneSettingsDialogShown) to reuse Edit Mode settings panels outside Blizzard Edit Mode without changing default behavior.
  • EditMode: Standalone dialog calls can reuse registered AddFrameSettings / AddFrameSettingsButton data or accept ad-hoc settings, buttons, and defaultPosition data for non-registered frames.
  • Docs: Added standalone settings dialog documentation and linked the new flow from the Edit Mode getting-started/API docs.

[18] - 2026-02-21

Added:

  • EditMode: New optional sublib LibEQOLNativeEditMode-1.0 for native manager/selection/snap/grid edit workflows.
  • Examples: Added native mode usage examples in examples/NativeEditModeExamples.lua.
  • Debug: New optional sublib LibEQOLDebugMode-1.0 for explicit session-based addon debugging and bug-report workflows.
  • Debug: New APIs for tenancy and activation gates (RegisterAddon, StartSession, StopSession, tier controls, and active-session queries).
  • Debug: Timeline capture surface (Trace, CaptureError, BeginSpan, EndSpan, Wrap) with strict no-op behavior unless a session is active.
  • Debug: Structured export (GetTimeline, BuildReport) including hierarchical deep-mode span trees and copy-ready text reports.
  • Debug: Optional SavedVariables persistence with caller-provided savedRoot + path, plus ring-buffer limits (maxEventsPerSession, maxSessions, maxPayloadBytes, maxSpanDepth).
  • Docs/Examples: Added Debug Mode docs pages and examples/DebugModeExamples.lua.
  • Core: Umbrella module now exposes NativeEditMode via _G.LibEQOL.NativeEditMode and LibEQOL:GetModule("NativeEditMode").
  • Core: Umbrella module now exposes DebugMode via _G.LibEQOL.DebugMode and LibEQOL:GetModule("DebugMode").
  • Packaging: LibEQOL.toc now includes LibEQOLDebugMode.xml for standalone installs (embedding remains opt-in via explicit include).
  • Packaging: Added vendored libs/LibNicknameShare/LibNicknameShare.lua.

Optimized:

  • EditMode/NativeEditMode: onEditModeEnter now refreshes active layout data only when activeLayoutIndex or layoutSnapshot cache is missing.
  • EditMode/NativeEditMode: Overlay visibility toggles now avoid per-call temporary table allocations while iterating selection regions.

[17] - 2026-02-09

Optimized:

  • EditMode: Reduced repeated C_EditMode.GetLayouts() calls by caching lazy layoutNames lookups and syncing cache entries from layout snapshots.
  • EditMode: Switched specialization listener to RegisterUnitEvent("PLAYER_SPECIALIZATION_CHANGED", "player") to avoid unnecessary non-player event handling.

[16] - 2026-02-08

Fixed:

  • Wrong parent template

[15] - 2026-01-26

Added:

  • EditMode: Manager toggle panel under EditModeManagerFrame (scrollable, two-column layout, categories, sorting, and eye toggle to hide overlays).
  • EditMode: Manager category API (AddManagerCategory) and toggle API (AddManagerToggle/AddManagerCheckbox).
  • EditMode: New Input setting row (plain text/number, readOnly, maxChars, inputWidth, formatter).
  • EditMode: Listen for EditModeExternal.hideDialog to close dialogs/selections for addon compatibility.
  • Settings: New Input control (CreateInput) with single-line + multiline support, readOnly, placeholder, and width/height options.
  • Settings: XML templates for Color Overrides (_ColorSwatchTemplate, _ColorOverrideTemplate).

[14] - 2026-01-24

Fixed:

  • EditMode: Dividers now appear correctly on first expand; refresh applies to rows without SetEnabled.
  • EditMode: Prevented settings row width from shrinking after repeated resets (dropdowns/sliders stay aligned).
  • EditMode: Settings enable-state cache now updates on rebuild/refresh, avoiding stale isEnabled after reset.
  • EditMode: layout callbacks now fire at least once on init (even when active layout is Modern/Classic).

[13] - 2026-01-22

Fixed:

  • EditMode: Settings row widths now clamp to available space when no scroll bar is visible (dropdowns, multi dropdowns, sliders).
  • EditMode: Slider value text stays within the row when input is hidden.
  • EditMode: Settings rows reserve scroll bar width even when it is hidden to keep alignment consistent.

[12] - 2026-01-22

Added:

  • EditMode: Optional max height for settings lists with automatic scrolling (settingsMaxHeight/maxSettingsHeight, SetFrameSettingsMaxHeight).
  • Docs: Added guidance for settings list max height and the new setter.

Fixed:

  • EditMode: Settings dialog layout tweaks for dropdown+color, multi dropdown, and slider input alignment.

[11] - 2026-01-02

Fixed:

  • Settings: Multi Dropdown no longer duplicates when expanding parent sections (avoids re-entrant SyncSetting during init).

[10] - 2025-12-28

Added:

  • EditMode: Per-frame settings layout overrides for row spacing and row heights (slider, dropdown, divider, etc).

Fixed:

  • EditMode: Settings refresh is now debounced and avoids redundant layout/enable/visibility updates to improve performance.

[9] - 2025-12-23

Added:

  • Settings: Per-option tooltips for dropdowns (single, scroll, checkbox+dropdown) via option tables (tooltip/desc/description), including forwarded disabled/warning/recommend/onEnter.
  • Docs: Documented per-option tooltip support for dropdowns.

[8] - 2025-12-22

Added:

  • EditMode: Additional frames included in the manager "eye" hide list (Midnight frames).
  • Settings: Category lookup/search helpers (GetCategoryByID, GetCategoryByName, FindCategory).

Fixed:

  • Settings: Slider input and formatter bugs; slider updates are now debounced.

[7] - 2025-12-12

Added:

  • Settings: Color Overrides can opt into alpha via hasOpacity = true; supports ColorMixin callbacks (getColorMixin/setColorMixin/getDefaultColorMixin) alongside numeric RGB(A).
  • Settings: Color Overrides now auto-size based on entry count (no more overlap) and respect spacing/rowHeight; hover highlight removed to match Blizzard.
  • Docs: Settings pages aligned to real APIs (prefix/variable requirement, Color Overrides alpha/mixin example, option defaults).
  • Settings: New checkbox+dropdown combined control using Blizzard’s template.
  • Settings: New checkbox+slider combined control using Blizzard’s template.
  • Settings: New checkbox+button combined control using Blizzard’s template.
  • Settings: Buttons can now show a left-hand label (pass label/name/textLabel).
  • Settings: New CreateScrollDropdown control for scrollable single-select menus (height/menuHeight).

Fixed:

  • Settings: Color Overrides label color pooling no longer leaks between rows; defaults restored on reuse.
  • Settings: Multi Dropdown forwards customText/customDefaultText and callback to the mixin again.
  • Settings: Multi Dropdown now correctly uses height to show a scrollframe.
  • Settings: Color Overrides padding default reduced to zero to avoid extra trailing space; extent respects explicit basePadding/minHeight/height.
  • Settings: Multi-dropdown serialization to ignore boolean array entries, preventing table.concat crashes when saved selections are stored as [1]=true, [2]=true,

[6] - 2025-12-07

Added:

  • EditMode: Snap-to-grid/magnetism support with preview; frames expose Blizzard’s magnetism API and snap on drag finish when snapping is enabled.
  • Settings: Top-level order = { ... } for map-based dropdowns (single, multi, sound) to control option ordering.
  • Settings: defaultSelection for multi dropdowns so “Reset to default” restores a defined selection (defaults to empty).
  • Settings: Color overrides can tint labels via colorizeLabel/colorizeText (doc’d).
  • Settings: Sound dropdown honors disabled state on init and greys out its label when parent checks disable it.

Fixed:

  • Multi dropdown hideSummary now respected again.
  • Rounded position offsets when firing EditMode callbacks to avoid tiny float drift.

[5] - 2025-12-06

Bugfix:

  • Duplicate load of XML templates shared across multiple addons fixed; template names are auto-suffixed via @project-abbreviated-hash@ in the BigWigs packager to avoid “Deferred XML Node … already exists” when multiple embeds are present