NTFS load order, a title-sorted AddOns list, and tooltips at the cursor
- addons load in the order NTFS lists a folder, case-insensitive with an underscore before the letters, the order the vanilla corpus was written against and the one that decides which addon provides a shared library (2178) - GetNumAddOns and the index form of every AddOn verb walk a title-sorted list that hides the Blizzard addons the server says to hide, and the character-select AddOns list is in title order (2175) - SetPoint and SetAllPoints raise the reference's own errors for a frame name that does not exist or an omitted relative frame instead of quietly anchoring to the parent, and an explicit nil means the screen root (2176) - a tooltip owned with ANCHOR_CURSOR follows the mouse, which pfUI's tooltip, xpbar and chat modules, pfQuest's browser and TipBuddy ask for; an omitted or unknown anchor is ANCHOR_LEFT (2176) - a $parent name handed to CreateFrame, CreateTexture or CreateFontString expands as it does in XML, so FonzAppraiser's thirty dropdowns and pfQuest's search icon get the names they asked for (2176) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -64,6 +64,17 @@ pub(crate) struct Model {
|
||||
/// Every discovered addon, in load order — the AddOn API's registry, filled by the host at
|
||||
/// world entry ([`super::UiScript::register_addons`]). See [`super::addon`].
|
||||
pub(crate) addons: Vec<super::addon::AddOnInfo>,
|
||||
/// **The Lua index space** — positions into [`Self::addons`], `## Title`-sorted and
|
||||
/// hidden-filtered (decision 2175). NOT the registry: the reference keeps two structures and
|
||||
/// they are different permutations of different sets (wow-re
|
||||
/// `system/ui/scratch/addon-registry-scan-and-order.md` §7).
|
||||
pub(crate) addon_index: Vec<usize>,
|
||||
/// The lowercased names `SMSG_ADDON_INFO` marked `status = 2`, or **`None` when no reply has
|
||||
/// arrived this session** — and `None` is why [`Self::addon_index`] can be legitimately empty
|
||||
/// (decision 2175). `[0xbe1b90]` is zeroed by the registry reset `0x51fad1` and written
|
||||
/// nowhere but the reply's own rebuild, so `GetNumAddOns()` really is 0 until the server
|
||||
/// answers.
|
||||
pub(crate) addon_info_hidden: Option<Vec<String>>,
|
||||
/// The AddOns folder, so `LoadAddOn` can read an addon's files from inside a Lua binding.
|
||||
pub(crate) addons_root: Option<std::path::PathBuf>,
|
||||
/// The host's reader for a chain-sourced addon's files (`AddOnInfo::chain`), by
|
||||
@@ -1812,6 +1823,8 @@ impl Model {
|
||||
pub(crate) fn new() -> Model {
|
||||
Model {
|
||||
addons: Vec::new(),
|
||||
addon_index: Vec::new(),
|
||||
addon_info_hidden: None,
|
||||
addons_root: None,
|
||||
addons_chain_reader: None,
|
||||
measurer: None,
|
||||
|
||||
Reference in New Issue
Block a user