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); + } }