mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-07-04 14:15:48 +02:00
Merge pull request #20788 from calixteman/organize_context_menu
Add the pages organization actions in the Firefox context menu (bug 2018138)
This commit is contained in:
commit
72f98d4e00
@ -1852,7 +1852,7 @@ class AnnotationEditorUIManager {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (hasChanged) {
|
if (hasChanged) {
|
||||||
this._eventBus.dispatch("annotationeditorstateschanged", {
|
this._eventBus.dispatch("editingstateschanged", {
|
||||||
source: this,
|
source: this,
|
||||||
details: Object.assign(this.#previousStates, details),
|
details: Object.assign(this.#previousStates, details),
|
||||||
});
|
});
|
||||||
|
|||||||
@ -2173,7 +2173,7 @@ const PDFViewerApplication = {
|
|||||||
}
|
}
|
||||||
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
|
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
|
||||||
eventBus._on(
|
eventBus._on(
|
||||||
"annotationeditorstateschanged",
|
"editingstateschanged",
|
||||||
evt => externalServices.updateEditorStates(evt),
|
evt => externalServices.updateEditorStates(evt),
|
||||||
opts
|
opts
|
||||||
);
|
);
|
||||||
|
|||||||
@ -133,6 +133,10 @@ class PDFThumbnailViewer {
|
|||||||
|
|
||||||
#scrollableContainerHeight = 0;
|
#scrollableContainerHeight = 0;
|
||||||
|
|
||||||
|
#previousStates = {
|
||||||
|
hasSelectedPages: false,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {PDFThumbnailViewerOptions} options
|
* @param {PDFThumbnailViewerOptions} options
|
||||||
*/
|
*/
|
||||||
@ -185,6 +189,23 @@ class PDFThumbnailViewer {
|
|||||||
|
|
||||||
this.#toggleMenuEntries(false);
|
this.#toggleMenuEntries(false);
|
||||||
button.disabled = true;
|
button.disabled = true;
|
||||||
|
|
||||||
|
this.eventBus.on("editingaction", ({ name }) => {
|
||||||
|
switch (name) {
|
||||||
|
case "copyPage":
|
||||||
|
this.#copyPages();
|
||||||
|
break;
|
||||||
|
case "cutPage":
|
||||||
|
this.#cutPages();
|
||||||
|
break;
|
||||||
|
case "deletePage":
|
||||||
|
this.#deletePages();
|
||||||
|
break;
|
||||||
|
case "savePage":
|
||||||
|
this.#saveExtractedPages();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
manageMenu.button.hidden = true;
|
manageMenu.button.hidden = true;
|
||||||
}
|
}
|
||||||
@ -198,6 +219,24 @@ class PDFThumbnailViewer {
|
|||||||
this.#addEventListeners();
|
this.#addEventListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the different possible states of this manager, e.g. is there
|
||||||
|
* something to copy, paste, ...
|
||||||
|
* @param {Object} details
|
||||||
|
*/
|
||||||
|
#dispatchUpdateStates(details) {
|
||||||
|
const hasChanged = Object.entries(details).some(
|
||||||
|
([key, value]) => this.#previousStates[key] !== value
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hasChanged) {
|
||||||
|
this.eventBus.dispatch("editingstateschanged", {
|
||||||
|
source: this,
|
||||||
|
details: Object.assign(this.#previousStates, details),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#scrollUpdated() {
|
#scrollUpdated() {
|
||||||
this.renderingQueue.renderHighestPriority();
|
this.renderingQueue.renderHighestPriority();
|
||||||
}
|
}
|
||||||
@ -730,6 +769,9 @@ class PDFThumbnailViewer {
|
|||||||
this.#manageCopyButton.disabled =
|
this.#manageCopyButton.disabled =
|
||||||
this.#manageCutButton.disabled =
|
this.#manageCutButton.disabled =
|
||||||
!this.#selectedPages?.size;
|
!this.#selectedPages?.size;
|
||||||
|
this.#dispatchUpdateStates({
|
||||||
|
hasSelectedPages: !!this.#selectedPages?.size,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#toggleMenuEntries(enable) {
|
#toggleMenuEntries(enable) {
|
||||||
@ -895,6 +937,16 @@ class PDFThumbnailViewer {
|
|||||||
this.#computeThumbnailsPosition();
|
this.#computeThumbnailsPosition();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.container.addEventListener("focusout", () => {
|
||||||
|
this.#dispatchUpdateStates({
|
||||||
|
hasSelectedPages: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.container.addEventListener("focusin", () => {
|
||||||
|
this.#dispatchUpdateStates({
|
||||||
|
hasSelectedPages: !!this.#selectedPages?.size,
|
||||||
|
});
|
||||||
|
});
|
||||||
this.container.addEventListener("keydown", e => {
|
this.container.addEventListener("keydown", e => {
|
||||||
const { target } = e;
|
const { target } = e;
|
||||||
const isCheckbox =
|
const isCheckbox =
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user