fix(ui): match retail spell bar controls
Place favorite-bar arrows by their authored sides, import rollover and pressed media through the shared scrollbar, and preserve manual offsets across passive refreshes. Carry the mixed-parent DAT anchor chain to a fixed 18-cell favorite viewport so overflow controls and the Cast button remain inside the retail-sized combat frame. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
02c29e67c8
commit
0134122c28
17 changed files with 424 additions and 59 deletions
|
|
@ -851,7 +851,12 @@ public sealed class UiRoot : UiElement
|
|||
private void UpdateHover(int x, int y)
|
||||
{
|
||||
var (w, _, _) = HitTestTopDown(x, y);
|
||||
if (ReferenceEquals(w, _hoverWidget)) return;
|
||||
if (ReferenceEquals(w, _hoverWidget))
|
||||
{
|
||||
if (w?.ReceivesHoverMouseMove == true)
|
||||
DispatchMouseMove(w, x, y);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_hoverWidget is not null)
|
||||
{
|
||||
|
|
@ -863,7 +868,13 @@ public sealed class UiRoot : UiElement
|
|||
_tooltipFired = false;
|
||||
if (w is not null)
|
||||
{
|
||||
var enter = new UiEvent(w.EventId, w, UiEventType.HoverEnter);
|
||||
var screen = w.ScreenPosition;
|
||||
var enter = new UiEvent(
|
||||
w.EventId,
|
||||
w,
|
||||
UiEventType.HoverEnter,
|
||||
Data1: (int)(x - screen.X),
|
||||
Data2: (int)(y - screen.Y));
|
||||
w.OnEvent(in enter);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue