From 2341cdeb6fe664fe74657d47c570bc091804131c Mon Sep 17 00:00:00 2001 From: asie Date: Sat, 15 Jun 2019 08:54:48 +0200 Subject: fix unwanted declaration navigation during Quick Find --- .../java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java | 7 ++++++- src/main/java/cuchaz/enigma/gui/Gui.java | 7 ++++--- .../java/cuchaz/enigma/gui/panels/PanelEditor.java | 19 ++++++++++++++++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java b/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java index 0c1d4cd..c912be3 100644 --- a/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java +++ b/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java @@ -36,7 +36,12 @@ public class EnigmaQuickFindDialog extends QuickFindDialog { public void showFor(JTextComponent target) { String selectedText = target.getSelectedText(); - super.showFor(target); + try { + super.showFor(target); + } catch (Exception e) { + e.printStackTrace(); + return; + } Container view = target.getParent(); Point loc = new Point(0, view.getHeight() - getSize().height); diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index a61f4dd..dceeaa4 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -528,14 +528,14 @@ public class Gui { return combo; } - public void onCaretMove(int pos) { + public void onCaretMove(int pos, boolean fromClick) { Token token = this.controller.getToken(pos); boolean isToken = token != null; cursorReference = this.controller.getReference(token); Entry referenceEntry = cursorReference != null ? cursorReference.entry : null; - if (referenceEntry != null && shouldNavigateOnClick) { + if (referenceEntry != null && shouldNavigateOnClick && fromClick) { shouldNavigateOnClick = false; Entry navigationEntry = referenceEntry; if (cursorReference.context == null) { @@ -768,8 +768,9 @@ public class Gui { if (response == JOptionPane.YES_OPTION) { this.saveMapping(); this.frame.dispose(); - } else if (response == JOptionPane.NO_OPTION) + } else if (response == JOptionPane.NO_OPTION) { this.frame.dispose(); + } return null; }, "Save and exit", "Discard changes", "Cancel"); diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java index ff84648..0a85f0a 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java +++ b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java @@ -16,13 +16,20 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class PanelEditor extends JEditorPane { + private boolean mouseIsPressed = false; + public PanelEditor(Gui gui) { this.setEditable(false); this.setSelectionColor(new Color(31, 46, 90)); this.setCaret(new BrowserCaret()); - this.addCaretListener(event -> gui.onCaretMove(event.getDot())); + this.addCaretListener(event -> gui.onCaretMove(event.getDot(), mouseIsPressed)); final PanelEditor self = this; this.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent mouseEvent) { + mouseIsPressed = true; + } + @Override public void mouseReleased(MouseEvent e) { switch (e.getButton()) { @@ -38,12 +45,15 @@ public class PanelEditor extends JEditorPane { gui.getController().openNextReference(); break; } + mouseIsPressed = false; } }); this.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent event) { if (event.isControlDown()) { + gui.setShouldNavigateOnClick(false); + switch (event.getKeyCode()) { case KeyEvent.VK_I: gui.popupMenu.showInheritanceMenu.doClick(); @@ -81,12 +91,15 @@ public class PanelEditor extends JEditorPane { gui.getController().refreshCurrentClass(); break; + case KeyEvent.VK_F: + // prevent navigating on click when quick find activated + break; + default: + gui.setShouldNavigateOnClick(true); // CTRL break; } } - - gui.setShouldNavigateOnClick(event.isControlDown()); } @Override -- cgit v1.2.3