Merge pull request #16902 from Snuffleupagus/FileAttachment-keyboard-download

Support downloading FileAttachment annotations with the keyboard
This commit is contained in:
Jonas Jenwald 2023-09-05 12:45:04 +02:00 committed by GitHub
commit 92792a8215
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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,