Skip to content

Commit 8c29e26

Browse files
authored
Fix: Fixed high CPU usage in the recent files widget (#12169)
1 parent 39cdc5a commit 8c29e26

File tree

2 files changed

+60
-62
lines changed

2 files changed

+60
-62
lines changed

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

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
ItemClick="RecentsView_ItemClick"
4343
ItemContainerTransitions="{x:Null}"
4444
ItemsSource="{x:Bind recentItemsCollection}"
45+
RightTapped="ListView_RightTapped"
4546
SelectionMode="None">
4647
<ListView.ItemContainerStyle>
4748
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
@@ -51,65 +52,64 @@
5152
</ListView.ItemContainerStyle>
5253
<ListView.ItemTemplate>
5354
<DataTemplate x:DataType="fs:RecentItem">
54-
<ListViewItem RightTapped="ListViewItem_RightTapped" ToolTipService.ToolTip="{x:Bind RecentPath}">
55-
<Grid
56-
Padding="2.5"
57-
HorizontalAlignment="Stretch"
58-
VerticalAlignment="Stretch"
59-
AutomationProperties.Name="{x:Bind Name}"
60-
ColumnSpacing="14">
61-
<Grid.ColumnDefinitions>
62-
<ColumnDefinition Width="Auto" />
63-
<ColumnDefinition Width="*" />
64-
<ColumnDefinition Width="*" />
65-
</Grid.ColumnDefinitions>
66-
<FontIcon
67-
x:Name="RecentFolderImg"
68-
Grid.Column="0"
69-
HorizontalAlignment="Center"
70-
VerticalAlignment="Center"
71-
x:Load="{x:Bind FolderImg}"
72-
x:Phase="1"
73-
FontSize="24"
74-
Foreground="#ffe793"
75-
Glyph="&#xE8B7;" />
76-
<FontIcon
77-
x:Name="EmptyImg"
78-
Grid.Column="0"
79-
HorizontalAlignment="Center"
80-
VerticalAlignment="Center"
81-
x:Load="{x:Bind EmptyImgVis}"
82-
x:Phase="1"
83-
FontSize="24"
84-
Glyph="&#xE7C3;" />
85-
<Image
86-
x:Name="RecentFileImg"
87-
Grid.Column="0"
88-
Width="24"
89-
Height="24"
90-
HorizontalAlignment="Center"
91-
VerticalAlignment="Center"
92-
x:Load="{x:Bind FileIconVis}"
93-
x:Phase="1"
94-
Source="{x:Bind FileImg, Mode=OneWay}"
95-
Stretch="Uniform" />
55+
<Grid
56+
Padding="2.5"
57+
HorizontalAlignment="Stretch"
58+
VerticalAlignment="Stretch"
59+
AutomationProperties.Name="{x:Bind Name}"
60+
ColumnSpacing="14"
61+
ToolTipService.ToolTip="{x:Bind RecentPath}">
62+
<Grid.ColumnDefinitions>
63+
<ColumnDefinition Width="Auto" />
64+
<ColumnDefinition Width="*" />
65+
<ColumnDefinition Width="*" />
66+
</Grid.ColumnDefinitions>
67+
<FontIcon
68+
x:Name="RecentFolderImg"
69+
Grid.Column="0"
70+
HorizontalAlignment="Center"
71+
VerticalAlignment="Center"
72+
x:Load="{x:Bind FolderImg}"
73+
x:Phase="1"
74+
FontSize="24"
75+
Foreground="#ffe793"
76+
Glyph="&#xE8B7;" />
77+
<FontIcon
78+
x:Name="EmptyImg"
79+
Grid.Column="0"
80+
HorizontalAlignment="Center"
81+
VerticalAlignment="Center"
82+
x:Load="{x:Bind EmptyImgVis}"
83+
x:Phase="1"
84+
FontSize="24"
85+
Glyph="&#xE7C3;" />
86+
<Image
87+
x:Name="RecentFileImg"
88+
Grid.Column="0"
89+
Width="24"
90+
Height="24"
91+
HorizontalAlignment="Center"
92+
VerticalAlignment="Center"
93+
x:Load="{x:Bind FileIconVis}"
94+
x:Phase="1"
95+
Source="{x:Bind FileImg, Mode=OneWay}"
96+
Stretch="Uniform" />
9697

97-
<TextBlock
98-
Grid.Column="1"
99-
VerticalAlignment="Center"
100-
Text="{x:Bind Name}"
101-
TextTrimming="CharacterEllipsis"
102-
TextWrapping="NoWrap" />
98+
<TextBlock
99+
Grid.Column="1"
100+
VerticalAlignment="Center"
101+
Text="{x:Bind Name}"
102+
TextTrimming="CharacterEllipsis"
103+
TextWrapping="NoWrap" />
103104

104-
<TextBlock
105-
Grid.Column="2"
106-
VerticalAlignment="Center"
107-
FontSize="12"
108-
Text="{x:Bind RecentPath}"
109-
TextTrimming="CharacterEllipsis"
110-
TextWrapping="NoWrap" />
111-
</Grid>
112-
</ListViewItem>
105+
<TextBlock
106+
Grid.Column="2"
107+
VerticalAlignment="Center"
108+
FontSize="12"
109+
Text="{x:Bind RecentPath}"
110+
TextTrimming="CharacterEllipsis"
111+
TextWrapping="NoWrap" />
112+
</Grid>
113113
</DataTemplate>
114114
</ListView.ItemTemplate>
115115
</ListView>

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,11 @@ public RecentFilesWidget()
118118
OpenPropertiesCommand = new RelayCommand<RecentItem>(OpenProperties);
119119
}
120120

121-
private void ListViewItem_RightTapped(object sender, RightTappedRoutedEventArgs e)
121+
private void ListView_RightTapped(object sender, RightTappedRoutedEventArgs e)
122122
{
123123
ItemContextMenuFlyout = new CommandBarFlyout { Placement = FlyoutPlacementMode.Full };
124124
ItemContextMenuFlyout.Opening += (sender, e) => App.LastOpenedFlyout = sender as CommandBarFlyout;
125-
if (sender is not ListViewItem listViewItem || listViewItem.DataContext is not RecentItem item)
125+
if (e.OriginalSource is not FrameworkElement element || element.DataContext is not RecentItem item)
126126
return;
127127

128128
var menuItems = GetItemMenuItems(item, false);
@@ -132,11 +132,9 @@ private void ListViewItem_RightTapped(object sender, RightTappedRoutedEventArgs
132132
.ForEach(i => i.MinWidth = Constants.UI.ContextMenuItemsMaxWidth);
133133

134134
secondaryElements.ForEach(i => ItemContextMenuFlyout.SecondaryCommands.Add(i));
135-
ItemContextMenuFlyout.ShowAt(listViewItem, new FlyoutShowOptions { Position = e.GetPosition(listViewItem) });
135+
ItemContextMenuFlyout.ShowAt(element, new FlyoutShowOptions { Position = e.GetPosition(element) });
136136

137137
_ = ShellContextmenuHelper.LoadShellMenuItems(item.Path, ItemContextMenuFlyout, showOpenWithMenu: true, showSendToMenu: true);
138-
139-
e.Handled = true;
140138
}
141139

142140
public override List<ContextMenuFlyoutItemViewModel> GetItemMenuItems(WidgetCardItem item, bool isPinned, bool isFolder = false)

0 commit comments

Comments
 (0)