fix(ui): port retail window control feedback

Map synthetic move and resize affordances to the exact DAT cursors, make chat top chrome movable, and replace stale primary-panel height caps with a dynamic screen-edge constraint. This keeps the retained wrapper adaptation aligned with retail Dragbar/Resizebar behavior.
This commit is contained in:
Erik 2026-07-17 09:40:08 +02:00
parent 3f3cfdac30
commit 06016014bc
16 changed files with 578 additions and 27 deletions

View file

@ -155,8 +155,15 @@ public sealed class RetailWindowManager : IDisposable
var frame = handle.OuterFrame;
if (!frame.ResizeX) width = frame.Width;
if (!frame.ResizeY) height = frame.Height;
width = Math.Clamp(width, frame.MinWidth, frame.MaxWidth);
height = Math.Clamp(height, frame.MinHeight, frame.MaxHeight);
float maxWidth = frame.MaxWidth;
float maxHeight = frame.MaxHeight;
if (frame.ConstrainResizeToParent && frame.Parent is { } parent)
{
maxWidth = MathF.Min(maxWidth, parent.Width - frame.Left);
maxHeight = MathF.Min(maxHeight, parent.Height - frame.Top);
}
width = Math.Clamp(width, frame.MinWidth, MathF.Max(frame.MinWidth, maxWidth));
height = Math.Clamp(height, frame.MinHeight, MathF.Max(frame.MinHeight, maxHeight));
if (frame.Width == width && frame.Height == height) return true;
frame.Width = width;
frame.Height = height;