mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Merge pull request #18481 from nicolo-ribaudo/fix-selection-with-links
Disable link annotations during text selection
This commit is contained in:
commit
6f9fc70926
5 changed files with 289 additions and 101 deletions
|
@ -126,6 +126,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
.textLayer.selecting ~ & section {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
:is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a {
|
||||
position: absolute;
|
||||
font-size: 1em;
|
||||
|
|
|
@ -118,9 +118,9 @@
|
|||
z-index: 0;
|
||||
cursor: default;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
&.active {
|
||||
top: 0;
|
||||
}
|
||||
&.selecting .endOfContent {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -150,8 +150,8 @@ class TextLayerBuilder {
|
|||
#bindMouse(end) {
|
||||
const { div } = this;
|
||||
|
||||
div.addEventListener("mousedown", evt => {
|
||||
end.classList.add("active");
|
||||
div.addEventListener("mousedown", () => {
|
||||
div.classList.add("selecting");
|
||||
});
|
||||
|
||||
div.addEventListener("copy", event => {
|
||||
|
@ -193,16 +193,42 @@ class TextLayerBuilder {
|
|||
end.style.width = "";
|
||||
end.style.height = "";
|
||||
}
|
||||
end.classList.remove("active");
|
||||
textLayer.classList.remove("selecting");
|
||||
};
|
||||
|
||||
let isPointerDown = false;
|
||||
document.addEventListener(
|
||||
"pointerdown",
|
||||
() => {
|
||||
isPointerDown = true;
|
||||
},
|
||||
{ signal }
|
||||
);
|
||||
document.addEventListener(
|
||||
"pointerup",
|
||||
() => {
|
||||
isPointerDown = false;
|
||||
this.#textLayers.forEach(reset);
|
||||
},
|
||||
{ signal }
|
||||
);
|
||||
window.addEventListener(
|
||||
"blur",
|
||||
() => {
|
||||
isPointerDown = false;
|
||||
this.#textLayers.forEach(reset);
|
||||
},
|
||||
{ signal }
|
||||
);
|
||||
document.addEventListener(
|
||||
"keyup",
|
||||
() => {
|
||||
if (!isPointerDown) {
|
||||
this.#textLayers.forEach(reset);
|
||||
}
|
||||
},
|
||||
{ signal }
|
||||
);
|
||||
|
||||
if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("MOZCENTRAL")) {
|
||||
// eslint-disable-next-line no-var
|
||||
|
@ -237,7 +263,7 @@ class TextLayerBuilder {
|
|||
|
||||
for (const [textLayerDiv, endDiv] of this.#textLayers) {
|
||||
if (activeTextLayers.has(textLayerDiv)) {
|
||||
endDiv.classList.add("active");
|
||||
textLayerDiv.classList.add("selecting");
|
||||
} else {
|
||||
reset(endDiv, textLayerDiv);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue