Skip to content

Commit 1cc3475

Browse files
committed
Merge Main
1 parent 5c5e1f1 commit 1cc3475

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

src/Files.App/Views/MainPage.xaml.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
using Microsoft.UI.Xaml.Media;
1313
using Microsoft.UI.Xaml.Navigation;
1414
using System.Runtime.InteropServices;
15-
using Windows.ApplicationModel.DataTransfer;
1615
using Windows.Foundation.Metadata;
1716
using Windows.Graphics;
1817
using Windows.UI.Input;
@@ -508,26 +507,30 @@ private void SidebarControl_ItemContextInvoked(object sender, ItemContextInvoked
508507

509508
private async void SidebarControl_ItemDragOver(object sender, ItemDragOverEventArgs e)
510509
{
511-
// Expected to fail with COMException if the OLE drag payload is stale
512-
var deferral = SafetyExtensions.IgnoreExceptions(() => e.RawEvent.GetDeferral(), App.Logger, typeof(COMException));
510+
// GetDeferral()/Complete() can throw COMException if the underlying drag operation has already been released (e.g. canceled by the system or window closed)
511+
var deferral = SafetyExtensions.IgnoreExceptions(() => e.RawEvent.GetDeferral(), App.Logger);
513512

514-
await SafetyExtensions.IgnoreExceptions(
515-
() => SidebarAdaptiveViewModel.HandleItemDragOverAsync(e), App.Logger);
513+
await SafetyExtensions.IgnoreExceptions(async () =>
514+
{
515+
await SidebarAdaptiveViewModel.HandleItemDragOverAsync(e);
516+
}, App.Logger);
516517

517518
if (deferral is not null)
518-
SafetyExtensions.IgnoreExceptions(() => deferral.Complete(), App.Logger, typeof(COMException));
519+
SafetyExtensions.IgnoreExceptions(() => deferral.Complete(), App.Logger);
519520
}
520521

521522
private async void SidebarControl_ItemDropped(object sender, ItemDroppedEventArgs e)
522523
{
523-
// Expected to fail with COMException if the OLE drag payload is stale
524-
var deferral = SafetyExtensions.IgnoreExceptions(() => e.RawEvent.GetDeferral(), App.Logger, typeof(COMException));
524+
// GetDeferral()/Complete() can throw COMException if the underlying drag operation has already been released (e.g. canceled by the system or window closed)
525+
var deferral = SafetyExtensions.IgnoreExceptions(() => e.RawEvent.GetDeferral(), App.Logger);
525526

526-
await SafetyExtensions.IgnoreExceptions(
527-
() => SidebarAdaptiveViewModel.HandleItemDroppedAsync(e), App.Logger);
527+
await SafetyExtensions.IgnoreExceptions(async () =>
528+
{
529+
await SidebarAdaptiveViewModel.HandleItemDroppedAsync(e);
530+
}, App.Logger);
528531

529532
if (deferral is not null)
530-
SafetyExtensions.IgnoreExceptions(() => deferral.Complete(), App.Logger, typeof(COMException));
533+
SafetyExtensions.IgnoreExceptions(() => deferral.Complete(), App.Logger);
531534
}
532535

533536
private void SidebarControl_ItemInvoked(object sender, ItemInvokedEventArgs e)

0 commit comments

Comments
 (0)