mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-08 17:30:09 +02:00
[Editor] Disable existing highlights when drawing a new one (bug 1879035)
When the mouse was hovering an existing highlight, all the text in the page was selected. So when the user is selecting some text or drawing a free highlight, the mouse is disabled for the existing editors.
This commit is contained in:
parent
df5bc544df
commit
4e7c30da9a
4 changed files with 172 additions and 14 deletions
|
@ -967,6 +967,19 @@ class AnnotationEditorUIManager {
|
|||
: anchorNode;
|
||||
}
|
||||
|
||||
#getLayerForTextLayer(textLayer) {
|
||||
const { currentLayer } = this;
|
||||
if (currentLayer.hasTextLayer(textLayer)) {
|
||||
return currentLayer;
|
||||
}
|
||||
for (const layer of this.#allLayers.values()) {
|
||||
if (layer.hasTextLayer(textLayer)) {
|
||||
return layer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
highlightSelection(methodOfCreation = "") {
|
||||
const selection = document.getSelection();
|
||||
if (!selection || selection.isCollapsed) {
|
||||
|
@ -988,19 +1001,17 @@ class AnnotationEditorUIManager {
|
|||
});
|
||||
this.showAllEditors("highlight", true, /* updateButton = */ true);
|
||||
}
|
||||
for (const layer of this.#allLayers.values()) {
|
||||
if (layer.hasTextLayer(textLayer)) {
|
||||
layer.createAndAddNewEditor({ x: 0, y: 0 }, false, {
|
||||
methodOfCreation,
|
||||
boxes,
|
||||
anchorNode,
|
||||
anchorOffset,
|
||||
focusNode,
|
||||
focusOffset,
|
||||
text,
|
||||
});
|
||||
break;
|
||||
}
|
||||
const layer = this.#getLayerForTextLayer(textLayer);
|
||||
if (layer) {
|
||||
layer.createAndAddNewEditor({ x: 0, y: 0 }, false, {
|
||||
methodOfCreation,
|
||||
boxes,
|
||||
anchorNode,
|
||||
anchorOffset,
|
||||
focusNode,
|
||||
focusOffset,
|
||||
text,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1062,6 +1073,7 @@ class AnnotationEditorUIManager {
|
|||
}
|
||||
return;
|
||||
}
|
||||
|
||||
this.#highlightToolbar?.hide();
|
||||
this.#selectedTextNode = anchorNode;
|
||||
this.#dispatchUpdateStates({
|
||||
|
@ -1081,12 +1093,19 @@ class AnnotationEditorUIManager {
|
|||
|
||||
this.#highlightWhenShiftUp = this.isShiftKeyDown;
|
||||
if (!this.isShiftKeyDown) {
|
||||
const activeLayer =
|
||||
this.#mode === AnnotationEditorType.HIGHLIGHT
|
||||
? this.#getLayerForTextLayer(textLayer)
|
||||
: null;
|
||||
activeLayer?.toggleDrawing();
|
||||
|
||||
const signal = this._signal;
|
||||
const pointerup = e => {
|
||||
if (e.type === "pointerup" && e.button !== 0) {
|
||||
// Do nothing on right click.
|
||||
return;
|
||||
}
|
||||
activeLayer?.toggleDrawing(true);
|
||||
window.removeEventListener("pointerup", pointerup);
|
||||
window.removeEventListener("blur", pointerup);
|
||||
if (e.type === "pointerup") {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue