From 3fe9a7aff81f8acad84dec56cb95d4902cc1cc9b Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Wed, 15 Jul 2026 13:35:58 +0300 Subject: [PATCH] SPARK-2308: fix Bookmark room when rooms are filtered --- .../ui/conferences/ConferenceRoomBrowser.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java b/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java index a14e49d64..02d346a14 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java @@ -235,11 +235,12 @@ public class ConferenceRoomBrowser extends JPanel implements ActionListener, Com } private RoomInfo selectedRoomInfo() { - final int selectedRow = roomsTable.getSelectedRow(); - if (selectedRow == -1) { + final int viewRow = roomsTable.getSelectedRow(); + if (viewRow == -1) { return null; } - Localpart roomNamePart = Localpart.formUnescapedOrNull(roomsTable.getValueAt(selectedRow, 2).toString()); + final int modelRow = sorter.convertRowIndexToModel(viewRow); + Localpart roomNamePart = Localpart.formUnescapedOrNull(roomsTable.getModel().getValueAt(modelRow, 2).toString()); EntityBareJid roomJID = JidCreate.entityBareFrom(roomNamePart, serviceName); RoomInfo roomInfo = roomInfos.get(roomJID); return roomInfo; @@ -426,9 +427,10 @@ public class ConferenceRoomBrowser extends JPanel implements ActionListener, Com boolean isBookmarked = isBookmarked(roomInfo.getRoom()); String roomName = roomInfo.getName() != null ? roomInfo.getName() : roomInfo.getRoom().getLocalpart().toString(); conferences.addOrRemoveNode(serviceName, isBookmarked, roomName, roomInfo.getRoom()); - int selectedRow = roomsTable.getSelectedRow(); + int viewRow = roomsTable.getSelectedRow(); + int modelRow = sorter.convertRowIndexToModel(viewRow); ImageIcon bookmarkIcon = isBookmarked ? SparkRes.getImageIcon(SparkRes.Icon.BLANK_IMAGE) : SparkRes.getImageIcon(SparkRes.Icon.BOOKMARK_ICON); - roomsTable.getTableModel().setValueAt(new JLabel(bookmarkIcon), selectedRow, 0); + roomsTable.getTableModel().setValueAt(new JLabel(bookmarkIcon), modelRow, 0); addBookmarkUI(!isBookmarked); } @@ -723,8 +725,8 @@ public class ConferenceRoomBrowser extends JPanel implements ActionListener, Com * @param addBookmark true if the button should display itself as bookmarkable :) */ private void addBookmarkUI(boolean addBookmark) { - if (!addBookmark) { - addRoomButton.setText(Res.getString("button.remove.bookmark")); + if (addBookmark) { + ResourceUtils.resButton(addRoomButton, Res.getString("button.remove.bookmark")); addRoomButton.setIcon(SparkRes.getImageIcon(SparkRes.Icon.DELETE_BOOKMARK_ICON)); } else { ResourceUtils.resButton(addRoomButton, Res.getString("button.bookmark.room"));