Il menu a comparsa per citare il testo non risponde su Android

Diagnosi AI (GPT 5.6 Sol Ultra) in Codex (se utile):

L’ho trovato: Discourse Reactions lascia trapelare uno stato globale di “nessuna selezione del testo”.

  • Il touchstart della reazione aggiunge discourse-reactions-no-select a in plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:222.
  • Questa classe applica user-select: none e disabilita il menu contestuale a lungo tocco di WebKit per l’intero documento in plugins/discourse-reactions/assets/stylesheets/common/discourse-reactions.scss:1.
  • Se uno scorrimento verticale inizia sopra il pulsante di reazione, plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:249 invalida il gesto senza rimuovere la classe.
  • plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:257 poi torna precocemente, lasciando la classe indefinitamente.
  • Non c’è nemmeno una pulizia per touchcancel o distruzione del componente.

L’unica rimozione è in plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:690. Questo spiega la soluzione alternativa segnalata (The popup menu for quoting text is unresponsive on Android): aprire e chiudere il popup delle reazioni chiama collapseAllPanels(), ripristinando la selezione.

La barra degli strumenti delle citazioni è a valle: ascolta selectionchange e richiede una reale selezione del browser in frontend/discourse/app/components/post-text-selection.gjs:58. Con user-select: none globale, Android non crea mai quella selezione.

La storia conferma questa famiglia di bug: una correzione dello scorrimento del 2023 (FIX: prevents triggering a reaction while scrolling (#224) · discourse/discourse-reactions@d1970cf · GitHub) ha introdotto il ritorno precoce per touch invalido, e una correzione parziale del 2024 (FIX: couldn't select text after dismissing a reaction (#296) · discourse/discourse-reactions@c6710ef · GitHub) ha spostato la pulizia al collasso del pannello ma ha lasciato scoperti i percorsi di scorrimento/cancellazione.

La correzione dovrebbe cancellare la classe in ogni ciclo di vita del touch completato, rifiutato, cancellato o distrutto, con test di regressione per touchstart → touchmove → touchend e touchcancel.

3 Mi Piace