xintrea / mytetra_dev

MyTetra - smart crossplatform manager for information collecting / MyTetra - кроссплатформенный менеджер накопления информации / Официальная страница:
http://webhamster.ru/site/page/index/articles/projectcode/105
254 stars 55 forks source link

Сделана вставка горизонтальной линии в "пустой" абзац, где расположен курсор (пустой абзац заменяется горизонтальной линией). #92

Closed DikBSD closed 5 years ago

DikBSD commented 5 years ago

Сделана вставка горизонтальной линии в "пустой" абзац, где расположен курсор (пустой абзац заменяется горизонтальной линией). Если в тексте есть выделение, или же курсор находится в тексте, то вставка горизонтальной линии не производится. То есть, чтобы вставить горизонтальную линию, надо установить курсор либо в "пустой" абзац , либо - в абзац - "мягкий перенос" (<br/>).

xintrea commented 5 years ago

То есть, в редакторе сделана кнопка для вставки горизонтальной линии, я правильно понял?

DikBSD commented 5 years ago

Сделана и кнопка, и сама вставка горизонтальной линии. Написан код, создающий кнопку, экшен для него. Написан код, внедряющий новую кнопку в конфиг get_parameter_table_14(). Написан код для shortcutManager. Написан код вставки горизонтальной линии в позицию курсора, учитывающий наличие "мягкого переноса" слева от места вставки, и заменящий этотмягкий перенос, если он есть, на простой абзац. Иначе вставка горизонтальной линии будет некорректной.

xintrea commented 5 years ago

Вадим, я принял этот Pull-реквест, но обращаю внимание, что:

Требуется доработка, так как обнаружено, что при нажатии Enter на строке с линией, появляется новая строка с линией, а не пустая строка.

DikBSD commented 5 years ago

Скорее всего здесь требуется доработка не в самой вставке горизонтальной линии, а в обработчике EditorTextArea::keyPressEvent(QKeyEvent *event), потому что за результат нажатия Enter на каком-то абзаце отвечает QTextEdit.

По-видимому, по Enter QTextEdit ген6ерирует абзац со свойствами (но не содержимым) абзаца, на котором стоит курсор.:

Поэтому, скорее всего, QTextEdit берет свойства курсорного абзаца для генерации нового пустого абзаца по нажатию Enter. А на абзаце <hr> нет свойств. Возможно, он поэтому и копирует <hr>.

Попробую доработать именно этот обработчик EditorTextArea::keyPressEvent, чтобы отлавливать в нем нажатие Enter и генерировать вставляемый "пустой" абзац, который будет отличаться от того, на котором стоит курсор (в данном случае - <hr>), а - чистый "пустой" абзац.