mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-23 08:38:06 +02:00
Support downloading FileAttachment annotations with the keyboard
While reviewing PR 16898 it occurred to me that it's currently impossible to trigger downloading of FileAttachment annotations using the keyboard. Hence this patch adds `Ctrl + Enter` as the keyboard shortcut to download those, thus supplementing the existing double-clicking when using a mouse.
This commit is contained in:
parent
f2a4f2adaf
commit
e7800c22dd
1 changed files with 12 additions and 8 deletions
|
@ -2745,7 +2745,7 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
|
|||
render() {
|
||||
this.container.classList.add("fileAttachmentAnnotation");
|
||||
|
||||
const { data } = this;
|
||||
const { container, data } = this;
|
||||
let trigger;
|
||||
if (data.hasAppearance || data.fillAlpha === 0) {
|
||||
trigger = document.createElement("div");
|
||||
|
@ -2770,17 +2770,24 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
|
|||
}
|
||||
}
|
||||
}
|
||||
trigger.addEventListener("dblclick", this._download.bind(this));
|
||||
trigger.addEventListener("dblclick", this.#download.bind(this));
|
||||
this.#trigger = trigger;
|
||||
|
||||
const { isMac } = FeatureTest.platform;
|
||||
container.addEventListener("keydown", evt => {
|
||||
if (evt.key === "Enter" && (isMac ? evt.metaKey : evt.ctrlKey)) {
|
||||
this.#download();
|
||||
}
|
||||
});
|
||||
|
||||
if (!data.popupRef && this.hasPopupData) {
|
||||
this._createPopup();
|
||||
} else {
|
||||
trigger.classList.add("popupTriggerArea");
|
||||
}
|
||||
|
||||
this.container.append(trigger);
|
||||
return this.container;
|
||||
container.append(trigger);
|
||||
return container;
|
||||
}
|
||||
|
||||
getElementsToTriggerPopup() {
|
||||
|
@ -2793,11 +2800,8 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
|
|||
|
||||
/**
|
||||
* Download the file attachment associated with this annotation.
|
||||
*
|
||||
* @private
|
||||
* @memberof FileAttachmentAnnotationElement
|
||||
*/
|
||||
_download() {
|
||||
#download() {
|
||||
this.downloadManager?.openOrDownloadData(
|
||||
this.container,
|
||||
this.content,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue