Find in chat with Ctrl+F
A find bar above the conversations highlights matches and steps through them, or filters the selected tab down to matching messages. New lines no longer pull the view away while it is open. Ctrl+F opens it from anywhere the tree doesn't claim the shortcut. Note tabs are now found by their scroll pane like other tabs, so sending checks for a target instead of assuming every tab has one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,8 +15,10 @@ import com.ts3client.net.ChannelNode;
|
||||
import com.ts3client.sound.SoundNotifier;
|
||||
import com.ts3client.sound.SoundPlayer;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JMenuItem;
|
||||
@@ -24,10 +26,12 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.KeyStroke;
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.util.ArrayList;
|
||||
@@ -115,6 +119,16 @@ public final class MainFrame extends JFrame implements ServerTabPane.Listener {
|
||||
// Switching the icon pack in the options dialog re-decorates the whole window.
|
||||
IconTheme.get().addListener(() -> SwingUtilities.invokeLater(this::rebuildIcons));
|
||||
add(tabPane, BorderLayout.CENTER);
|
||||
// The tree and the chat each claim Ctrl+F for themselves while they have the focus;
|
||||
// from anywhere else it searches the chat.
|
||||
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
|
||||
.put(KeyStroke.getKeyStroke("control F"), "ts3-find");
|
||||
getRootPane().getActionMap().put("ts3-find", new AbstractAction() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (selected != null) selected.chat().openFind();
|
||||
}
|
||||
});
|
||||
statusBar = new StatusBar();
|
||||
statusBar.setVisible(settings.showStatusBar);
|
||||
add(statusBar, BorderLayout.SOUTH);
|
||||
|
||||
Reference in New Issue
Block a user