Skip to content

Commit 50fb00e

Browse files
Krytanyaira2
authored andcommitted
Fix: Fixed an issue where checkbox settings weren't applied in the grid layout (#12229)
1 parent 24b6afa commit 50fb00e

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

src/Files.App/Views/LayoutModes/GridViewBrowser.xaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,11 @@
218218
Padding="0"
219219
HorizontalAlignment="Left"
220220
VerticalAlignment="Top"
221+
AutomationProperties.AccessibilityView="Raw"
221222
Checked="ItemSelected_Checked"
222223
DoubleTapped="SelectionCheckbox_DoubleTapped"
223-
Unchecked="ItemSelected_Unchecked"
224-
Visibility="Collapsed" />
224+
Opacity="0"
225+
Unchecked="ItemSelected_Unchecked" />
225226

226227
<Popup x:Name="EditPopup" Grid.Row="1">
227228
<TextBox
@@ -242,7 +243,7 @@
242243
<VisualState x:Name="HideCheckbox" />
243244
<VisualState x:Name="ShowCheckbox">
244245
<VisualState.Setters>
245-
<Setter Target="SelectionCheckbox.Visibility" Value="Visible" />
246+
<Setter Target="SelectionCheckbox.Opacity" Value="1" />
246247
</VisualState.Setters>
247248
</VisualState>
248249
</VisualStateGroup>
@@ -301,10 +302,11 @@
301302
Padding="0"
302303
HorizontalAlignment="Left"
303304
VerticalAlignment="Top"
305+
AutomationProperties.AccessibilityView="Raw"
304306
Checked="ItemSelected_Checked"
305307
DoubleTapped="SelectionCheckbox_DoubleTapped"
306-
Unchecked="ItemSelected_Unchecked"
307-
Visibility="Collapsed" />
308+
Opacity="0"
309+
Unchecked="ItemSelected_Unchecked" />
308310

309311
<Grid
310312
Grid.Column="1"
@@ -445,7 +447,7 @@
445447
<VisualState x:Name="HideCheckbox" />
446448
<VisualState x:Name="ShowCheckbox">
447449
<VisualState.Setters>
448-
<Setter Target="SelectionCheckbox.Visibility" Value="Visible" />
450+
<Setter Target="SelectionCheckbox.Opacity" Value="1" />
449451
</VisualState.Setters>
450452
</VisualState>
451453
</VisualStateGroup>

src/Files.App/Views/LayoutModes/GridViewBrowser.xaml.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -437,16 +437,18 @@ checkBox.DataContext is ListedItem item &&
437437

438438
private new void FileList_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
439439
{
440-
args.ItemContainer.PointerEntered -= ItemRow_PointerEntered;
441-
args.ItemContainer.PointerExited -= ItemRow_PointerExited;
442-
args.ItemContainer.PointerCanceled -= ItemRow_PointerCanceled;
440+
var selectionCheckbox = args.ItemContainer.FindDescendant("SelectionCheckbox")!;
441+
442+
selectionCheckbox.PointerEntered -= SelectionCheckbox_PointerEntered;
443+
selectionCheckbox.PointerExited -= SelectionCheckbox_PointerExited;
444+
selectionCheckbox.PointerCanceled -= SelectionCheckbox_PointerCanceled;
443445

444446
base.FileList_ContainerContentChanging(sender, args);
445447
SetCheckboxSelectionState(args.Item, args.ItemContainer as GridViewItem);
446448

447-
args.ItemContainer.PointerEntered += ItemRow_PointerEntered;
448-
args.ItemContainer.PointerExited += ItemRow_PointerExited;
449-
args.ItemContainer.PointerCanceled += ItemRow_PointerCanceled;
449+
selectionCheckbox.PointerEntered += SelectionCheckbox_PointerEntered;
450+
selectionCheckbox.PointerExited += SelectionCheckbox_PointerExited;
451+
selectionCheckbox.PointerCanceled += SelectionCheckbox_PointerCanceled;
450452
}
451453

452454
private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer = null)
@@ -467,7 +469,7 @@ private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer =
467469
checkbox.Unchecked += ItemSelected_Unchecked;
468470
}
469471

470-
UpdateCheckboxVisibility(container);
472+
UpdateCheckboxVisibility(container, checkbox?.IsPointerOver ?? false);
471473
}
472474
}
473475

@@ -484,37 +486,35 @@ private void Grid_Loaded(object sender, RoutedEventArgs e)
484486
itemContainer.ContextFlyout = ItemContextMenuFlyout;
485487
}
486488

487-
private void ItemRow_PointerEntered(object sender, PointerRoutedEventArgs e)
489+
private void SelectionCheckbox_PointerEntered(object sender, PointerRoutedEventArgs e)
488490
{
489-
UpdateCheckboxVisibility(sender, true);
491+
UpdateCheckboxVisibility((sender as FrameworkElement)!.FindAscendant<GridViewItem>()!, true);
490492
}
491493

492-
private void ItemRow_PointerExited(object sender, PointerRoutedEventArgs e)
494+
private void SelectionCheckbox_PointerExited(object sender, PointerRoutedEventArgs e)
493495
{
494-
UpdateCheckboxVisibility(sender, false);
496+
UpdateCheckboxVisibility((sender as FrameworkElement)!.FindAscendant<GridViewItem>()!, false);
495497
}
496498

497-
private void ItemRow_PointerCanceled(object sender, PointerRoutedEventArgs e)
499+
private void SelectionCheckbox_PointerCanceled(object sender, PointerRoutedEventArgs e)
498500
{
499-
UpdateCheckboxVisibility(sender, false);
501+
UpdateCheckboxVisibility((sender as FrameworkElement)!.FindAscendant<GridViewItem>()!, false);
500502
}
501503

502-
private void UpdateCheckboxVisibility(object sender, bool? isPointerOver = null)
504+
private void UpdateCheckboxVisibility(object sender, bool isPointerOver)
503505
{
504506
if (sender is GridViewItem control && control.FindDescendant<UserControl>() is UserControl userControl)
505507
{
506-
// Save pointer over state accordingly
507-
if (isPointerOver.HasValue)
508-
control.SetValue(IsPointerOverProperty, isPointerOver);
509508
// Handle visual states
510509
// Show checkboxes when items are selected (as long as the setting is enabled)
511-
// Show checkboxes when hovering of the item (regardless of the setting to hide them)
510+
// Show checkboxes when hovering over the checkbox area (regardless of the setting to hide them)
512511
if (UserSettingsService.FoldersSettingsService.ShowCheckboxesWhenSelectingItems && control.IsSelected
513-
|| control.GetValue(IsPointerOverProperty) is not false)
512+
|| isPointerOver)
514513
VisualStateManager.GoToState(userControl, "ShowCheckbox", true);
515514
else
516515
VisualStateManager.GoToState(userControl, "HideCheckbox", true);
517516
}
518517
}
518+
519519
}
520520
}

0 commit comments

Comments
 (0)