Fixed #1458 Quick find bar overlaying horizontal scrollbar

This commit is contained in:
Jindra Petřík
2023-01-22 22:15:04 +01:00
parent d5b1519d2f
commit b0a9b977d0
3 changed files with 12 additions and 1 deletions
@@ -27,6 +27,8 @@ import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.swing.JCheckBox;
import javax.swing.JRootPane;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
@@ -90,7 +92,7 @@ public class QuickFindDialog extends javax.swing.JDialog
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
}
public void showFor(final JTextComponent target) {
oldCaretPosition = target.getCaretPosition();
Container view = target.getParent();
@@ -99,6 +101,13 @@ public class QuickFindDialog extends javax.swing.JDialog
Point loc = new Point(0, view.getHeight());
setSize(wd);
setLocationRelativeTo(view);
if (view.getParent() instanceof JScrollPane) {
JScrollPane scrollPane = (JScrollPane) view.getParent();
JScrollBar horizontalScrollBar = scrollPane.getHorizontalScrollBar();
if (horizontalScrollBar.isVisible()) {
loc.y += horizontalScrollBar.getHeight();
}
}
SwingUtilities.convertPointToScreen(loc, view);
setLocation(loc);
jTxtFind.setFont(target.getFont());