Mudlet: Le copier/coller de la fenêtre de texte principale ne fonctionne plus

Créé le 22 déc. 2019  ·  24Commentaires  ·  Source: Mudlet/Mudlet

Bref résumé du problème / Description de la fonctionnalité demandée :

Mudlet 4.4.0 au lieu de planter maintenant, copier/coller ne fonctionne tout simplement pas parfois

  • Je ne sais pas exactement ce qui provoque le démarrage, mais j'ai l'impression qu'à un moment donné, le copier/coller va simplement refuser de fonctionner. cmd-c ou copier par clic droit, les deux ne fonctionneront pas. copier comme html fonctionne tho. ce qui est intéressant.

c'est incroyablement frustrant.

bug high

Commentaire le plus utile

@njs50 @Ranfir J'ai découvert un moyen de résoudre ce problème sans avoir à redémarrer votre profil. Faites un alias avec ceci :

echo("\nJust fill up the line with random gibberish!")
echo("\nJust fill up the line with random gibberish!")
echo("\nJust fill up the line with random gibberish!")
---etc, up to 1000 lines of the above echo

Ensuite, appuyez sur votre alias pour envoyer les 1000 lignes de spam à votre profil. Un coup et vous devriez pouvoir copier et coller à nouveau ! J'ai essayé avec un alias de 100 lignes et ce n'était pas suffisant, mais 1000 lignes ont fait l'affaire.

Tous les 24 commentaires

Je rencontre ce problème sous Windows 10. Il cessera de fonctionner sporadiquement, puis commencera à fonctionner quelques minutes plus tard. On ne sait pas comment se reproduire de manière cohérente, mais cela arrive assez fréquemment pour être une nuisance majeure.

Je vois toujours ce problème sous 4.5.1-de.

c'est incroyablement frustrant.

Je ne peux pas être plus d'accord avec ça.

Confirmé que ce problème se produit toujours dans 4.6.2 sur OSX. C'est étrange parce qu'il est également spécifique au profil. Un profil pourra copier et coller tandis qu'un autre profil ouvert simultanément ne pourra pas copier et coller.

Il est difficile de résoudre ce problème car on peut ouvrir Mudlet et cela fonctionne bien, alors comment trouver le problème ? Un moyen de reproduire le problème ferait avancer cela par tas

fwiw, quand il est cassé, la copie en html fonctionne toujours. peut-être que cela pourrait aider à cerner où se trouve le problème.

Je pense aussi que cela a commencé à l'époque de la fusion de ce PR : https://github.com/Mudlet/Mudlet/pull/3241 cela a corrigé le plantage, mais au lieu de planter, le copier/coller cesse de fonctionner, alors peut-être que quelque chose n'allait pas tout à fait juste là...

Hmm, nous pouvons tester cette théorie, essayez la version de test dans https://github.com/Mudlet/Mudlet/pull/3688. Exécutez Mudlet à partir du terminal - donc dans macOS, il se trouve dans le fichier .app/Contents. Il imprimera un message lorsque le chèque ne correspond pas.

Défaut similaire remarqué sur Win10 il y a quelques jours.

Essayez la version de test, exécutez mudlet.exe et voyez si quelque chose apparaît dans le terminal lorsque le problème réapparaît.

Eh bien, actuellement, je suis déjà en train d'exécuter et d'essayer la prochaine version candidate, donc je le ferai plus tard. Quoi qu'il en soit, cela ne s'est produit qu'une fois auparavant (donc je l'ai remarqué), et j'ai couru Mudlet pendant un bon moment à ce moment-là. Je ne sais pas comment répliquer.

@njs50 @Ranfir J'ai découvert un moyen de résoudre ce problème sans avoir à redémarrer votre profil. Faites un alias avec ceci :

echo("\nJust fill up the line with random gibberish!")
echo("\nJust fill up the line with random gibberish!")
echo("\nJust fill up the line with random gibberish!")
---etc, up to 1000 lines of the above echo

Ensuite, appuyez sur votre alias pour envoyer les 1000 lignes de spam à votre profil. Un coup et vous devriez pouvoir copier et coller à nouveau ! J'ai essayé avec un alias de 100 lignes et ce n'était pas suffisant, mais 1000 lignes ont fait l'affaire.

Pour moi, le bug ne s'est plus produit ces dernières semaines, mais nous avons eu un joueur occasionnel de Discord qui a signalé la même chose. Ils semblaient satisfaits de la solution de contournement ci-dessus, cela peut donc aider à trianguler le bogue.

Dans tous les cas, au lieu que tout le monde mette 1000 lignes de spam dans son alias, vous pouvez utiliser une boucle lua :

 local repetitions = 1000
 local i = 1
 repeat
  echo("\nJust fill up the line with random gibberish!")
  i = i + 1
 until i > repetitions 

Vous pouvez même expérimenter avec le nombre de répétitions, peut-être que cela vous aidera encore plus ? Actuellement 100 semble peu, et 1000 semble suffisant. Je ne sais pas pourquoi et où cela change exactement.

:bulb: Um, IIRC les détails de la sélection actuelle sont stockés dans deux QPoint s TConsole::P_begin & P_end - cependant quand (void) TBuffer::shrinkBuffer() intervient pour couper le le plus ancien (numéros de ligne les plus bas) depuis le début des TBuffer de (std::deque<std::deque<TChar>>) buffer et (QStringList) lineBuffer et un ou deux autres conteneurs à un élément par ligne : quelles mesures sont prises pour ajuster les valeurs y de P_begin et P_end :question:

Je n'ai remarqué que cela se produisait qu'après que le tampon ait pris suffisamment de temps pour rétrécir. De plus, lorsque cela se produit, il semble que la surbrillance dans les tampons supérieur et inférieur (lorsque vous avez fait défiler la console vers le haut) ne se synchronise pas. Faire des sélections en haut et en bas semble aider à faire fonctionner à nouveau la fonctionnalité de copie, mais je ne peux pas dire que c'est tout à fait cohérent car cela n'arrive pas assez souvent pour être testé de manière fiable.

il semble vraiment étrange que la "copie au format html" continue de fonctionner lorsque la copie normale cesse de fonctionner. cela semble indiquer peut-être que la sélection n'est pas le problème mais quelque chose qui est dans la sélection ?

Les deux utilisent des algorithmes différents, je pense. Ce qui indique que le simple copieur pourrait apprendre une ou deux astuces de la copie au HTML.

copier en tant qu'image copie toujours correctement la sélection iirc

Existe-t-il un moyen de faire le tour de l'écho sans remplir mon tampon de 1000 lignes de déchets ? Je voudrais essayer d'obtenir une solution de contournement qui n'inclut pas la destruction d'une session de jeu parfaitement bonne que j'enregistre également.

clearWindow fonctionne-t-il ?

on dirait que ça vient de fonctionner pour moi. Je ne sais pas si c'était une coïncidence. Il semble étrangement que le copier/coller va continuer à fonctionner jusqu'à ce que les choses commencent à être expulsées de la fin de mon défilement

je viens de le répéter. copier/coller semblait bon après avoir fait clearWindow() jusqu'à ce que le tampon soit plein. dès qu'il était plein lorsque j'ai copié du texte qui survolait, il a échoué et a cessé de fonctionner. clearWindow l'a à nouveau corrigé.

J'ai également rempli ma mémoire tampon de jeu jusqu'à ce que les lignes commencent à disparaître en haut.
À ce moment-là, le copier/coller fonctionnait toujours correctement, comme prévu.
Comment remplissez-vous votre tampon exactement?

J'ai essayé de réduire le nombre de suppressions par lots pour la taille de la mémoire tampon de ma console à 10, et bien que cela provoque l'effet secondaire d'un affichage de texte étrange lorsque la suppression par lots se produit, cela semble accélérer le processus de résolution du problème de copie.

J'ai également rempli ma mémoire tampon de jeu jusqu'à ce que les lignes commencent à disparaître en haut.
À ce moment-là, le copier/coller fonctionnait toujours correctement, comme prévu.
Comment remplissez-vous votre tampon exactement?

Je le testais avec un jeu en cours à l'époque. J'en ai rempli la majeure partie en parcourant un tas de notes sur un bloc-notes et quand j'ai remarqué que le texte était à nouveau supprimé du haut du tampon, j'ai fait une nouvelle sélection.

Il y avait certainement du texte à venir pendant tout le temps que je choisissais de copier.

J'étais aussi définitivement dans le défilement quand je copiais. c'est-à-dire que j'avais fait glisser la sélection assez loin pour sortir de la page de texte actuelle.

En utilisant Ctrl-C (Copier) dans le menu contextuel :

  • (void) TTextEdit::slot_copySelectionToClipboard()
  • (QString) TTextEdit::getSelectedText(char newlineChar) - qui utilise les valeurs actuelles dans (QPoint) TTextEdit::mPA & mpB et met le texte dans le QApplication::clipboard()

Utilisation de Copier au format HTML dans le menu contextuel :

  • (void) TTextEdit::slot_copySelectionToClipboardHTML() - utilise (QPoint) TTextEdit::mDragStart et mDragSelectionEnd pour SET TTextEdit::mPA & mpB comme il convient, puis utilise immédiatement ce dernier pour copier les données du TBuffer dans le code HTML généré.

Cela vaut peut-être la peine d'expérimenter en copiant le processus de sélection de ce dernier vers le premier...

Cette page vous a été utile?
0 / 5 - 0 notes