# HG changeset patch # User Tess Snider # Date 2021-07-21 09:24:41 # Node ID d7b40cfbe0f3d20f25a52944cf8c0f1ecdc81471 # Parent a5faa82faf6ae9b1354e2c21b913ff9f06263744 Analyzing a Mixture should no longer cause the Pending Tests lists to scroll down a little, for no reason. diff --git a/Models/ReactionTest.cs b/Models/ReactionTest.cs --- a/Models/ReactionTest.cs +++ b/Models/ReactionTest.cs @@ -220,6 +220,7 @@ namespace DesertPaintCodex.Models Reaction = null; BadReaction = null; + Clipped = ClipType.None; State = TestState.Untested; } diff --git a/ViewModels/ExperimentLogViewModel.cs b/ViewModels/ExperimentLogViewModel.cs --- a/ViewModels/ExperimentLogViewModel.cs +++ b/ViewModels/ExperimentLogViewModel.cs @@ -95,10 +95,15 @@ namespace DesertPaintCodex.ViewModels private void OnClearReaction() { + int oldPos = 0; ReactionTest test = TestView.ReactionTest; - if (!CompletedTests.Contains(test)) return; + if (RemainingTests.Contains(test)) + { + SelectedRemainingTest = ResortTestInList(test, RemainingTests); + return; + } - int oldPos = CompletedTests.IndexOf(test); + oldPos = CompletedTests.IndexOf(test); // Move test to Remaining Tests. InsertTestIntoList(test, RemainingTests); @@ -117,23 +122,27 @@ namespace DesertPaintCodex.ViewModels private void OnReactionResults() { - ReactionTest? test = null; - int selectedTest = SelectedRemainingTest; - if (selectedTest >= 0) + int newPos = ResortTestInList(TestView.ReactionTest, RemainingTests); + if (newPos != SelectedRemainingTest) { - test = RemainingTests[selectedTest]; - } - ReactionTestService.PopulateRemainingTests(RemainingTests); - if (test != null) - { - int newIndex = RemainingTests.IndexOf(test); - SelectedRemainingTest = newIndex; + SelectedRemainingTest = newPos; } } #endregion - private static void InsertTestIntoList(ReactionTest test, IList list) + private static int ResortTestInList(ReactionTest test, IList list) + { + int oldPos = list.IndexOf(test); + + if (((oldPos > 0) || (test.CompareTo(list[oldPos - 1]) > 0)) + && ((oldPos == list.Count - 1) || (test.CompareTo(list[oldPos + 1]) < 0))) return oldPos; // No need to move. + + list.RemoveAt(oldPos); + return InsertTestIntoList(test, list); + } + + private static int InsertTestIntoList(ReactionTest test, IList list) { int i; for (i = 0; i < list.Count; i++) @@ -141,6 +150,7 @@ namespace DesertPaintCodex.ViewModels if (test.CompareTo(list[i]) < 0) break; } list.Insert(i, test); + return i; } } }