Убраны синхронные методы

This commit is contained in:
2026-01-25 01:52:03 +03:00
parent 79bdd8bc62
commit a6ee6fcb36
22 changed files with 1108 additions and 2137 deletions

View File

@@ -4,6 +4,8 @@ using Lattice.Core.DragDrop.Services;
using Lattice.Core.Geometry;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Lattice.UI.DragDrop.Behaviors;
@@ -176,15 +178,27 @@ public abstract class DropTargetBehaviorBase<TElement> : IDropTarget
#region IDropTarget Implementation
/// <inheritdoc/>
public abstract bool CanAcceptDrop(DropInfo dropInfo);
public abstract Task<bool> CanAcceptDropAsync(DropInfo dropInfo, CancellationToken ct = default);
/// <inheritdoc/>
public virtual void DragOver(DropInfo dropInfo)
public virtual async Task DragOverAsync(DropInfo dropInfo, CancellationToken ct = default)
{
// Базовая реализация устанавливает эффект по умолчанию
if (CanAcceptDrop(dropInfo))
if (await CanAcceptDropAsync(dropInfo))
{
dropInfo.SuggestedEffects = Core.DragDrop.Enums.DragDropEffects.Move;
// Установить эффект по умолчанию, если он разрешен
if (dropInfo.CanAcceptEffect(Core.DragDrop.Enums.DragDropEffects.Move))
{
dropInfo.SuggestedEffects = Core.DragDrop.Enums.DragDropEffects.Move;
}
else if (dropInfo.CanAcceptEffect(Core.DragDrop.Enums.DragDropEffects.Copy))
{
dropInfo.SuggestedEffects = Core.DragDrop.Enums.DragDropEffects.Copy;
}
else if (dropInfo.CanAcceptEffect(Core.DragDrop.Enums.DragDropEffects.Link))
{
dropInfo.SuggestedEffects = Core.DragDrop.Enums.DragDropEffects.Link;
}
}
else
{
@@ -193,10 +207,10 @@ public abstract class DropTargetBehaviorBase<TElement> : IDropTarget
}
/// <inheritdoc/>
public abstract void Drop(DropInfo dropInfo);
public abstract Task DropAsync(DropInfo dropInfo, CancellationToken ct = default);
/// <inheritdoc/>
public virtual void DragLeave()
public virtual async Task DragLeaveAsync(CancellationToken ct = default)
{
// Базовая реализация не делает ничего
}