Skip to content

Commit d0f3407

Browse files
authored
Fixed a crash that would sometimes occur when cutting an item (#1820)
1 parent d0aa22b commit d0f3407

File tree

5 files changed

+29
-21
lines changed

5 files changed

+29
-21
lines changed

Files/Filesystem/ListedItem.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ public bool LoadUnknownTypeGlyph
4646
set => SetProperty(ref _LoadUnknownTypeGlyph, value);
4747
}
4848

49+
private bool _IsDimmed;
50+
51+
public bool IsDimmed
52+
{
53+
get => _IsDimmed;
54+
set => SetProperty(ref _IsDimmed, value);
55+
}
56+
4957
private CloudDriveSyncStatusUI _SyncStatusUI;
5058

5159
public CloudDriveSyncStatusUI SyncStatusUI

Files/Views/LayoutModes/GenericFileBrowser.xaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121

2222
<local:BaseLayout.Resources>
2323
<converters:BoolNegationConverter x:Key="BoolNegationConverter" />
24+
<converters:BoolToObjectConverter x:Key="BoolToOpacityConverter"
25+
FalseValue="1"
26+
TrueValue="0.4" />
2427

2528
<MenuFlyout x:Key="BaseLayoutContextFlyout">
2629
<MenuFlyoutSubItem
@@ -614,6 +617,7 @@
614617
<Grid
615618
x:Name="Icon"
616619
EffectiveViewportChanged="Icon_EffectiveViewportChanged"
620+
Opacity="{x:Bind IsDimmed, Converter={StaticResource BoolToOpacityConverter}, Mode=OneWay}"
617621
ToolTipService.ToolTip="{x:Bind FolderTooltipText}">
618622
<Rectangle
619623
x:Name="CutIndicator"

Files/Views/LayoutModes/GenericFileBrowser.xaml.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,17 +175,13 @@ public override void ResetItemOpacity()
175175

176176
foreach (ListedItem listedItem in items)
177177
{
178-
FrameworkElement element = AllView.Columns[0].GetCellContent(listedItem);
179-
if (element != null)
180-
{
181-
element.Opacity = 1;
182-
}
178+
listedItem.IsDimmed = false;
183179
}
184180
}
185181

186182
public override void SetItemOpacity(ListedItem item)
187183
{
188-
AllView.Columns[0].GetCellContent(item).Opacity = 0.4;
184+
item.IsDimmed = true;
189185
}
190186

191187
private async void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)

Files/Views/LayoutModes/GridViewBrowser.xaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
mc:Ignorable="d">
1818
<local:BaseLayout.Resources>
1919
<converters:BoolNegationConverter x:Key="BoolNegationConverter" />
20+
<converters:BoolToObjectConverter x:Key="BoolToOpacityConverter"
21+
FalseValue="1"
22+
TrueValue="0.4" />
2023

2124
<MenuFlyout x:Key="BaseLayoutContextFlyout">
2225
<MenuFlyoutSubItem
@@ -473,6 +476,7 @@
473476
Grid.Row="0"
474477
Width="{x:Bind local:App.AppSettings.GridViewSize, Mode=OneWay}"
475478
Height="{x:Bind local:App.AppSettings.GridViewSize, Mode=OneWay}"
479+
Opacity="{x:Bind IsDimmed, Converter={StaticResource BoolToOpacityConverter}, Mode=OneWay}"
476480
Tag="ItemImage">
477481
<Grid
478482
x:Name="Picture"
@@ -614,6 +618,7 @@
614618
Grid.Column="1"
615619
Height="Auto"
616620
MinHeight="100"
621+
Opacity="{x:Bind IsDimmed, Converter={StaticResource BoolToOpacityConverter}, Mode=OneWay}"
617622
Tag="ItemImage">
618623
<Grid
619624
x:Name="Picture"

Files/Views/LayoutModes/GridViewBrowser.xaml.cs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Files.Filesystem;
22
using System;
3+
using System.Collections;
34
using System.Collections.Generic;
45
using System.Linq;
56
using Windows.System;
@@ -194,27 +195,21 @@ private void GridViewTextBoxItemName_TextChanged(object sender, TextChangedEvent
194195

195196
public override void ResetItemOpacity()
196197
{
197-
foreach (ListedItem listedItem in FileList.Items)
198+
IEnumerable items = (IEnumerable)FileList.ItemsSource;
199+
if (items == null)
198200
{
199-
List<Grid> itemContentGrids = new List<Grid>();
200-
GridViewItem gridViewItem = FileList.ContainerFromItem(listedItem) as GridViewItem;
201-
if (gridViewItem == null)
202-
{
203-
return;
204-
}
205-
Interaction.FindChildren<Grid>(itemContentGrids, gridViewItem);
206-
var imageOfItem = itemContentGrids.Find(x => x.Tag?.ToString() == "ItemImage");
207-
imageOfItem.Opacity = 1;
201+
return;
202+
}
203+
204+
foreach (ListedItem listedItem in items)
205+
{
206+
listedItem.IsDimmed = false;
208207
}
209208
}
210209

211210
public override void SetItemOpacity(ListedItem item)
212211
{
213-
GridViewItem itemToDimForCut = (GridViewItem)FileList.ContainerFromItem(item);
214-
List<Grid> itemContentGrids = new List<Grid>();
215-
Interaction.FindChildren(itemContentGrids, itemToDimForCut);
216-
var imageOfItem = itemContentGrids.Find(x => x.Tag?.ToString() == "ItemImage");
217-
imageOfItem.Opacity = 0.4;
212+
item.IsDimmed = true;
218213
}
219214

220215
private void RenameTextBox_KeyDown(object sender, KeyRoutedEventArgs e)

0 commit comments

Comments
 (0)