Merge pull request #19372 from Snuffleupagus/mainHighlightColorPicker-toolbar-init

[GENERIC viewer] Re-initialize the viewer-toolbar `ColorPicker` for each PDF document
This commit is contained in:
Jonas Jenwald 2025-01-23 18:08:02 +01:00 committed by GitHub
commit 30fa7c3d84
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 20 deletions

View File

@ -907,6 +907,8 @@ class AnnotationEditorUIManager {
this.#altTextManager?.destroy();
this.#highlightToolbar?.hide();
this.#highlightToolbar = null;
this.#mainHighlightColorPicker?.destroy();
this.#mainHighlightColorPicker = null;
if (this.#focusMainContainerTimeoutId) {
clearTimeout(this.#focusMainContainerTimeoutId);
this.#focusMainContainerTimeoutId = null;

View File

@ -52,8 +52,10 @@ class AnnotationEditorParams {
editorFreeHighlightThickness,
editorHighlightShowAll,
}) {
const { eventBus } = this;
const dispatchEvent = (typeStr, value) => {
this.eventBus.dispatch("switchannotationeditorparams", {
eventBus.dispatch("switchannotationeditorparams", {
source: this,
type: AnnotationEditorParamsType[typeStr],
value,
@ -75,7 +77,7 @@ class AnnotationEditorParams {
dispatchEvent("INK_OPACITY", this.valueAsNumber);
});
editorStampAddImage.addEventListener("click", () => {
this.eventBus.dispatch("reporttelemetry", {
eventBus.dispatch("reporttelemetry", {
source: this,
details: {
type: "editing",
@ -93,7 +95,7 @@ class AnnotationEditorParams {
dispatchEvent("HIGHLIGHT_SHOW_ALL", !checked);
});
this.eventBus._on("annotationeditorparamschanged", evt => {
eventBus._on("annotationeditorparamschanged", evt => {
for (const [type, value] of evt.details) {
switch (type) {
case AnnotationEditorParamsType.FREETEXT_SIZE:
@ -111,6 +113,12 @@ class AnnotationEditorParams {
case AnnotationEditorParamsType.INK_OPACITY:
editorInkOpacity.value = value;
break;
case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:
eventBus.dispatch("mainhighlightcolorpickerupdatecolor", {
source: this,
value,
});
break;
case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:
editorFreeHighlightThickness.value = value;
break;

View File

@ -44,6 +44,8 @@ import {
*/
class Toolbar {
#colorPicker = null;
#opts;
/**
@ -139,12 +141,6 @@ class Toolbar {
document.documentElement.setAttribute("data-toolbar-density", name);
}
#setAnnotationEditorUIManager(uiManager, parentContainer) {
const colorPicker = new ColorPicker({ uiManager });
uiManager.setMainHighlightColorPicker(colorPicker);
parentContainer.append(colorPicker.renderMainDropdown());
}
setPageNumber(pageNumber, pageLabel) {
this.pageNumber = pageNumber;
this.pageLabel = pageLabel;
@ -164,6 +160,7 @@ class Toolbar {
}
reset() {
this.#colorPicker = null;
this.pageNumber = 0;
this.pageLabel = null;
this.hasPageLabels = false;
@ -255,17 +252,15 @@ class Toolbar {
eventBus._on("toolbardensity", this.#updateToolbarDensity.bind(this));
if (editorHighlightColorPicker) {
eventBus._on(
"annotationeditoruimanager",
({ uiManager }) => {
this.#setAnnotationEditorUIManager(
uiManager,
editorHighlightColorPicker
);
},
// Once the color picker has been added, we don't want to add it again.
{ once: true }
);
eventBus._on("annotationeditoruimanager", ({ uiManager }) => {
const cp = (this.#colorPicker = new ColorPicker({ uiManager }));
uiManager.setMainHighlightColorPicker(cp);
editorHighlightColorPicker.append(cp.renderMainDropdown());
});
eventBus._on("mainhighlightcolorpickerupdatecolor", ({ value }) => {
this.#colorPicker?.updateColor(value);
});
}
}