Skip to content

Commit 7038909

Browse files
authored
Fix: Fixed an issue where checkbox settings weren't applied in the grid layout (#12229)
1 parent 30cc1e8 commit 7038909

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
@@ -219,10 +219,11 @@
219219
Padding="0"
220220
HorizontalAlignment="Left"
221221
VerticalAlignment="Top"
222+
AutomationProperties.AccessibilityView="Raw"
222223
Checked="ItemSelected_Checked"
223224
DoubleTapped="SelectionCheckbox_DoubleTapped"
224-
Unchecked="ItemSelected_Unchecked"
225-
Visibility="Collapsed" />
225+
Opacity="0"
226+
Unchecked="ItemSelected_Unchecked" />
226227

227228
<Popup x:Name="EditPopup" Grid.Row="1">
228229
<TextBox
@@ -243,7 +244,7 @@
243244
<VisualState x:Name="HideCheckbox" />
244245
<VisualState x:Name="ShowCheckbox">
245246
<VisualState.Setters>
246-
<Setter Target="SelectionCheckbox.Visibility" Value="Visible" />
247+
<Setter Target="SelectionCheckbox.Opacity" Value="1" />
247248
</VisualState.Setters>
248249
</VisualState>
249250
</VisualStateGroup>
@@ -302,10 +303,11 @@
302303
Padding="0"
303304
HorizontalAlignment="Left"
304305
VerticalAlignment="Top"
306+
AutomationProperties.AccessibilityView="Raw"
305307
Checked="ItemSelected_Checked"
306308
DoubleTapped="SelectionCheckbox_DoubleTapped"
307-
Unchecked="ItemSelected_Unchecked"
308-
Visibility="Collapsed" />
309+
Opacity="0"
310+
Unchecked="ItemSelected_Unchecked" />
309311

310312
<Grid
311313
Grid.Column="1"
@@ -446,7 +448,7 @@
446448
<VisualState x:Name="HideCheckbox" />
447449
<VisualState x:Name="ShowCheckbox">
448450
<VisualState.Setters>
449-
<Setter Target="SelectionCheckbox.Visibility" Value="Visible" />
451+
<Setter Target="SelectionCheckbox.Opacity" Value="1" />
450452
</VisualState.Setters>
451453
</VisualState>
452454
</VisualStateGroup>

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

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

435435
private new void FileList_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
436436
{
437-
args.ItemContainer.PointerEntered -= ItemRow_PointerEntered;
438-
args.ItemContainer.PointerExited -= ItemRow_PointerExited;
439-
args.ItemContainer.PointerCanceled -= ItemRow_PointerCanceled;
437+
var selectionCheckbox = args.ItemContainer.FindDescendant("SelectionCheckbox")!;
438+
439+
selectionCheckbox.PointerEntered -= SelectionCheckbox_PointerEntered;
440+
selectionCheckbox.PointerExited -= SelectionCheckbox_PointerExited;
441+
selectionCheckbox.PointerCanceled -= SelectionCheckbox_PointerCanceled;
440442

441443
base.FileList_ContainerContentChanging(sender, args);
442444
SetCheckboxSelectionState(args.Item, args.ItemContainer as GridViewItem);
443445

444-
args.ItemContainer.PointerEntered += ItemRow_PointerEntered;
445-
args.ItemContainer.PointerExited += ItemRow_PointerExited;
446-
args.ItemContainer.PointerCanceled += ItemRow_PointerCanceled;
446+
selectionCheckbox.PointerEntered += SelectionCheckbox_PointerEntered;
447+
selectionCheckbox.PointerExited += SelectionCheckbox_PointerExited;
448+
selectionCheckbox.PointerCanceled += SelectionCheckbox_PointerCanceled;
447449
}
448450

449451
private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer = null)
@@ -464,7 +466,7 @@ private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer =
464466
checkbox.Unchecked += ItemSelected_Unchecked;
465467
}
466468

467-
UpdateCheckboxVisibility(container);
469+
UpdateCheckboxVisibility(container, checkbox?.IsPointerOver ?? false);
468470
}
469471
}
470472

@@ -481,37 +483,35 @@ private void Grid_Loaded(object sender, RoutedEventArgs e)
481483
itemContainer.ContextFlyout = ItemContextMenuFlyout;
482484
}
483485

484-
private void ItemRow_PointerEntered(object sender, PointerRoutedEventArgs e)
486+
private void SelectionCheckbox_PointerEntered(object sender, PointerRoutedEventArgs e)
485487
{
486-
UpdateCheckboxVisibility(sender, true);
488+
UpdateCheckboxVisibility((sender as FrameworkElement)!.FindAscendant<GridViewItem>()!, true);
487489
}
488490

489-
private void ItemRow_PointerExited(object sender, PointerRoutedEventArgs e)
491+
private void SelectionCheckbox_PointerExited(object sender, PointerRoutedEventArgs e)
490492
{
491-
UpdateCheckboxVisibility(sender, false);
493+
UpdateCheckboxVisibility((sender as FrameworkElement)!.FindAscendant<GridViewItem>()!, false);
492494
}
493495

494-
private void ItemRow_PointerCanceled(object sender, PointerRoutedEventArgs e)
496+
private void SelectionCheckbox_PointerCanceled(object sender, PointerRoutedEventArgs e)
495497
{
496-
UpdateCheckboxVisibility(sender, false);
498+
UpdateCheckboxVisibility((sender as FrameworkElement)!.FindAscendant<GridViewItem>()!, false);
497499
}
498500

499-
private void UpdateCheckboxVisibility(object sender, bool? isPointerOver = null)
501+
private void UpdateCheckboxVisibility(object sender, bool isPointerOver)
500502
{
501503
if (sender is GridViewItem control && control.FindDescendant<UserControl>() is UserControl userControl)
502504
{
503-
// Save pointer over state accordingly
504-
if (isPointerOver.HasValue)
505-
control.SetValue(IsPointerOverProperty, isPointerOver);
506505
// Handle visual states
507506
// Show checkboxes when items are selected (as long as the setting is enabled)
508-
// Show checkboxes when hovering of the item (regardless of the setting to hide them)
507+
// Show checkboxes when hovering over the checkbox area (regardless of the setting to hide them)
509508
if (UserSettingsService.FoldersSettingsService.ShowCheckboxesWhenSelectingItems && control.IsSelected
510-
|| control.GetValue(IsPointerOverProperty) is not false)
509+
|| isPointerOver)
511510
VisualStateManager.GoToState(userControl, "ShowCheckbox", true);
512511
else
513512
VisualStateManager.GoToState(userControl, "HideCheckbox", true);
514513
}
515514
}
515+
516516
}
517517
}

0 commit comments

Comments
 (0)