Mudlet: Копирование / вставка основного текстового окна перестает работать

Созданный на 22 дек. 2019  ·  24Комментарии  ·  Источник: Mudlet/Mudlet

Краткое описание проблемы / Описание запрошенной функции:

Mudlet 4.4.0 вместо сбоя теперь копировать / вставить просто иногда не работает

  • Я не уверен, что именно заставляет это начинать, но кажется, что в какой-то момент копирование / вставка просто перестает работать. cmd-c или копировать правой кнопкой мыши, оба не будут работать. копировать как html работает tho. что интересно.

это невероятно расстраивает.

bug high

Самый полезный комментарий

@ njs50 @Ranfir Я

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

Затем нажмите свой псевдоним, чтобы отправить 1000 строк спама в ваш профиль. Один удар, и вы сможете снова скопировать и вставить! Я попробовал использовать псевдоним из 100 строк, и этого было недостаточно, но 1000 строк помогли.

Все 24 Комментарий

У меня возникла эта проблема в Windows 10. Она периодически прекращает работу, а затем начинает работать через несколько минут. Непонятно, как воспроизводить постоянно, но это случается достаточно часто, чтобы стать серьезной неприятностью.

Я все еще вижу эту проблему в версии 4.5.1-de.

это невероятно расстраивает.

Я не могу больше с этим согласиться.

Подтверждено, что эта проблема все еще возникает в 4.6.2 на OSX. Это странно, потому что это тоже профильная. Один профиль сможет копировать и вставлять, в то время как другой одновременно открытый профиль не может копировать и вставлять.

Это сложно исправить, потому что можно открыть Mudlet, и он работает нормально, так как же тогда найти проблему? Способ воспроизвести проблему мог бы продвинуть это кучей

fwiw, когда он сломан, копия как html все еще работает. возможно, это поможет сузить круг вопросов.

Я также думаю, что это началось примерно во время слияния этого PR: https://github.com/Mudlet/Mudlet/pull/3241 он исправил сбой, но затем вместо сбоя копирование / вставка перестает работать, так что, возможно, что-то было не совсем прямо там...

Хм, мы можем проверить эту теорию, попробуйте тестовую сборку на https://github.com/Mudlet/Mudlet/pull/3688. Запустите Mudlet из терминала - так что в macOS он находится внутри .app / Contents. Он напечатает сообщение, если чек не соответствует.

Заметил подобную брешь на Win10 несколько дней назад.

Попробуйте тестовую сборку, запустите mudlet.exe и посмотрите, не появится ли что-нибудь в терминале, когда проблема появится снова.

Что ж, в настоящее время я уже работаю и пробую следующую версию-кандидат на выпуск, так что сделаю это позже. Во всяком случае, раньше это случалось только один раз (так что я заметил), и на тот момент я довольно долго запускал Mudlet. Не знаю, как воспроизвести.

@ njs50 @Ranfir Я

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

Затем нажмите свой псевдоним, чтобы отправить 1000 строк спама в ваш профиль. Один удар, и вы сможете снова скопировать и вставить! Я попробовал использовать псевдоним из 100 строк, и этого было недостаточно, но 1000 строк помогли.

Для меня ошибка больше не возникала в последние недели, но у нас был случайный игрок в Discord, который сообщал о подобном. Казалось, что они довольны описанным выше обходным путем, так что это может помочь триангулировать ошибку.

В любом случае, вместо того, чтобы каждый помещал 1000 строк спама в свой псевдоним, вы можете использовать цикл lua :

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

Можно даже поэкспериментировать с количеством повторений, может, это поможет еще больше? В настоящее время 100 кажется немногим, а 1000 кажется достаточно. Не уверен, почему и где именно это меняется.

: Bulb: Гм, IIRC детали текущего выбора хранятся в двух QPoint s TConsole::P_begin & P_end - однако, когда (void) TBuffer::shrinkBuffer() начинает обрезать самые старые (самые низкие номера строк) от начала TBuffer (std::deque<std::deque<TChar>>) buffer и (QStringList) lineBuffer и одного или двух других контейнеров с одним элементом на строку: какие шаги предпринимаются для настройки y значений P_begin и P_end : question:

Я заметил это только после того, как буфер стал достаточно длинным, чтобы сжаться. Кроме того, когда это происходит, кажется, что из-за этого подсветка в верхнем и нижнем буфере (когда вы прокручиваете вверх в консоли) перестает синхронизироваться друг с другом. Выбор сверху и снизу, кажется, помогает снова заработать функции копирования, но я не могу сказать, что это полностью согласовано, потому что это происходит не так часто, чтобы тестировать надежно.

кажется действительно странным, что «копия как html» продолжает работать, когда обычная копия перестает работать. что, кажется, указывает на то, что проблема не в выборе, а в чем-то, что есть в выборе?

Думаю, они оба используют разные алгоритмы. Это означает, что при простом копировании можно было бы изучить пару трюков из копии в html.

копировать как изображение также по-прежнему копирует выделение правильно, а также iirc

Есть ли способ проделать трюк с эхом, не заполнив буфер 1000 строками мусора? Я хотел бы попытаться найти обходной путь, который не включает уничтожение совершенно хорошей игровой сессии, которую я также регистрирую.

ClearWindow работает?

похоже, это сработало для меня. я не знаю, было ли это совпадением. Подозрительно похоже, что копирование / вставка будет продолжать работать до тех пор, пока материал не начнет вытесняться с конца моей прокрутки.

я просто повторил это снова. Копирование / вставка выглядело хорошо после выполнения clearWindow (), пока буфер не был заполнен. как только он был заполнен, когда я скопировал какой-то текст, который пролетал мимо, он вышел из строя и перестал работать. clearWindow снова исправил это.

Я также заполнил свой игровой буфер, пока линии не начали исчезать наверху.
В то время копирование / вставка все еще работало нормально, как и ожидалось.
Как именно вы заполняете свой буфер?

Я попытался уменьшить число пакетных удалений для моего размера буфера консоли до 10, и хотя это вызывает побочный эффект в виде странного отображения текста, когда происходит пакетное удаление, похоже, что это ускоряет процесс исправления проблемы с копированием.

Я также заполнил свой игровой буфер, пока линии не начали исчезать наверху.
В то время копирование / вставка все еще работало нормально, как и ожидалось.
Как именно вы заполняете свой буфер?

Я тестировал это с запущенной игрой в то время. Я заполнил большую его часть, просматривая кучу заметок на доске, и когда я заметил, что текст снова удаляется из верхней части буфера, я сделал новый выбор.

Определенно текст приходил все время, которое я копировал.

Я также определенно был в прокрутке назад, когда копировал. т.е. я перетащил выделение достаточно далеко, чтобы выйти за пределы текущей страницы текста.

Используя Ctrl-C (Копировать) из контекстного меню:

  • (void) TTextEdit::slot_copySelectionToClipboard()
  • (QString) TTextEdit::getSelectedText(char newlineChar) - который использует текущие значения в (QPoint) TTextEdit::mPA & mpB и помещает текст в QApplication::clipboard()

Используя Копировать как HTML из контекстного меню:

  • (void) TTextEdit::slot_copySelectionToClipboardHTML() - использует (QPoint) TTextEdit::mDragStart и mDragSelectionEnd для SET TTextEdit::mPA & mpB мере необходимости, а затем немедленно использует последнее для копирования данных TBuffer в сгенерированный HTML.

Возможно, стоит поэкспериментировать с копированием процесса отбора от второго к первому ....

Была ли эта страница полезной?
0 / 5 - 0 рейтинги