Handle nested link clicks in annotations

This commit is contained in:
Andrea Alberti 2026-01-24 19:55:59 +01:00
parent 4845905453
commit 4a8f777602
2 changed files with 18 additions and 13 deletions

View file

@ -1,7 +1,7 @@
{
"id": "plugins-annotations",
"name": "Plugins Annotations",
"version": "1.7.9",
"version": "1.7.10",
"minAppVersion": "1.5.0",
"description": "Allows adding personal comments to each installed plugin.",
"author": "Andrea Alberti",

View file

@ -55,13 +55,16 @@ export class AnnotationControl {
}
addEventListeners() {
const linkInteractionHandler = (event: MouseEvent | TouchEvent) => {
if (event.target && (event.target as HTMLElement).tagName === 'A') {
this.clickedLink = true;
} else {
this.clickedLink = false;
}
};
const linkInteractionHandler = (event: MouseEvent | TouchEvent) => {
const target = event.target as HTMLElement | null;
// Use closest('a') so clicks on nested elements (e.g., spans inside links) still register as link clicks.
// This scenario is likely never occurring, but closest('a') keeps link detection reliable (just in case).
if (target && target.closest('a')) {
this.clickedLink = true;
} else {
this.clickedLink = false;
}
};
this.annotation_div.addEventListener('mousedown', linkInteractionHandler);
this.annotation_div.addEventListener('touchstart', linkInteractionHandler, { passive: true });
@ -71,11 +74,13 @@ export class AnnotationControl {
this.annotation_div.addEventListener('click', (event:MouseEvent) => {
if(!this.plugin.settings.editable) {
return;
} else {
event.stopPropagation();
// Explicitly focus to help mobile keyboards appear, especially on Android.
this.annotation_div.focus();
}
} else {
event.stopPropagation();
if (!this.clickedLink) {
// Explicitly focus to help mobile keyboards appear, especially on Android.
this.annotation_div.focus();
}
}
});
this.annotation_div.addEventListener('focus', async (event:FocusEvent) => {