fix: social gate round 2, part 1 - border-only move cursor, literal-\n
empty state, retail amber row selection - Move cursor (user-directed, ALL windows): HoverWindowMove now advertises only where the window frame element itself wins the hit-test - its border pixels; interior points resolve to content children. Matches retail's Dragbar-chrome-only move cursor. Whole-surface dragging still works, it just does not advertise. - Empty-state text (round 2): the DAT stores the LITERAL two-character escape backslash-n (probe-verified - the dump printed the escape, not line breaks), so the round-1 newline split never matched. Escapes are normalized before splitting in DatWidgetFactory authored text. - Selected fellow amber (user: "check retail"): probe-verified - the row name band 0x10000282 AUTHORS the retail selected-row art (DirectState 0x06001450 + Highlight 0x06001451, the amber). Selection flips the band's ActiveState to Highlight; no invented tint. App suite 4,976/3 skips. Confirmation-text + refused-drop-notification research (the round's items 4-5) lands as part 2. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
72ceddce2e
commit
fc62cb6397
4 changed files with 56 additions and 5 deletions
|
|
@ -707,11 +707,17 @@ public static class DatWidgetFactory
|
|||
// newlines (the fellowship empty-state is three sentences over
|
||||
// '\n's). A single Line renders them as one clipped run — split
|
||||
// into one Line per authored line, exactly as retail's multiline
|
||||
// UIElement_Text draws them. The provider re-reads DefaultColor
|
||||
// UIElement_Text draws them. Gate round 2: the DAT stores the
|
||||
// LITERAL two-character escape "\n" (0x5C 0x6E — probe-verified:
|
||||
// the dump printed backslash-n, not a line break), so normalize
|
||||
// the escape before splitting. The provider re-reads DefaultColor
|
||||
// per call (NOT captured eagerly) so state-driven font-color
|
||||
// changes keep tracking, the same live-color contract the
|
||||
// single-line provider always had.
|
||||
string[] parts = [.. authored.Split('\n').Select(static p => p.TrimEnd('\r'))];
|
||||
string[] parts = [.. authored
|
||||
.Replace("\\n", "\n")
|
||||
.Split('\n')
|
||||
.Select(static p => p.TrimEnd('\r'))];
|
||||
t.LinesProvider = () =>
|
||||
[.. parts.Select(p => new UiText.Line(p, t.DefaultColor))];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue