using Avalonia; using Avalonia.Controls; using Avalonia.Media; namespace ClaudeDo.Ui.Views.Controls; /// /// Borderless, transparent, topmost, click-through window that hosts the translucent drag /// "ghost" — a snapshot of the row being dragged. It never activates (so the source window /// keeps pointer capture) and is repositioned to the screen cursor on every captured move. /// public partial class DragGhostWindow : Window { public DragGhostWindow() => InitializeComponent(); /// /// Show at × /// with of slack around it so the tilt isn't clipped by the window bounds. /// public void SetImage(IImage image, double logicalWidth, double logicalHeight, double pad) { GhostImage.Source = image; GhostImage.Width = logicalWidth; GhostImage.Height = logicalHeight; GhostImage.Margin = new Thickness(pad); Width = logicalWidth + pad * 2; Height = logicalHeight + pad * 2; } }