Le menu contextuel pour citer du texte ne répond pas sur Android

Pour l’instant, je ne peux pas surligner et citer du texte sur Android. C’est le cas depuis un moment. Qu’est-ce que je rate ? (Android 16 et 17, Chrome)

4 « J'aime »

Cela m’arrive de temps en temps. Impossible de surligner du texte. Je pense que ça fonctionne pour le moment

1 « J'aime »

Je suppose que les solutions suivantes ne vous aident pas ?

  1. Recharger
  2. Essayer de réagir à un message jusqu’à ce que la fenêtre des réactions s’affiche, puis essayer de surligner du texte
4 « J'aime »

Wow. Ça règle le problème ! Mais bon sang… C’est le contournement le plus bizarre que j’aie jamais vu ! Merci !

3 « J'aime »

Oui, ça m’est déjà arrivé, et cela a toujours réussi à résoudre le problème.

Je me demande si cela est lié à un localStorage obsolète. Très intéressant.

Hm. J’ai toujours pensé que cela avait un lien avec les états. Comme si forcer l’affichage de la fenêtre contextuelle des réactions réactivait l’état de survol. Mais ce n’est que de la spéculation.

Ça vient de se reproduire.

Et la solution de contournement a encore fonctionné.

Je vais classer cela comme Contribute > Bug

1 « J'aime »

Diagnostic AI (GPT 5.6 Sol Ultra) dans Codex (si utile) :

Trouvé : Discourse Reactions laisse fuiter un état global de « sélection de texte désactivée ».

  • L’événement touchstart de la réaction ajoute discourse-reactions-no-select à <html> dans plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:222.
  • Cette classe applique user-select: none et désactive le menu contextuel au long appui de WebKit pour l’ensemble du document dans plugins/discourse-reactions/assets/stylesheets/common/discourse-reactions.scss:1.
  • Si un défilement vertical commence au-dessus du bouton de réaction, plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:249 invalide le geste sans supprimer la classe.
  • plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:257 retourne ensuite prématurément, laissant la classe en place indéfiniment.
  • Il n’y a également aucun nettoyage lors d’un touchcancel ou de la destruction du composant.

La seule suppression se trouve dans plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:690. Cela explique la solution de contournement signalée (The popup menu for quoting text is unresponsive on Android) : ouvrir et fermer la fenêtre contextuelle des réactions appelle collapseAllPanels(), ce qui rétablit la sélection.

La barre d’outils de citation elle-même est en aval : elle écoute selectionchange et nécessite une sélection réelle du navigateur dans frontend/discourse/app/components/post-text-selection.gjs:58. Avec user-select: none global, Android ne crée jamais cette sélection.

L’historique confirme cette famille de bugs : une correction de défilement de 2023 (FIX: prevents triggering a reaction while scrolling (#224) · discourse/discourse-reactions@d1970cf · GitHub) a introduit le retour prématuré en cas de toucher invalide, et une correction partielle de 2024 (FIX: couldn't select text after dismissing a reaction (#296) · discourse/discourse-reactions@c6710ef · GitHub) a déplacé le nettoyage vers l’effondrement du panneau mais a laissé les chemins de défilement/annulation non couverts.

La correction devrait effacer la classe à chaque cycle de vie de toucher terminé, rejeté, annulé ou détruit, avec des tests de régression pour touchstart → touchmove → touchend et touchcancel.

3 « J'aime »

Ce bug me chiffonnait depuis quelque temps, content que tu aies trouvé une solution :+1:

3 « J'aime »

@davidb pour votre attention

1 « J'aime »

Salut @merefield, j’essaie de voir si cela est lié à l’autre correctif que j’avais publié il y a quelques semaines. Il aurait dû être isolé à iOS, donc je suis curieux de savoir : depuis combien de temps est-ce le cas ? Est-ce quelques semaines ou plus ?

1 « J'aime »

Bon sang, désolé, je ne me souviens pas exactement, mais mon intuition me dit au moins quelques semaines, bien que je ne sois pas tout à fait sûr.

Je suis assez certain que c’était un problème sous Android 16, donc avant le déploiement des Pixel.

En tout cas, bien sûr, cela ne concerne peut-être pas uniquement Android…

1 « J'aime »

Pas de souci, je vais faire quelques tests en local sans les modifications et voir si c’est ma correction iOS qui a causé ça. Si c’est le cas, le correctif que j’ai publié aujourd’hui pourrait aider, mais je vais d’abord vérifier.

2 « J'aime »

Merci d’y avoir jeté un coup d’œil !

1 « J'aime »

Je rencontre ce problème sur Chrome pour Android depuis plusieurs mois sur un site web, je pense. (Bien que je n’aie pas tenu un suivi précis, jusqu’à ce qu’un deuxième site que j’utilise mette à jour il y a deux jours.)

2 « J'aime »