[Editor] Add a way to highlight text in using the keyboard (bug 1877426)

This commit is contained in:
Calixte Denizet 2024-02-09 18:01:20 +01:00
parent 7cfcd00a38
commit 8fc6c5c8a6
3 changed files with 107 additions and 7 deletions

View file

@ -581,6 +581,8 @@ class AnnotationEditorUIManager {
#boundKeydown = this.keydown.bind(this);
#boundKeyup = this.keyup.bind(this);
#boundOnEditingAction = this.onEditingAction.bind(this);
#boundOnPageChanging = this.onPageChanging.bind(this);
@ -765,6 +767,7 @@ class AnnotationEditorUIManager {
realScale: PixelsPerInch.PDF_TO_CSS_UNITS,
rotation: 0,
};
this.isShiftKeyDown = false;
}
destroy() {
@ -915,6 +918,7 @@ class AnnotationEditorUIManager {
}
blur() {
this.isShiftKeyDown = false;
if (!this.hasSelection) {
return;
}
@ -952,10 +956,12 @@ class AnnotationEditorUIManager {
// The keyboard events are caught at the container level in order to be able
// to execute some callbacks even if the current page doesn't have focus.
window.addEventListener("keydown", this.#boundKeydown);
window.addEventListener("keyup", this.#boundKeyup);
}
#removeKeyboardManager() {
window.removeEventListener("keydown", this.#boundKeydown);
window.removeEventListener("keyup", this.#boundKeyup);
}
#addCopyPasteListeners() {
@ -1084,11 +1090,24 @@ class AnnotationEditorUIManager {
* @param {KeyboardEvent} event
*/
keydown(event) {
if (!this.isShiftKeyDown && event.key === "Shift") {
this.isShiftKeyDown = true;
}
if (!this.isEditorHandlingKeyboard) {
AnnotationEditorUIManager._keyboardManager.exec(this, event);
}
}
/**
* Keyup callback.
* @param {KeyboardEvent} event
*/
keyup(event) {
if (this.isShiftKeyDown && event.key === "Shift") {
this.isShiftKeyDown = false;
}
}
/**
* Execute an action for a given name.
* For example, the user can click on the "Undo" entry in the context menu