fix: Prevent autocomplete from triggering on modifier key presses

This commit is contained in:
newtextdoc1111
2025-05-09 18:54:49 +09:00
parent a5355e1b64
commit fd381545dd
+20 -3
View File
@@ -842,18 +842,35 @@ export class AutocompleteEventHandler {
*/
handleKeyUp(event){
if (!settingValues.enabled) return;
// Do not process keyup events if Ctrl, Alt, or Meta keys are pressed.
// This prevents autocomplete from appearing for shortcuts like Ctrl+C, Ctrl+Z, etc.
// It also handles the release of a modifier key itself if it wasn't part of a character-producing combination.
if (event.ctrlKey || event.altKey || event.metaKey) {
return;
}
if (this.autocompleteUI.isVisible()) {
switch (event.key) {
case "Escape":
event.preventDefault();
this.autocompleteUI.hide();
break;
return; // Return here to prevent updateDisplay after hiding with Escape
// Other keys like Enter, Tab, Arrows are handled in keyDown.
// For other character keys, Backspace, Delete, we fall through to updateDisplay.
}
} else if (event.key.length > 1 && event.key != "Delete" && event.key != "Backspace") {
return;
} else {
// If UI is not visible, and the key is a non-character key (length > 1)
// and not Delete or Backspace, then do nothing.
// This prevents UI from appearing on ArrowUp, F1, Shift (alone), etc.
if (event.key.length > 1 && event.key !== "Delete" && event.key !== "Backspace") {
return;
}
}
// If the event was not handled by the above (e.g. Escape, or ignored special keys)
// and default action is not prevented, update the display.
// This will typically be for character inputs, Delete, or Backspace.
if (!event.defaultPrevented) {
this.autocompleteUI.updateDisplay(event.target);
}