diff --git a/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml b/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml
index 2ac55b06b518..ce7392e4f61b 100644
--- a/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml
+++ b/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml
@@ -37,6 +37,8 @@
x:Name="RecentFilesListView"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
+ CanDragItems="True"
+ DragItemsStarting="RecentFilesListView_DragItemsStarting"
IsItemClickEnabled="True"
IsRightTapEnabled="True"
ItemClick="RecentFilesListView_ItemClick"
diff --git a/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml.cs b/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml.cs
index 47a634bb18c8..e9bba29b081f 100644
--- a/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml.cs
+++ b/src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml.cs
@@ -3,11 +3,13 @@
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Input;
+using Windows.ApplicationModel.DataTransfer;
+using Windows.Storage;
namespace Files.App.UserControls.Widgets
{
///
- /// Represents group of control displays a list of recent folders with .
+ /// Represents a control that displays a list of recent files with .
///
public sealed partial class RecentFilesWidget : UserControl
{
@@ -30,5 +32,32 @@ private void RecentFilesListView_RightTapped(object sender, RightTappedRoutedEve
{
ViewModel.BuildItemContextMenu(e.OriginalSource, e);
}
+
+ private async void RecentFilesListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
+ {
+ var item = e.Items.OfType().First();
+ var storageItems = new List();
+
+ try
+ {
+ var file = await StorageFile.GetFileFromPathAsync(item.Path);
+ if (file != null)
+ storageItems.Add(file);
+ }
+ catch
+ {
+ e.Cancel = true;
+ }
+
+ if (storageItems.Count > 0)
+ {
+ // Create a new data package and set the storage items
+ DataPackage dataPackage = new DataPackage();
+ dataPackage.SetStorageItems(storageItems);
+ e.Data.SetDataProvider(StandardDataFormats.StorageItems, request => request.SetData(storageItems));
+
+ e.Data.RequestedOperation = DataPackageOperation.Move | DataPackageOperation.Copy | DataPackageOperation.Link;
+ }
+ }
}
}