1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 06:38:07 +02:00

Ensure that the CursorTools-buttons are disabled e.g. during editing (PR 15522 follow-up)

We disable any non-default CursorTool in PresentationMode and during Editing, since they don't make sense there and to prevent problems such as e.g. [bug 1792422](https://bugzilla.mozilla.org/show_bug.cgi?id=1792422).
Hence it seems like a good idea to *also* disable the relevant SecondaryToolbar-buttons, to avoid the user being surprised that the CursorTools-buttons do nothing if clicked.
This commit is contained in:
Jonas Jenwald 2024-09-28 12:21:33 +02:00
parent c46ac3f73f
commit b1df164a26
2 changed files with 21 additions and 9 deletions

View file

@ -65,7 +65,19 @@ class PDFCursorTools {
// Cursor tools cannot be used in PresentationMode/AnnotationEditor. // Cursor tools cannot be used in PresentationMode/AnnotationEditor.
return; return;
} }
this.#switchTool(tool);
}
#switchTool(tool, disabled = false) {
if (tool === this.#active) { if (tool === this.#active) {
if (this.#prevActive !== null) {
// Ensure that the `disabled`-attribute of the buttons will be updated.
this.eventBus.dispatch("cursortoolchanged", {
source: this,
tool,
disabled,
});
}
return; // The requested tool is already active. return; // The requested tool is already active.
} }
@ -103,6 +115,7 @@ class PDFCursorTools {
this.eventBus.dispatch("cursortoolchanged", { this.eventBus.dispatch("cursortoolchanged", {
source: this, source: this,
tool, tool,
disabled,
}); });
} }
@ -122,21 +135,17 @@ class PDFCursorTools {
presentationModeState = PresentationModeState.NORMAL; presentationModeState = PresentationModeState.NORMAL;
const disableActive = () => { const disableActive = () => {
const prevActive = this.#active; this.#prevActive ??= this.#active; // Keep track of the first one.
this.#switchTool(CursorTool.SELECT, /* disabled = */ true);
this.switchTool(CursorTool.SELECT);
this.#prevActive ??= prevActive; // Keep track of the first one.
}; };
const enableActive = () => { const enableActive = () => {
const prevActive = this.#prevActive;
if ( if (
prevActive !== null && this.#prevActive !== null &&
annotationEditorMode === AnnotationEditorType.NONE && annotationEditorMode === AnnotationEditorType.NONE &&
presentationModeState === PresentationModeState.NORMAL presentationModeState === PresentationModeState.NORMAL
) { ) {
this.#switchTool(this.#prevActive);
this.#prevActive = null; this.#prevActive = null;
this.switchTool(prevActive);
} }
}; };

View file

@ -240,11 +240,14 @@ class SecondaryToolbar {
eventBus._on("spreadmodechanged", this.#spreadModeChanged.bind(this)); eventBus._on("spreadmodechanged", this.#spreadModeChanged.bind(this));
} }
#cursorToolChanged({ tool }) { #cursorToolChanged({ tool, disabled }) {
const { cursorSelectToolButton, cursorHandToolButton } = this.#opts; const { cursorSelectToolButton, cursorHandToolButton } = this.#opts;
toggleCheckedBtn(cursorSelectToolButton, tool === CursorTool.SELECT); toggleCheckedBtn(cursorSelectToolButton, tool === CursorTool.SELECT);
toggleCheckedBtn(cursorHandToolButton, tool === CursorTool.HAND); toggleCheckedBtn(cursorHandToolButton, tool === CursorTool.HAND);
cursorSelectToolButton.disabled = disabled;
cursorHandToolButton.disabled = disabled;
} }
#scrollModeChanged({ mode }) { #scrollModeChanged({ mode }) {