Merge pull request #12333 from calixteman/tooltip
Add tooltip if any in annotations layer
This commit is contained in:
commit
6ff1fe4ea9
@ -1533,6 +1533,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
|
||||
this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&
|
||||
!this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);
|
||||
this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);
|
||||
this.data.isTooltipOnly = false;
|
||||
|
||||
if (this.data.checkBox) {
|
||||
this._processCheckBox(params);
|
||||
@ -1780,11 +1781,13 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
|
||||
}
|
||||
|
||||
_processPushButton(params) {
|
||||
if (!params.dict.has("A")) {
|
||||
if (!params.dict.has("A") && !this.data.alternativeText) {
|
||||
warn("Push buttons without action dictionaries are not supported");
|
||||
return;
|
||||
}
|
||||
|
||||
this.data.isTooltipOnly = !params.dict.has("A");
|
||||
|
||||
Catalog.parseDestDictionary({
|
||||
destDict: params.dict,
|
||||
resultObj: this.data,
|
||||
|
@ -293,7 +293,8 @@ class LinkAnnotationElement extends AnnotationElement {
|
||||
const isRenderable = !!(
|
||||
parameters.data.url ||
|
||||
parameters.data.dest ||
|
||||
parameters.data.action
|
||||
parameters.data.action ||
|
||||
parameters.data.isTooltipOnly
|
||||
);
|
||||
super(parameters, isRenderable);
|
||||
}
|
||||
@ -322,8 +323,10 @@ class LinkAnnotationElement extends AnnotationElement {
|
||||
});
|
||||
} else if (data.action) {
|
||||
this._bindNamedAction(link, data.action);
|
||||
} else {
|
||||
} else if (data.dest) {
|
||||
this._bindLink(link, data.dest);
|
||||
} else {
|
||||
this._bindLink(link, "");
|
||||
}
|
||||
|
||||
this.container.appendChild(link);
|
||||
@ -420,6 +423,10 @@ class WidgetAnnotationElement extends AnnotationElement {
|
||||
*/
|
||||
render() {
|
||||
// Show only the container for unsupported field types.
|
||||
if (this.data.alternativeText) {
|
||||
this.container.title = this.data.alternativeText;
|
||||
}
|
||||
|
||||
return this.container;
|
||||
}
|
||||
}
|
||||
@ -647,6 +654,11 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
|
||||
// as performing actions on form fields (resetting, submitting, et cetera).
|
||||
const container = super.render();
|
||||
container.className = "buttonWidgetAnnotation pushButton";
|
||||
|
||||
if (this.data.alternativeText) {
|
||||
container.title = this.data.alternativeText;
|
||||
}
|
||||
|
||||
return container;
|
||||
}
|
||||
}
|
||||
|
@ -2520,6 +2520,49 @@ describe("annotation", function () {
|
||||
})
|
||||
.catch(done.fail);
|
||||
});
|
||||
|
||||
it("should handle push buttons", function (done) {
|
||||
const buttonWidgetRef = Ref.get(124, 0);
|
||||
buttonWidgetDict.set("Ff", AnnotationFieldFlag.PUSHBUTTON);
|
||||
buttonWidgetDict.set("A", "whatever");
|
||||
|
||||
const xref = new XRefMock([
|
||||
{ ref: buttonWidgetRef, data: buttonWidgetDict },
|
||||
]);
|
||||
|
||||
AnnotationFactory.create(
|
||||
xref,
|
||||
buttonWidgetRef,
|
||||
pdfManagerMock,
|
||||
idFactoryMock
|
||||
).then(({ data }) => {
|
||||
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
|
||||
expect(data.pushButton).toEqual(true);
|
||||
done();
|
||||
}, done.fail);
|
||||
});
|
||||
|
||||
it("should handle push buttons that act as a tooltip only", function (done) {
|
||||
const buttonWidgetRef = Ref.get(124, 0);
|
||||
buttonWidgetDict.set("Ff", AnnotationFieldFlag.PUSHBUTTON);
|
||||
buttonWidgetDict.set("TU", "An alternative text");
|
||||
|
||||
const xref = new XRefMock([
|
||||
{ ref: buttonWidgetRef, data: buttonWidgetDict },
|
||||
]);
|
||||
|
||||
AnnotationFactory.create(
|
||||
xref,
|
||||
buttonWidgetRef,
|
||||
pdfManagerMock,
|
||||
idFactoryMock
|
||||
).then(({ data }) => {
|
||||
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
|
||||
expect(data.pushButton).toEqual(true);
|
||||
expect(data.alternativeText).toEqual("An alternative text");
|
||||
done();
|
||||
}, done.fail);
|
||||
});
|
||||
});
|
||||
|
||||
describe("ChoiceWidgetAnnotation", function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user