diff --git a/src/Files.App.Controls/Sidebar/ISidebarViewModel.cs b/src/Files.App.Controls/Sidebar/ISidebarViewModel.cs
index a3673e6d6105..41d8c037bceb 100644
--- a/src/Files.App.Controls/Sidebar/ISidebarViewModel.cs
+++ b/src/Files.App.Controls/Sidebar/ISidebarViewModel.cs
@@ -7,43 +7,8 @@
namespace Files.App.Controls
{
+ public record ItemInvokedEventArgs(PointerUpdateKind PointerUpdateKind) { }
public record ItemDroppedEventArgs(object DropTarget, DataPackageView DroppedItem, SidebarItemDropPosition dropPosition, DragEventArgs RawEvent) { }
public record ItemDragOverEventArgs(object DropTarget, DataPackageView DroppedItem, SidebarItemDropPosition dropPosition, DragEventArgs RawEvent) { }
public record ItemContextInvokedArgs(object? Item, Point Position) { }
-
- public interface ISidebarViewModel
- {
- ///
- /// The source/list of items that will be rendered in the sidebar
- ///
- object SidebarItems { get; }
-
- ///
- /// Gets invoked when the context was requested for an item in the sidebar.
- /// Also applies when context was requested for the pane itsself.
- ///
- /// The sender of this event
- /// The for this event.
- void HandleItemContextInvokedAsync(object sender, ItemContextInvokedArgs args);
-
- ///
- /// Gets invoked when an item drags over any item of the sidebar.
- ///
- /// The for this event.
- /// A that represents the asynchronous operation.
- Task HandleItemDragOverAsync(ItemDragOverEventArgs args);
-
- ///
- /// Gets invoked when an item is dropped on any item of the sidebar.
- ///
- /// The for this event.
- /// A that represents the asynchronous operation.
- Task HandleItemDroppedAsync(ItemDroppedEventArgs args);
-
- ///
- /// Gets invoked when an item is invoked (double clicked) on any item of the sidebar.
- ///
- /// The item that was invoked.
- void HandleItemInvokedAsync(object item, PointerUpdateKind pointerUpdateKind);
- }
}
diff --git a/src/Files.App.Controls/Sidebar/SidebarItem.cs b/src/Files.App.Controls/Sidebar/SidebarItem.cs
index d1ac6b49e5a5..8959dc9a7043 100644
--- a/src/Files.App.Controls/Sidebar/SidebarItem.cs
+++ b/src/Files.App.Controls/Sidebar/SidebarItem.cs
@@ -404,12 +404,7 @@ private async void ItemBorder_DragOver(object sender, DragEventArgs e)
VisualStateManager.GoToState(this, "DragInsertBelow", true);
}
- if (Owner is not null)
- {
- var deferral = e.GetDeferral();
- await Owner.RaiseItemDragOver(this, insertsAbove, e);
- deferral.Complete();
- }
+ Owner?.RaiseItemDragOver(this, insertsAbove, e);
}
private void ItemBorder_ContextRequested(UIElement sender, Microsoft.UI.Xaml.Input.ContextRequestedEventArgs args)
@@ -423,11 +418,10 @@ private void ItemBorder_DragLeave(object sender, DragEventArgs e)
UpdatePointerState();
}
- private async void ItemBorder_Drop(object sender, DragEventArgs e)
+ private void ItemBorder_Drop(object sender, DragEventArgs e)
{
UpdatePointerState();
- if (Owner is not null)
- await Owner.RaiseItemDropped(this, DetermineDropTargetPosition(e), e);
+ Owner?.RaiseItemDropped(this, DetermineDropTargetPosition(e), e);
}
private SidebarItemDropPosition DetermineDropTargetPosition(DragEventArgs args)
diff --git a/src/Files.App.Controls/Sidebar/SidebarItemAutomationPeer.cs b/src/Files.App.Controls/Sidebar/SidebarItemAutomationPeer.cs
index 47721f6cc443..6d62f514afa7 100644
--- a/src/Files.App.Controls/Sidebar/SidebarItemAutomationPeer.cs
+++ b/src/Files.App.Controls/Sidebar/SidebarItemAutomationPeer.cs
@@ -9,6 +9,9 @@
namespace Files.App.Controls
{
+ ///
+ /// Exposes types to Microsoft UI Automation.
+ ///
public sealed partial class SidebarItemAutomationPeer : FrameworkElementAutomationPeer, IInvokeProvider, IExpandCollapseProvider, ISelectionItemProvider
{
public ExpandCollapseState ExpandCollapseState
@@ -17,6 +20,7 @@ public ExpandCollapseState ExpandCollapseState
{
if (Owner.HasChildren)
return Owner.IsExpanded ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed;
+
return ExpandCollapseState.LeafNode;
}
}
@@ -27,7 +31,7 @@ public ExpandCollapseState ExpandCollapseState
public SidebarItemAutomationPeer(SidebarItem owner) : base(owner)
{
- this.Owner = owner;
+ Owner = owner;
}
protected override AutomationControlType GetAutomationControlTypeCore()
@@ -49,28 +53,22 @@ protected override object GetPatternCore(PatternInterface patternInterface)
else if (patternInterface == PatternInterface.ExpandCollapse)
{
if (Owner.CollapseEnabled)
- {
return this;
- }
}
+
return base.GetPatternCore(patternInterface);
}
public void Collapse()
{
if (Owner.CollapseEnabled)
- {
Owner.IsExpanded = false;
- }
}
public void Expand()
{
-
if (Owner.CollapseEnabled)
- {
Owner.IsExpanded = true;
- }
}
public void Invoke()
@@ -106,13 +104,11 @@ protected override int GetPositionInSetCore()
private IList GetOwnerCollection()
{
if (Owner.FindAscendant() is SidebarItem parent && parent.Item?.Children is IList list)
- {
return list;
- }
- if (Owner?.Owner is not null && Owner.Owner.ViewModel.SidebarItems is IList items)
- {
+
+ if (Owner?.Owner is not null && Owner.Owner?.MenuItemsSource is IList items)
return items;
- }
+
return new List