Skip to content

Commit a1c460b

Browse files
dispatch KEY_PRESSED events that close entry tooltips (with exception for ctrl+c)
1 parent be44d7d commit a1c460b

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

enigma-swing/src/main/java/org/quiltmc/enigma/gui/panel/EntryTooltip.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.awt.Toolkit;
4646
import java.awt.Window;
4747
import java.awt.event.AWTEventListener;
48+
import java.awt.event.InputEvent;
4849
import java.awt.event.KeyEvent;
4950
import java.awt.event.MouseAdapter;
5051
import java.awt.event.MouseEvent;
@@ -89,8 +90,21 @@ public class EntryTooltip extends JWindow {
8990
};
9091

9192
private final AWTEventListener globalKeyListener = e -> {
92-
if (this.isShowing() && e.getID() == KeyEvent.KEY_TYPED) {
93-
this.closeAndDispatch(e);
93+
if (this.isShowing()) {
94+
final int id = e.getID();
95+
if (id == KeyEvent.KEY_TYPED) {
96+
this.closeAndDispatch(e);
97+
} else if (id == KeyEvent.KEY_PRESSED && e instanceof KeyEvent keyEvent) {
98+
final int modifiers = keyEvent.getModifiersEx();
99+
final int keyCode = keyEvent.getKeyCode();
100+
if (
101+
modifiers != 0 && keyCode != KeyEvent.VK_CONTROL
102+
// special case ctrl+c so an editor's copy doesn't overwrite text copied by a tooltip's copy
103+
&& !(keyCode == KeyEvent.VK_C && modifiers == InputEvent.CTRL_DOWN_MASK)
104+
) {
105+
this.closeAndDispatch(e);
106+
}
107+
}
94108
}
95109
};
96110

0 commit comments

Comments
 (0)