# HG changeset patch # User IBBoard # Date 1262896925 0 # Node ID 468a41d79b1052fe04152ee8421dead166389c2f # Parent 1e92802391e37270190b24ca561534a7cbd29da6 Fixes #237: loading race after choise of race bug * Don't add buttons when game system changes * Add buttons on army change when the categories have changed * Store the game system before we do army stuff so that a change in game system doesn't trigger setting the army to null and resetting our buttons (which is what happened before) diff -r 1e92802391e3 -r 468a41d79b10 FrmMain.cs --- a/FrmMain.cs Thu Dec 24 20:31:22 2009 +0000 +++ b/FrmMain.cs Thu Jan 07 20:42:05 2010 +0000 @@ -832,7 +832,6 @@ { SetAppTitle(); RemoveCategoryButtons(); - AddCategoryButtons(); } private void FrmMain_ArmyChanged(Army oldArmy, Army newArmy) @@ -856,6 +855,7 @@ } else { + WarFoundryCore.CurrentGameSystem = newArmy.GameSystem; ListenToArmy(newArmy); SetNonNullArmyState(newArmy); } @@ -906,12 +906,7 @@ private void SetNonNullArmyState(Army newArmy) { - if (newArmy.Race.HasCategoryOverrides()) - { - RemoveCategoryButtons(); - AddCategoryButtons(newArmy.Race.Categories); - } - + SetCategoryButtons(newArmy.Race.Categories); EnableCategoryButtons(); miSaveArmyAs.Enabled = true; miCloseArmy.Enabled = true; @@ -919,39 +914,33 @@ armyTree.Show(); } - private void AddCategoryButtons() + private void SetCategoryButtons(Category[] cats) { - if (CurrentGameSystem!=null) + if (CategoryButtonsHaveChanged(cats)) { - AddCategoryButtons(CurrentGameSystem.Categories); + RemoveCategoryButtons(); + AddCategoryButtons(cats); } } - private void AddCategoryButtons(Category[] cats) + private bool CategoryButtonsHaveChanged(Category[] cats) { int catCount = cats.Length; - Category cat; - categoryButtons = new ToolBarButton[catCount+1]; - - ToolBarButton sep = new ToolBarButton(); - sep.Style = ToolBarButtonStyle.Separator; - categoryButtons[0] = sep; - - IBBToolBarButton button; + bool haveChanged = (categoryButtons == null || catCount != (categoryButtons.Length - 1)); - for (int i = 0; i