RegisterEvent ignores case; a frame's first resize precedes OnLoad (#1001)

- `RegisterEvent` and `UnregisterEvent` match a name against the client's event table case-insensitively and drop a name that isn't in it (`0x702140`). A new gate checks that every event name the code fires is in the table.
- A visible XML frame resolves its layout at the post-load hook (`0x76a310` → `0x7680e0(1)`). So its first `OnSizeChanged` fires before its `<Frames>`, `OnLoad` and `OnShow`, as in 1.12.1. A hidden frame still waits for its show.
- `pending_events`' doc now says what the queue is: `SignalEvent` (`0x703e50`) runs handlers in place, and the Lua verbs that still queue are a gap.
- #890 was already fixed by #907; two stale comments around it are corrected.

Fixes #959
Fixes #972
Fixes #560
Closes #890

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sam Sung
2026-10-12 15:08:07 +07:00
committed by GitHub
co-authored by Claude Opus 5.5
parent 720dcf8188
commit 0f505a2ebf
11 changed files with 279 additions and 65 deletions
+2 -1
View File
@@ -643,7 +643,8 @@ pub(super) fn create_frame(
// The builder's pre-load and post-load hooks (`0x6ee4d6`, `0x6ee4ea`): a frame born hidden
// is deferred, as a hidden parent leaves it. A template's load opens its own window.
model.layout_load_begin(h);
model.layout_load_end(h);
// No handler is bound yet, so the resolve this owes fires nothing.
let _ = model.layout_load_end(h);
id
};