Убраны синхронные методы
This commit is contained in:
@@ -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)
|
||||
{
|
||||
// Базовая реализация не делает ничего
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user