v2026.5.43 — Fix Firefox menu dock position + stabilité popup pin/unpin
Bug Firefox uniquement : positionnement du menu hover des pastilles du
dock (popup réduit) corrigé. La cause était que getBoundingClientRect()
était appelé immédiatement après appendChild sans que Firefox n'ait fini
de calculer la mise en page, combiné à un transform: translateY dans
l'animation d'apparition du menu. Fix : positionnement hors écran initial,
force-layout via offsetHeight, puis pose finale. Animation CSS simplifiée
en opacité-only.
Stabilité popup au pin/unpin (tous navigateurs) : la popup épinglée
bougeait de 16px et changeait légèrement de taille quand on la
dé-épinglait via le bouton 📌. Cause : .pinned-popup avait padding-top
28px + border 2px alors que .soft-unpinned avait padding-top 12px + border
1px. Fix : .soft-unpinned conserve désormais les mêmes dimensions, juste
la couleur de bordure change (--border-strong gris au lieu de --accent
bleu) pour signaler le mode détaché.
This commit is contained in:
+12
-1
@@ -9339,9 +9339,19 @@ function _showPillHoverMenu(pill, popup) {
|
||||
});
|
||||
menu.appendChild(closeBtn);
|
||||
|
||||
// v2026.5.43 (Firefox-fix) : positionner le menu HORS écran d'abord pour
|
||||
// qu'il soit layouté sans flash, puis mesurer ses dimensions, puis poser
|
||||
// la position finale. Sans ça, Firefox lit parfois des dimensions à 0
|
||||
// (timing de l'animation `pill-hover-menu-appear` + transform initial),
|
||||
// ce qui projette le menu n'importe où sur l'écran.
|
||||
menu.style.left = "-9999px";
|
||||
menu.style.top = "-9999px";
|
||||
menu.style.visibility = "hidden";
|
||||
document.body.appendChild(menu);
|
||||
// Force le navigateur à calculer la mise en page maintenant (Firefox ne
|
||||
// le fait pas toujours sur getBoundingClientRect immédiat après append).
|
||||
void menu.offsetHeight;
|
||||
|
||||
// Positionner au-dessus de la pastille
|
||||
const r = pill.getBoundingClientRect();
|
||||
const menuR = menu.getBoundingClientRect();
|
||||
let left = r.left + (r.width / 2) - (menuR.width / 2);
|
||||
@@ -9349,6 +9359,7 @@ function _showPillHoverMenu(pill, popup) {
|
||||
if (left + menuR.width > window.innerWidth - 4) left = window.innerWidth - menuR.width - 4;
|
||||
menu.style.left = left + "px";
|
||||
menu.style.top = (r.top - menuR.height - 8) + "px";
|
||||
menu.style.visibility = "";
|
||||
|
||||
// Garder ouvert si la souris entre dans le menu
|
||||
menu.addEventListener("mouseenter", () => {
|
||||
|
||||
Reference in New Issue
Block a user