From d43dfb788d36a31c2d1ae3bc3a52875fcd70f926 Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 27 Mar 2014 03:44:44 +0000 Subject: [PATCH] Fix so extra hand panes removed after losing control of another player --- .../control/FControlGameEventHandler.java | 19 ++++++++++++------- .../main/java/forge/gui/match/VMatchUI.java | 9 +++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/forge-gui/src/main/java/forge/control/FControlGameEventHandler.java b/forge-gui/src/main/java/forge/control/FControlGameEventHandler.java index bcdaa715516..c8a3d045385 100644 --- a/forge-gui/src/main/java/forge/control/FControlGameEventHandler.java +++ b/forge-gui/src/main/java/forge/control/FControlGameEventHandler.java @@ -1,6 +1,7 @@ package forge.control; import com.google.common.eventbus.Subscribe; + import forge.FThreads; import forge.game.Game; import forge.game.card.Card; @@ -26,6 +27,7 @@ import forge.gui.toolbox.special.PhaseLabel; import forge.net.FServer; import forge.util.Lang; import forge.util.maps.MapOfLists; + import org.apache.commons.lang3.tuple.Pair; import java.util.*; @@ -118,14 +120,17 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { return null; } - FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { - CMatchUI.SINGLETON_INSTANCE.initHandViews(FServer.instance.getLobby().getGuiPlayer()); - SLayoutIO.loadLayout(null); - VMatchUI.SINGLETON_INSTANCE.populate(); - for (VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) { - h.getLayoutControl().updateHand(); + FThreads.invokeInEdtNowOrLater(new Runnable() { + @Override + public void run() { + CMatchUI.SINGLETON_INSTANCE.initHandViews(FServer.instance.getLobby().getGuiPlayer()); + SLayoutIO.loadLayout(null); + VMatchUI.SINGLETON_INSTANCE.populate(); + for (VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) { + h.getLayoutControl().updateHand(); + } } - } }); + }); return null; } diff --git a/forge-gui/src/main/java/forge/gui/match/VMatchUI.java b/forge-gui/src/main/java/forge/gui/match/VMatchUI.java index af1c1b38ab7..a806f83f095 100644 --- a/forge-gui/src/main/java/forge/gui/match/VMatchUI.java +++ b/forge-gui/src/main/java/forge/gui/match/VMatchUI.java @@ -119,6 +119,15 @@ public enum VMatchUI implements IVTopLevelUI { } } + // Remove any hand panels that aren't needed anymore + for (int i = EDocID.Hands.length - 1; i >= lstHands.size(); i--) { + DragCell cellWithHand = EDocID.Hands[i].getDoc().getParentCell(); + if (cellWithHand != null) { + cellWithHand.removeDoc(EDocID.Hands[i].getDoc()); + EDocID.Hands[i].setDoc(new VEmptyDoc(EDocID.Hands[i])); + } + } + // Fill in gaps SwingUtilities.invokeLater(new Runnable() { @Override