From bd1ab573f11c602973c2bde8ec4d949205488d24 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Mon, 20 May 2024 14:29:31 +0400 Subject: [PATCH] GUI: fixed that attack/block arrows was visible after disconnect (closes #12258) --- .../src/main/java/mage/client/MageFrame.java | 20 +++++++++++-------- .../mage/client/util/gui/ArrowBuilder.java | 11 ---------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index b6b43d00d70..124c681853d 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -681,25 +681,29 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { if (activeFrame != null) { activeFrame.deactivated(); } + activeFrame = null; - // If null, no new frame to activate, return early + // clean resources + ArrowBuilder.getBuilder().hideAllPanels(); + MusicPlayer.stopBGM(); + + // if no new frame to activate (example: disconnection) if (frame == null) { - activeFrame = null; return; } + LOGGER.debug("Setting " + frame.getTitle() + " active"); + activeFrame = frame; - desktopPane.moveToFront(frame); + desktopPane.moveToFront(activeFrame); activeFrame.setBounds(0, 0, desktopPane.getWidth(), desktopPane.getHeight()); activeFrame.revalidate(); activeFrame.activated(); activeFrame.setVisible(true); - ArrowBuilder.getBuilder().hideAllPanels(); - if (frame instanceof GamePane) { - ArrowBuilder.getBuilder().showPanel(((GamePane) frame).getGameId()); + + if (activeFrame instanceof GamePane) { + ArrowBuilder.getBuilder().showPanel(((GamePane) activeFrame).getGameId()); MusicPlayer.playBGM(); - } else { - MusicPlayer.stopBGM(); } } diff --git a/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java b/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java index b471998a53b..826da1f8775 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java @@ -69,17 +69,6 @@ public class ArrowBuilder { return arrowPanels.get(gameId); } - /** - * Not synchronized method for arrows panel. - * Doesn't create JPanel in case the panel doesn't exist. - * Works faster. - * - * @return - */ - /*public JPanel getPanelRef() { - return arrowsManagerPanel; - }*/ - /** * Adds new arrow. *