Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
x:Name="RecentFilesListView"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
CanDragItems="True"
DragItemsStarting="RecentFilesListView_DragItemsStarting"
IsItemClickEnabled="True"
IsRightTapEnabled="True"
ItemClick="RecentFilesListView_ItemClick"
Expand Down
36 changes: 35 additions & 1 deletion src/Files.App/UserControls/Widgets/RecentFilesWidget.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
/// <summary>
/// Represents group of control displays a list of recent folders with <see cref="WidgetFolderCardItem"/>.
/// Represents a control that displays a list of recent folders with <see cref="WidgetFolderCardItem"/>.
/// </summary>
public sealed partial class RecentFilesWidget : UserControl
{
Expand All @@ -30,5 +32,37 @@ private void RecentFilesListView_RightTapped(object sender, RightTappedRoutedEve
{
ViewModel.BuildItemContextMenu(e.OriginalSource, e);
}

private async void RecentFilesListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
{
var items = e.Items.OfType<RecentItem>().ToList();
if (items.Count > 0)
{
var storageItems = new List<IStorageItem>();
foreach (var item in items)
{
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;
}
}
}
}
}