From a94364f60f4ceb0c82dc39b1e8f5b9631d81e011 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Wed, 22 Jan 2025 19:55:49 -0600 Subject: [PATCH] Fix force updates after removal in TOEMouseAdapter Ensured all forces are re-evaluated after a force is removed to account for potential changes in organization. This triggers an `OrganizationChangedEvent` for each force, maintaining consistency even in large campaigns. --- MekHQ/src/mekhq/gui/adapter/TOEMouseAdapter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/gui/adapter/TOEMouseAdapter.java b/MekHQ/src/mekhq/gui/adapter/TOEMouseAdapter.java index 70fa46f10a..2e609db69f 100644 --- a/MekHQ/src/mekhq/gui/adapter/TOEMouseAdapter.java +++ b/MekHQ/src/mekhq/gui/adapter/TOEMouseAdapter.java @@ -39,7 +39,8 @@ import mekhq.campaign.mission.Scenario; import mekhq.campaign.personnel.Person; import mekhq.campaign.personnel.enums.PersonnelRole; -import mekhq.campaign.unit.*; +import mekhq.campaign.unit.HangarSorter; +import mekhq.campaign.unit.Unit; import mekhq.campaign.universe.Faction; import mekhq.gui.CampaignGUI; import mekhq.gui.baseComponents.JScrollableMenu; @@ -510,6 +511,12 @@ public void actionPerformed(ActionEvent action) { gui.getCampaign().removeForce(force); } } + + // We cycle through all forces because we need to assess how the removal affected them, + // Even for truly huge campaigns this is still very cheap. + for (Force force : forces) { + MekHQ.triggerEvent(new OrganizationChangedEvent(gui.getCampaign(), force)); + } } else if (command.contains(TOEMouseAdapter.REMOVE_LANCE_TECH)) { if (null != singleForce && singleForce.getTechID() != null) { Person oldTech = gui.getCampaign().getPerson(singleForce.getTechID());