Skip to content

Commit 8d1aaeb

Browse files
committed
Deactivate all quick fix options except fix selection for multi-selections
Since the user cannot see which one is the main selected result whenever multiple are selected, it seems in order to not allow operations that depend on it.
1 parent 1b3e259 commit 8d1aaeb

File tree

1 file changed

+41
-19
lines changed

1 file changed

+41
-19
lines changed

Rubberduck.Core/UI/Inspections/InspectionResultsViewModel.cs

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -559,10 +559,23 @@ private void ExecuteQuickFixCommand(object parameter)
559559
}
560560

561561
private bool CanExecuteQuickFixCommand(object parameter)
562+
{
563+
if (!BaseCanExecuteQuickFixCommand()
564+
|| !(parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>> tpl))
565+
{
566+
return false;
567+
}
568+
569+
var (_, selectedResults) = tpl;
570+
571+
return selectedResults != null
572+
&& selectedResults.Count() == 1;
573+
}
574+
575+
private bool BaseCanExecuteQuickFixCommand()
562576
{
563577
return !IsBusy
564-
&& _state.Status == ParserState.Ready
565-
&& parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>>;
578+
&& _state.Status == ParserState.Ready;
566579
}
567580

568581
private void ExecuteQuickFixForSelection(object parameter)
@@ -572,25 +585,26 @@ private void ExecuteQuickFixForSelection(object parameter)
572585
return;
573586
}
574587

575-
var (quickFix, selectedItems) = tpl;
588+
var (quickFix, selectedResults) = tpl;
576589

577590
_quickFixProvider.Fix(
578591
quickFix,
579-
selectedItems);
592+
selectedResults);
580593
}
581594

582595
public bool CanExecuteQuickFixForSelection(object parameter)
583596
{
584-
if (!CanExecuteQuickFixCommand(parameter)
597+
if (!BaseCanExecuteQuickFixCommand()
585598
|| !(parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>> tpl))
586599
{
587600
return false;
588601
}
589602

590-
var (quickFix, selectedItems) = tpl;
603+
var (quickFix, selectedResults) = tpl;
591604

592605
return quickFix.CanFixMultiple
593-
&& (selectedItems?.All(result => _quickFixProvider.CanFix(quickFix, result)) ?? false);
606+
&& selectedResults != null
607+
&& selectedResults.All(result => _quickFixProvider.CanFix(quickFix, result));
594608
}
595609

596610
private void ExecuteQuickFixInProcedureCommand(object parameter)
@@ -612,15 +626,17 @@ private void ExecuteQuickFixInProcedureCommand(object parameter)
612626

613627
public bool CanExecuteQuickFixInProcedure(object parameter)
614628
{
615-
if (!CanExecuteQuickFixCommand(parameter)
629+
if (!BaseCanExecuteQuickFixCommand()
616630
|| !(parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>> tpl))
617631
{
618632
return false;
619633
}
620634

621-
var (quickFix, _) = tpl;
635+
var (quickFix, selectedResults) = tpl;
622636

623-
return quickFix.CanFixInProcedure;
637+
return quickFix.CanFixInProcedure
638+
&& selectedResults != null
639+
&& selectedResults.Count() == 1;
624640
}
625641

626642
private void ExecuteQuickFixInModuleCommand(object parameter)
@@ -642,15 +658,17 @@ private void ExecuteQuickFixInModuleCommand(object parameter)
642658

643659
public bool CanExecuteQuickFixInModule(object parameter)
644660
{
645-
if (!CanExecuteQuickFixCommand(parameter)
661+
if (!BaseCanExecuteQuickFixCommand()
646662
|| !(parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>> tpl))
647663
{
648664
return false;
649665
}
650666

651-
var (quickFix, _) = tpl;
667+
var (quickFix, selectedResults) = tpl;
652668

653-
return quickFix.CanFixInModule;
669+
return quickFix.CanFixInModule
670+
&& selectedResults != null
671+
&& selectedResults.Count() == 1;
654672
}
655673

656674
private void ExecuteQuickFixInProjectCommand(object parameter)
@@ -672,15 +690,17 @@ private void ExecuteQuickFixInProjectCommand(object parameter)
672690

673691
public bool CanExecuteQuickFixInProject(object parameter)
674692
{
675-
if (!CanExecuteQuickFixCommand(parameter)
693+
if (!BaseCanExecuteQuickFixCommand()
676694
|| !(parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>> tpl))
677695
{
678696
return false;
679697
}
680698

681-
var (quickFix, _) = tpl;
699+
var (quickFix, selectedResults) = tpl;
682700

683-
return quickFix.CanFixInProject;
701+
return quickFix.CanFixInProject
702+
&& selectedResults != null
703+
&& selectedResults.Count() == 1;
684704
}
685705

686706
private void ExecuteQuickFixInAllProjectsCommand(object parameter)
@@ -701,15 +721,17 @@ private void ExecuteQuickFixInAllProjectsCommand(object parameter)
701721

702722
public bool CanExecuteQuickFixAll(object parameter)
703723
{
704-
if (!CanExecuteQuickFixCommand(parameter)
724+
if (!BaseCanExecuteQuickFixCommand()
705725
|| !(parameter is ValueTuple<IQuickFix, IEnumerable<IInspectionResult>> tpl))
706726
{
707727
return false;
708728
}
709729

710-
var (quickFix, _) = tpl;
730+
var (quickFix, selectedResults) = tpl;
711731

712-
return quickFix.CanFixAll;
732+
return quickFix.CanFixAll
733+
&& selectedResults != null
734+
&& selectedResults.Count() == 1;
713735
}
714736

715737
private void ExecuteDisableInspectionCommand(object parameter)

0 commit comments

Comments
 (0)