fix: coller du menu contextuel tableur muet + planchers sécurité CI (BUG-108)
BUG-108 — closeContextMenu() retirait le nœud du menu AVANT de déférencer _menu : le retrait émet focusout en synchrone (le menu tient le focus), qui rappelle closeContextMenu() ; le second remove() sur un nœud démonté lève NotFoundError et avorte le handler de l'action « Coller » du viewer — le coller par menu contextuel était silencieusement mort (régression de la fermeture au focus #179, reproduite par l'E2E « coller une plage », CI #850→#854). Déférencement avant retrait. Sécurité CI (job security, run #853) : - plancher multidict>=6.9.1 (CVE-2026-104874 ; 6.7.x préinstallée dans la toolcache de l'image du runner, même piège « already satisfied » que pypdf BUG-093) + entrée dans le garde-fou TestDependencySecurityFloors ; - exception documentée CVE-2026-85394 (python-jose, AUCUN correctif upstream) : non atteignable ici, jwt.decode passe toujours algorithms=["HS256"] avec un secret symétrique serveur — jamais de clé publique comme clé HMAC. Vérifié : E2E -g « coller une plage » 1/1 ; xlsx-menus 11/11, xlsx-formula 14/14, ai 100/100, ai-quick-actions 13/13 ; pytest 1586 passés ; ruff/mypy 0 erreur ; ISSUES_TODOLIST + CHANGELOG à jour.
This commit is contained in:
@@ -17,10 +17,14 @@ let _openedAt = 0;
|
||||
let _dismissBound = false;
|
||||
|
||||
export function closeContextMenu() {
|
||||
if (_menu) {
|
||||
_menu.remove();
|
||||
_menu = null;
|
||||
}
|
||||
// BUG-108: drop the reference BEFORE touching the DOM — removing a menu
|
||||
// that holds the focus fires blur/focusout synchronously, which re-enters
|
||||
// this very function; the second remove() on the mid-flight node throws
|
||||
// NotFoundError and aborts the caller's click handler before its action
|
||||
// runs (contextual « Coller » silently dead, e2e xlsx-viewer A5).
|
||||
const menu = _menu;
|
||||
_menu = null;
|
||||
if (menu) menu.remove();
|
||||
}
|
||||
|
||||
export function isContextMenuOpen() {
|
||||
|
||||
Reference in New Issue
Block a user