Skip to content

Commit 9c7816f

Browse files
committed
Fix regression on Apply button behavior change - force reparse on Apply.
1 parent c9e6f29 commit 9c7816f

File tree

5 files changed

+18
-6
lines changed

5 files changed

+18
-6
lines changed

Rubberduck.Core/UI/AddRemoveReferences/AddRemoveReferencesModel.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
using System.Windows.Forms;
55
using Rubberduck.AddRemoveReferences;
66
using Rubberduck.Parsing.Symbols;
7+
using Rubberduck.Parsing.VBA;
78
using Rubberduck.Settings;
89

910
namespace Rubberduck.UI.AddRemoveReferences
1011
{
1112
public interface IAddRemoveReferencesModel
1213
{
1314
string HostApplication { get; }
15+
RubberduckParserState State { get; }
1416
ReferenceSettings Settings { get; set; }
1517
ProjectDeclaration Project { get; set; }
1618
List<ReferenceModel> References { get; set; }
@@ -21,8 +23,9 @@ public class AddRemoveReferencesModel : IAddRemoveReferencesModel
2123
{
2224
private static readonly string Host = Path.GetFileName(Application.ExecutablePath).ToUpperInvariant();
2325

24-
public AddRemoveReferencesModel(ProjectDeclaration project, IEnumerable<ReferenceModel> references, ReferenceSettings settings)
26+
public AddRemoveReferencesModel(RubberduckParserState state, ProjectDeclaration project, IEnumerable<ReferenceModel> references, ReferenceSettings settings)
2527
{
28+
State = state;
2629
Settings = settings;
2730
Project = project;
2831
References = references.ToList();
@@ -38,6 +41,8 @@ public AddRemoveReferencesModel(ProjectDeclaration project, IEnumerable<Referenc
3841

3942
public string HostApplication => Host;
4043

44+
public RubberduckParserState State { get; }
45+
4146
public ReferenceSettings Settings { get; set; }
4247

4348
public ProjectDeclaration Project { get; set; }

Rubberduck.Core/UI/AddRemoveReferences/AddRemoveReferencesPresenterFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public AddRemoveReferencesPresenter Create(ProjectDeclaration project)
118118
}
119119

120120
var settings = _settings.Create();
121-
model = new AddRemoveReferencesModel(project, models.Values, settings);
121+
model = new AddRemoveReferencesModel(_state, project, models.Values, settings);
122122
if (AddRemoveReferencesViewModel.HostHasProjects)
123123
{
124124
model.References.AddRange(GetUserProjectFolderModels(model.Settings).Where(proj =>

Rubberduck.Core/UI/AddRemoveReferences/AddRemoveReferencesViewModel.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Windows.Forms;
1010
using NLog;
1111
using Rubberduck.AddRemoveReferences;
12+
using Rubberduck.Parsing.VBA;
1213
using Rubberduck.Resources;
1314
using Rubberduck.UI.Command;
1415
using Rubberduck.VBEditor;
@@ -110,7 +111,7 @@ public AddRemoveReferencesViewModel(IAddRemoveReferencesModel model, IReferenceR
110111

111112
OkCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => CloseWindowOk());
112113
CancelCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => CloseWindowCancel());
113-
ApplyCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), ExecuteApplyCommand);
114+
ApplyCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), ExecuteApplyCommand, ApplyCanExecute);
114115
}
115116

116117
public string ProjectCaption => string.IsNullOrEmpty(Model?.Project?.IdentifierName)
@@ -292,16 +293,22 @@ private void ExecuteBrowseCommand(object parameter)
292293
/// <param name="parameter">Ignored</param>
293294
private void ExecuteApplyCommand(object parameter)
294295
{
295-
var changed = _reconciler.ReconcileReferences(Model, _available.ToList());
296+
var changed = _reconciler.ReconcileReferences(Model, _project.ToList());
296297
foreach (var reference in changed.Where(reference => !_project.Contains(reference)).ToList())
297298
{
298299
_project.Add(reference);
299300
}
300301

302+
Model.State.OnParseRequested(this);
301303
AvailableReferences.Refresh();
302304
ProjectReferences.Refresh();
303305
}
304306

307+
private bool ApplyCanExecute(object parameter)
308+
{
309+
return Model.State.Status == ParserState.Ready;
310+
}
311+
305312
/// <summary>
306313
/// Delegate for MoveUpCommand.
307314
/// </summary>

RubberduckTests/AddRemoveReferences/AddRemoveReferencesSetup.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public static AddRemoveReferencesViewModel ArrangeViewModel(
257257
allReferences.AddRange(projects);
258258
}
259259

260-
var model = new AddRemoveReferencesModel(declaration, allReferences, settings);
260+
var model = new AddRemoveReferencesModel(null, declaration, allReferences, settings);
261261
var reconciler = ArrangeReferenceReconciler(settings, out _, out libraryProvider);
262262
browserFactory = new Mock<IFileSystemBrowserFactory>();
263263

RubberduckTests/AddRemoveReferences/AddRemoveReferencesViewModelTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void ViewModelFilters_SearchInputFiltersList(string input, int expected)
133133
{
134134
var declaration = AddRemoveReferencesSetup.ArrangeMocksAndGetProject();
135135
var settings = AddRemoveReferencesSetup.GetNonDefaultReferenceSettings();
136-
var model = new AddRemoveReferencesModel(declaration, SearchReferencesList, settings);
136+
var model = new AddRemoveReferencesModel(null, declaration, SearchReferencesList, settings);
137137
var reconciler = AddRemoveReferencesSetup.ArrangeReferenceReconciler(settings);
138138

139139
var viewModel = new AddRemoveReferencesViewModel(model, reconciler, new Mock<IFileSystemBrowserFactory>().Object);

0 commit comments

Comments
 (0)