fix(ui): select retained items on mouse down
Port UIElement_ListBox's press-time selection ordering through the shared retained item-list contract. Inventory, loot, paperdoll, and physical shortcuts now update canonical selection before release or drag promotion, while target-mode consumption suppresses drag and release-time activation. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
2dd5cb80d2
commit
043ab10b3c
18 changed files with 292 additions and 62 deletions
|
|
@ -275,6 +275,61 @@ public class DragDropSpineTests
|
|||
Assert.True(used);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PhysicalItemPress_selectsBeforeRelease_thenClickActivates()
|
||||
{
|
||||
var (root, list, cell) = RootWithBoundSlot(0x5001u);
|
||||
var selected = new List<uint>();
|
||||
bool used = false;
|
||||
list.PrimaryItemPressed = item =>
|
||||
{
|
||||
selected.Add(item);
|
||||
return false;
|
||||
};
|
||||
cell.Clicked = () => used = true;
|
||||
|
||||
root.OnMouseDown(UiMouseButton.Left, 10, 10);
|
||||
|
||||
Assert.Equal(new uint[] { 0x5001u }, selected);
|
||||
Assert.False(used);
|
||||
|
||||
root.OnMouseUp(UiMouseButton.Left, 10, 10);
|
||||
|
||||
Assert.True(used);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConsumedPhysicalItemPress_suppressesCompletedActivation()
|
||||
{
|
||||
var (root, list, cell) = RootWithBoundSlot(0x5001u);
|
||||
bool used = false;
|
||||
bool doubleUsed = false;
|
||||
list.PrimaryItemPressed = _ => true;
|
||||
cell.Clicked = () => used = true;
|
||||
cell.DoubleClicked = () => doubleUsed = true;
|
||||
|
||||
root.OnMouseDown(UiMouseButton.Left, 10, 10);
|
||||
root.OnMouseUp(UiMouseButton.Left, 10, 10);
|
||||
root.OnMouseDown(UiMouseButton.Left, 10, 10);
|
||||
root.OnMouseUp(UiMouseButton.Left, 10, 10);
|
||||
|
||||
Assert.False(used);
|
||||
Assert.False(doubleUsed);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConsumedPhysicalItemPress_cannotPromoteIntoDrag()
|
||||
{
|
||||
var (root, list, _) = RootWithBoundSlot(0x5001u);
|
||||
list.PrimaryItemPressed = _ => true;
|
||||
|
||||
root.OnMouseDown(UiMouseButton.Left, 10, 10);
|
||||
root.OnMouseMove(20, 10);
|
||||
|
||||
Assert.Null(root.DragSource);
|
||||
Assert.Null(root.DragPayload);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RightClick_withoutDrag_requestsItemListAppraisal()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue