From 64303f455e09707e07cc182a12714ac5bf5bbce9 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 24 Aug 2023 22:09:07 +0800 Subject: [PATCH] fix GUI for attached panels with each other - closes #3661 --- .../src/main/java/forge/view/arcane/PlayArea.java | 10 +++++++++- .../src/forge/screens/match/TargetingOverlay.java | 3 +++ .../forge/screens/match/views/VCardDisplayArea.java | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java b/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java index 67ca4f6680c..07c501b5b3f 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java @@ -697,7 +697,15 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen CardPanel attachedToPanel; if (card.getAttachedTo() != null) { - attachedToPanel = getCardPanel(card.getAttachedTo().getId()); + if (card != card.getAttachedTo().getAttachedTo()) + attachedToPanel = getCardPanel(card.getAttachedTo().getId()); + else { + toPanel.getAttachedPanels().remove(getCardPanel(card.getAttachedTo().getId())); + CardPanel panel = getCardPanel(card.getAttachedTo().getId()); + if (panel != null) + panel.setAttachedToPanel(null); + attachedToPanel = null; + } } else { attachedToPanel = null; } diff --git a/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java b/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java index f1b799143f8..73796dbe256 100644 --- a/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java +++ b/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java @@ -77,6 +77,9 @@ public class TargetingOverlay { drawArrow(g, endpoints.get(attachedTo.getId()), endpoints.get(c.getId()), ArcConnection.Friends); } } + if (null != attachedTo && c == attachedTo.getAttachedTo()) { + drawArrow(g, endpoints.get(attachedTo.getId()), endpoints.get(c.getId()), ArcConnection.Friends); + } if (null != attachedCards) { for (final CardView enc : attachedCards) { if (enc.getController() != null && !enc.getController().equals(c.getController())) { diff --git a/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java b/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java index a089e8b4657..cc0f5bf105d 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java @@ -300,7 +300,12 @@ public abstract class VCardDisplayArea extends VDisplayArea implements ActivateH } if (card.getAttachedTo() != null) { - setAttachedToPanel(CardAreaPanel.get(card.getAttachedTo())); + if (card != card.getAttachedTo().getAttachedTo()) + setAttachedToPanel(CardAreaPanel.get(card.getAttachedTo())); + else { + attachedPanels.remove(CardAreaPanel.get(card.getAttachedTo())); + setAttachedToPanel(null); + } } else { setAttachedToPanel(null);