Skip to content

Commit 19034c8

Browse files
authored
Remove temp variable in code of #9973 (#9982)
Remove temp variable for code of #9973
1 parent 8a8c697 commit 19034c8

File tree

5 files changed

+45
-46
lines changed

5 files changed

+45
-46
lines changed

src/Files.App/UserControls/SidebarControl.xaml.cs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ public sealed partial class SidebarControl : NavigationView, INotifyPropertyChan
5959

6060
private bool isDropOnProcess = false;
6161

62-
private bool wasOpenPropertiesSelected = false;
63-
6462
/// <summary>
6563
/// true if the user is currently resizing the sidebar
6664
/// </summary>
@@ -160,7 +158,7 @@ public SidebarControl()
160158
OpenInNewWindowCommand = new RelayCommand(OpenInNewWindow);
161159
OpenInNewPaneCommand = new RelayCommand(OpenInNewPane);
162160
EjectDeviceCommand = new RelayCommand(EjectDevice);
163-
OpenPropertiesCommand = new RelayCommand(OpenProperties);
161+
OpenPropertiesCommand = new RelayCommand<CommandBarFlyout>(OpenProperties);
164162
}
165163

166164
public SidebarViewModel ViewModel
@@ -191,7 +189,7 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
191189
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
192190
}
193191

194-
private List<ContextMenuFlyoutItemViewModel> GetLocationItemMenuItems(INavigationControlItem item)
192+
private List<ContextMenuFlyoutItemViewModel> GetLocationItemMenuItems(INavigationControlItem item, CommandBarFlyout menu)
195193
{
196194
ContextMenuOptions options = item.MenuOptions;
197195

@@ -317,6 +315,7 @@ private List<ContextMenuFlyoutItemViewModel> GetLocationItemMenuItems(INavigatio
317315
Text = "BaseLayoutContextFlyoutPropertiesFolder/Text".GetLocalizedResource(),
318316
Glyph = "\uE946",
319317
Command = OpenPropertiesCommand,
318+
CommandParameter = menu,
320319
ShowItem = options.ShowProperties
321320
},
322321
new ContextMenuFlyoutItemViewModel()
@@ -491,25 +490,22 @@ private void MoveItemToBottom()
491490
}
492491
}
493492

494-
private void OpenProperties()
493+
private void OpenProperties(CommandBarFlyout menu)
495494
{
496-
wasOpenPropertiesSelected = true;
495+
EventHandler<object> flyoutClosed = null!;
496+
flyoutClosed = (s, e) =>
497+
{
498+
menu.Closed -= flyoutClosed;
499+
SidebarItemPropertiesInvoked?.Invoke(this, new SidebarItemPropertiesInvokedEventArgs(rightClickedItem));
500+
};
501+
menu.Closed += flyoutClosed;
497502
}
498503

499504
private async void EjectDevice()
500505
{
501506
await DriveHelpers.EjectDeviceAsync(rightClickedItem.Path);
502507
}
503508

504-
private void Flyout_Closed(object sender, object e)
505-
{
506-
((CommandBarFlyout)sender).Closed -= Flyout_Closed;
507-
if (!wasOpenPropertiesSelected)
508-
return;
509-
SidebarItemPropertiesInvoked?.Invoke(this, new SidebarItemPropertiesInvokedEventArgs(rightClickedItem));
510-
wasOpenPropertiesSelected = false;
511-
}
512-
513509
private async void Sidebar_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
514510
{
515511
if (IsInPointerPressed || args.InvokedItem == null || args.InvokedItemContainer == null)
@@ -567,9 +563,7 @@ private void NavigationViewItem_RightTapped(object sender, RightTappedRoutedEven
567563

568564
rightClickedItem = item;
569565

570-
itemContextMenuFlyout.Closed += Flyout_Closed;
571-
572-
var menuItems = GetLocationItemMenuItems(item);
566+
var menuItems = GetLocationItemMenuItems(item, itemContextMenuFlyout);
573567
var (_, secondaryElements) = ItemModelListToContextFlyoutHelper.GetAppBarItemsFromModel(menuItems);
574568

575569
if (!UserSettingsService.AppearanceSettingsService.MoveOverflowMenuItemsToSubMenu)

src/Files.App/UserControls/Widgets/DrivesWidget.xaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@
7777
Tag="{x:Bind Item.Path}"
7878
ToolTipService.ToolTip="{x:Bind Item.Text, Mode=OneWay}">
7979
<Button.ContextFlyout>
80-
<MenuFlyout Opening="MenuFlyout_Opening"
81-
Closed="MenuFlyout_Closed">
80+
<MenuFlyout Opening="MenuFlyout_Opening">
8281
<MenuFlyout.Items>
8382
<MenuFlyoutItem
8483
x:Name="OpenInNewPane"

src/Files.App/UserControls/Widgets/DrivesWidget.xaml.cs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
using CommunityToolkit.Mvvm.ComponentModel;
2121
using Microsoft.UI.Xaml.Media.Imaging;
2222
using System.Collections.Specialized;
23+
using Files.App.Helpers.XamlHelpers;
24+
using Microsoft.UI.Xaml.Controls.Primitives;
2325

2426
namespace Files.App.UserControls.Widgets
2527
{
@@ -92,8 +94,6 @@ public IShellPage AppInstance
9294
}
9395
}
9496

95-
private DriveItem? propertiesItem = null;
96-
9797
public string WidgetName => nameof(DrivesWidget);
9898

9999
public string AutomationProperties => "DrivesWidgetAutomationProperties/Name".GetLocalizedResource();
@@ -189,9 +189,21 @@ private async void UnpinFromFavorites_Click(object sender, RoutedEventArgs e)
189189
App.SidebarPinnedController.Model.RemoveItem(item.Path);
190190
}
191191

192-
private async void OpenDriveProperties_Click(object sender, RoutedEventArgs e)
192+
private void OpenDriveProperties_Click(object sender, RoutedEventArgs e)
193193
{
194-
propertiesItem = ((MenuFlyoutItem)sender).DataContext as DriveItem;
194+
var presenter = DependencyObjectHelpers.FindParent<MenuFlyoutPresenter>((MenuFlyoutItem)sender);
195+
var flyoutParent = presenter?.Parent as Popup;
196+
var propertiesItem = ((MenuFlyoutItem)sender).DataContext as DriveItem;
197+
if (propertiesItem is null || flyoutParent is null)
198+
return;
199+
200+
EventHandler<object> flyoutClosed = null!;
201+
flyoutClosed = async (s, e) =>
202+
{
203+
flyoutParent.Closed -= flyoutClosed;
204+
await FilePropertiesHelpers.OpenPropertiesWindowAsync(propertiesItem, associatedInstance);
205+
};
206+
flyoutParent.Closed += flyoutClosed;
195207
}
196208

197209
private async void Button_Click(object sender, RoutedEventArgs e)
@@ -330,13 +342,5 @@ public void Dispose()
330342
{
331343

332344
}
333-
334-
private async void MenuFlyout_Closed(object sender, object e)
335-
{
336-
if (propertiesItem is null)
337-
return;
338-
await FilePropertiesHelpers.OpenPropertiesWindowAsync(propertiesItem, associatedInstance);
339-
propertiesItem = null;
340-
}
341345
}
342346
}

src/Files.App/UserControls/Widgets/FolderWidget.xaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939
PointerPressed="Button_PointerPressed"
4040
Tag="{x:Bind Path}">
4141
<Button.ContextFlyout>
42-
<MenuFlyout Opening="MenuFlyout_Opening"
43-
Closed="MenuFlyout_Closed">
42+
<MenuFlyout Opening="MenuFlyout_Opening">
4443
<MenuFlyout.Items>
4544
<MenuFlyoutItem
4645
x:Name="OpenInNewPane"

src/Files.App/UserControls/Widgets/FolderWidget.xaml.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
using Microsoft.UI.Xaml.Input;
2222
using Microsoft.UI.Xaml.Media.Imaging;
2323
using Files.App.DataModels.NavigationControlItems;
24+
using Files.App.Helpers.XamlHelpers;
25+
using Microsoft.UI.Xaml.Controls.Primitives;
2426

2527
namespace Files.App.UserControls.Widgets
2628
{
@@ -88,8 +90,6 @@ public sealed partial class FolderWidget : UserControl, IWidgetItemModel, INotif
8890
public BulkConcurrentObservableCollection<FolderCardItem> ItemsAdded = new BulkConcurrentObservableCollection<FolderCardItem>();
8991
private bool showMultiPaneControls;
9092

91-
private FolderCardItem? propertiesItem = null;
92-
9393
public FolderWidget()
9494
{
9595
InitializeComponent();
@@ -241,7 +241,19 @@ private async void OpenInNewWindow_Click(object sender, RoutedEventArgs e)
241241

242242
private void OpenLibraryProperties_Click(object sender, RoutedEventArgs e)
243243
{
244-
propertiesItem = (sender as MenuFlyoutItem)?.DataContext as FolderCardItem;
244+
var presenter = DependencyObjectHelpers.FindParent<MenuFlyoutPresenter>((MenuFlyoutItem)sender);
245+
var flyoutParent = presenter?.Parent as Popup;
246+
var propertiesItem = ((MenuFlyoutItem)sender).DataContext as FolderCardItem;
247+
if (propertiesItem is null || !propertiesItem.IsLibrary || flyoutParent is null)
248+
return;
249+
250+
EventHandler<object> flyoutClosed = null!;
251+
flyoutClosed = (s, e) =>
252+
{
253+
flyoutParent.Closed -= flyoutClosed;
254+
LibraryCardPropertiesInvoked?.Invoke(this, new LibraryCardEventArgs { Library = (propertiesItem.Item as LibraryLocationItem)! });
255+
};
256+
flyoutParent.Closed += flyoutClosed;
245257
}
246258

247259
private async Task OpenLibraryCard(FolderCardItem item)
@@ -275,14 +287,5 @@ public void Dispose()
275287
{
276288

277289
}
278-
279-
private void MenuFlyout_Closed(object sender, object e)
280-
{
281-
if (propertiesItem is null || !propertiesItem.IsLibrary)
282-
return;
283-
284-
LibraryCardPropertiesInvoked?.Invoke(this, new LibraryCardEventArgs { Library = (propertiesItem.Item as LibraryLocationItem)! });
285-
propertiesItem = null;
286-
}
287290
}
288291
}

0 commit comments

Comments
 (0)