From beaf9190c93a010866fd91721e7b3d209b8aaec5 Mon Sep 17 00:00:00 2001 From: Gabriel Felipe Souza Santos Date: Wed, 4 Nov 2026 00:13:45 -0300 Subject: [PATCH] fix(chat): ao fechar a conversa, a sala geral volta a ser o destino MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O fechamento da aba não avisava a seleção da sala, então o menu e o texto continuavam os do peer. Co-authored-by: Cursor --- .../shell/ClosableTabbedPane.java | 3 ++- .../shell/SessionTabBarStripTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/pitiupi/src/pitiupi/presentation/shell/ClosableTabbedPane.java b/pitiupi/src/pitiupi/presentation/shell/ClosableTabbedPane.java index 0fef29b..a8e9b55 100644 --- a/pitiupi/src/pitiupi/presentation/shell/ClosableTabbedPane.java +++ b/pitiupi/src/pitiupi/presentation/shell/ClosableTabbedPane.java @@ -201,7 +201,8 @@ public final class ClosableTabbedPane { next = firstTabKey(); } if (next != null) { - selectTab(next); + selectTabSilently(next); + onTabSelected.accept(next); } else if (!suppressSelectionEvents) { onTabSelected.accept(null); } diff --git a/pitiupi/test/pitiupi/presentation/shell/SessionTabBarStripTest.java b/pitiupi/test/pitiupi/presentation/shell/SessionTabBarStripTest.java index 281f983..4db15ca 100644 --- a/pitiupi/test/pitiupi/presentation/shell/SessionTabBarStripTest.java +++ b/pitiupi/test/pitiupi/presentation/shell/SessionTabBarStripTest.java @@ -3,6 +3,8 @@ package pitiupi.presentation.shell; import org.junit.jupiter.api.Test; import javax.swing.JPanel; +import java.util.ArrayList; +import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -78,4 +80,22 @@ class SessionTabBarStripTest { assertEquals(1, bar.getTabCount()); assertEquals(false, bar.hasTab(wifi)); } + + @Test + void closingPeerTabNotifiesRoomEvenWhenItWasAlreadyUnderneath() { + SessionTabBar bar = new SessionTabBar(); + List selected = new ArrayList<>(); + bar.setOnTabSelected(selected::add); + bar.addOrSelectTab(PluginSessionKeys.ROOM, "Sala geral", new JPanel(), false); + String peer = PluginSessionKeys.peer("192.168.3.131"); + bar.addOrSelectTab(peer, "Vostro", "192.168.3.131", new JPanel(), true); + bar.selectTab(PluginSessionKeys.ROOM); + bar.selectTab(peer); + selected.clear(); + + bar.closeTab(peer); + + assertEquals(PluginSessionKeys.ROOM, bar.selectedKey()); + assertEquals(List.of(PluginSessionKeys.ROOM), selected); + } }