Closed DikBSD closed 5 years ago
Коммит #91 нужно откатить перед применеием этого?
Нет, откат не нужен, иначе в других файлах исчезнут изменения коммита #91 , которых нет в этом Pull Request. Здесь я только подправил метод workingSoftCarryInSelection() в файле TypefaceFormatter.cpp. Так что все конфликты, если они будут (думаю, что их не должно быть), будут только в этом методе.
Накатил я и этот пулл реквест, все работает. Но есть проблема, когда идет два мягких переноса, и за ними делается выделение для форматирование в код. В одном случае срабатывает, в другом нет.
Вот видео: https://www.youtube.com/watch?v=hdQfRemdBHI
Там в середине я затупил, потому что не сделал отмену дважды: форматирование в код отменил, а преобразование из мягкого переноса в настоящий - нет. В любом случае вот текст видео:
----- 8< -----
Есть два одинаковых места, где расположены два мягких переноса подряд. Если выделить в певром месте текст после этих переносов, то он отформатируется в код. А если выделить во втором месте текст после двух мягких переносов, то он НЕ отформатируется в код.
Это происходит видимо из-за того, что второй текст обрамляется в span, а первый нет. А, блин, в первом тексте не откатился до двух мягких переносов... Щас покажу как было.
<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'monospace';">В результате, я получил следующие результаты:<br /><br />======== sample-nin/webpbn-00001.nin ========</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'monospace';">apsnono finished.</span><br /><br /><span style=" font-family:'monospace';">real 0m0,610s</span></p>
В общем, если после <br /><br />
идет сразу текст, то форматирование в код работает.
А если после <br /><br />
идет <span...>
- то не форматируется.
Я завтра на работе посиотрю.
Завтра доработаю регулярное выражение на считывание левого символа от выделения. Не учл, что после мягкого переноса может идти <span ...>.
И еще надо обернуть эти изменения - преобразование мягких переносов в обычные и форматирование в код в одно атомарное изменение. Где-то в коде я делал так, щас что-то не могу найти.
Это нужно чтобы отмена действия после нажатия "В код" откатывало состояние текста до момента до нажатия клавиши "В код", а то пользователь будет путаться, как я в видео запутался.
Хорошо. Если не ошибаюсь, это метод QTextCursor beginBlockEdit() и endBlockEdit().
Сергей, я вставил ваш код в свой тестовый файл. Все форматируется в код, в обоих случаях. Мне трудно увидеть, почему у нас получаются разные результаты форматирования. Не могли бы Вы прикрепить сюда html текст Вашего тестового файла из видео? Возможно там надо учитывать еще что-то, кроме <span ...>. Спасибо.
Сергей, я выслал новый Pull Request #102. В нем сделано атомарная обработка для форматирования в Code.
На всякий случай напишу и здесь, что написал в комментарии к новому Pull Request:
Сергей, пришлите мне, пожалуйста, тот html текст (полный), на котором форматирование в код не происходит. Я отскриншотил часть этого текста с Вашего видео на Ютуб, распознал скриншот в текст, поэкспериментировал на нем - все работает, все форматируется в код. По-видимому, нужная часть текста как раз и не попала в Ваш видео ролик - та, что идет сразу после проблемного места.
Исправлены замечания по Pool Request:
textArea->textCursor().removeSelectedText()
, который избыточен, так как вставка текста в html в выделенную курсором область (textArea->textCursor().insertText()
) просто заменяет эту область.