JS - Fix mouse event names

- fix issue #12895
This commit is contained in:
Calixte Denizet 2021-01-23 19:09:26 +01:00
parent 7102e4a5c3
commit 34d2e72df2
4 changed files with 20 additions and 22 deletions

View File

@ -370,8 +370,8 @@ class LinkAnnotationElement extends AnnotationElement {
parameters.data.isTooltipOnly || parameters.data.isTooltipOnly ||
(parameters.data.actions && (parameters.data.actions &&
(parameters.data.actions.Action || (parameters.data.actions.Action ||
parameters.data.actions.MouseUp || parameters.data.actions["Mouse Up"] ||
parameters.data.actions.MouseDown)) parameters.data.actions["Mouse Down"]))
); );
super(parameters, { isRenderable, createQuadrilaterals: true }); super(parameters, { isRenderable, createQuadrilaterals: true });
} }
@ -395,7 +395,9 @@ class LinkAnnotationElement extends AnnotationElement {
this._bindLink(link, data.dest); this._bindLink(link, data.dest);
} else if ( } else if (
data.actions && data.actions &&
(data.actions.Action || data.actions.MouseUp || data.actions.MouseDown) && (data.actions.Action ||
data.actions["Mouse Up"] ||
data.actions["Mouse Down"]) &&
this.enableScripting && this.enableScripting &&
this.hasJSActions this.hasJSActions
) { ) {
@ -469,8 +471,8 @@ class LinkAnnotationElement extends AnnotationElement {
link.href = this.linkService.getAnchorUrl(""); link.href = this.linkService.getAnchorUrl("");
const map = new Map([ const map = new Map([
["Action", "onclick"], ["Action", "onclick"],
["MouseUp", "onmouseup"], ["Mouse Up", "onmouseup"],
["MouseDown", "onmousedown"], ["Mouse Down", "onmousedown"],
]); ]);
for (const name of Object.keys(data.actions)) { for (const name of Object.keys(data.actions)) {
const jsName = map.get(name); const jsName = map.get(name);
@ -575,11 +577,7 @@ class WidgetAnnotationElement extends AnnotationElement {
_setEventListeners(element, names, getter) { _setEventListeners(element, names, getter) {
for (const [baseName, eventName] of names) { for (const [baseName, eventName] of names) {
if ( if (eventName === "Action" || this.data.actions?.[eventName]) {
eventName === "Action" ||
(this.data.actions &&
this.data.actions[eventName.replace(" ", "")] !== undefined)
) {
this._setEventListener(element, baseName, eventName, getter); this._setEventListener(element, baseName, eventName, getter);
} }
} }
@ -803,7 +801,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
["mousedown", "Mouse Down"], ["mousedown", "Mouse Down"],
["mouseenter", "Mouse Enter"], ["mouseenter", "Mouse Enter"],
["mouseleave", "Mouse Exit"], ["mouseleave", "Mouse Exit"],
["mouseup", "MouseUp"], ["mouseup", "Mouse Up"],
], ],
event => event.target.value event => event.target.value
); );
@ -942,7 +940,7 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
["mousedown", "Mouse Down"], ["mousedown", "Mouse Down"],
["mouseenter", "Mouse Enter"], ["mouseenter", "Mouse Enter"],
["mouseleave", "Mouse Exit"], ["mouseleave", "Mouse Exit"],
["mouseup", "MouseUp"], ["mouseup", "Mouse Up"],
], ],
event => event.target.checked event => event.target.checked
); );
@ -1031,7 +1029,7 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
["mousedown", "Mouse Down"], ["mousedown", "Mouse Down"],
["mouseenter", "Mouse Enter"], ["mouseenter", "Mouse Enter"],
["mouseleave", "Mouse Exit"], ["mouseleave", "Mouse Exit"],
["mouseup", "MouseUp"], ["mouseup", "Mouse Up"],
], ],
event => event.target.checked event => event.target.checked
); );
@ -1165,7 +1163,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
["mousedown", "Mouse Down"], ["mousedown", "Mouse Down"],
["mouseenter", "Mouse Enter"], ["mouseenter", "Mouse Enter"],
["mouseleave", "Mouse Exit"], ["mouseleave", "Mouse Exit"],
["mouseup", "MouseUp"], ["mouseup", "Mouse Up"],
], ],
event => event.target.checked event => event.target.checked
); );

View File

@ -83,7 +83,7 @@ class EventDispatcher {
return; return;
} }
const name = baseEvent.name.replace(" ", ""); const name = baseEvent.name;
const source = this._objects[id]; const source = this._objects[id];
const event = (globalThis.event = new Event(baseEvent)); const event = (globalThis.event = new Event(baseEvent));
let savedChange; let savedChange;

View File

@ -145,10 +145,10 @@ const AnnotationBorderStyleType = {
}; };
const AnnotationActionEventType = { const AnnotationActionEventType = {
E: "MouseEnter", E: "Mouse Enter",
X: "MouseExit", X: "Mouse Exit",
D: "MouseDown", D: "Mouse Down",
U: "MouseUp", U: "Mouse Up",
Fo: "Focus", Fo: "Focus",
Bl: "Blur", Bl: "Blur",
PO: "PageOpen", PO: "PageOpen",

View File

@ -2238,15 +2238,15 @@ describe("annotation", function () {
}) })
.then(object => { .then(object => {
const actions = object.actions; const actions = object.actions;
expect(actions.MouseEnter).toEqual(["hello()"]); expect(actions["Mouse Enter"]).toEqual(["hello()"]);
expect(actions.MouseExit).toEqual([ expect(actions["Mouse Exit"]).toEqual([
"world()", "world()",
"olleh()", "olleh()",
"foo()", "foo()",
"dlrow()", "dlrow()",
"oof()", "oof()",
]); ]);
expect(actions.MouseDown).toEqual(["bar()"]); expect(actions["Mouse Down"]).toEqual(["bar()"]);
done(); done();
}, done.fail); }, done.fail);
}); });