Защитите диапазон текста в ScintillaNet: как лучше всего это сделать?

Я знаю, что у стилей есть атрибут, позволяющий/избегающий изменения текста, к которому они применяются:

SCI_STYLESETCHANGEABLE(целочисленный стиль, логическое значение, изменяемое)

Однако в документации указано, что это экспериментальный и не полностью реализованный атрибут стиля, что, по-видимому, не готово к работе.

Я думаю, что есть другая альтернатива, использующая Индикаторы:

Чтобы защитить диапазон текста, мы могли бы применить к нему специальный индикатор и в событии нажатия клавиши определить del & backspace. Если символ, который следует за текущей позицией (позиция каретки) в случае del или предшествующий текущей позиции в регистре backspace, имеет этот индикатор, то мы должны отменить событие и не стирать текст.

Какой из этих двух вариантов лучше? Есть другой лучший способ?

Примечание. ScintillaNet основан на Scintilla, и я предполагаю, что обширная документация последней действительна для обоих.


person Ignotus    schedule 27.12.2018    source источник


Ответы (1)


Делюсь с вами одним из ответов в гугл-группах "scintilla-interest", которые опубликовали Нила Ходжсона, создателя Scintilla.

[Ian G.]> SCI_STYLESETCHANGEABLE — это то, что я пробовал изначально, прежде чем прибегнуть к написанию этого патча. Единственный реальный недостаток, который я вижу, заключается в том, что в случаях, подобных моему, количество необходимых стилей удваивается, потому что каждый визуальный стиль, который может встречаться в доступной для записи области, также может встречаться в защищенной области, но я мог бы с этим смириться.

[Neil Hodgson] Было бы лучше использовать индикатор для охраняемых территорий, так как они относительно эффективны по пространству и позволяют избежать удвоения количества стилей.

заполнить сообщение в scintilla-interest

person Ignotus    schedule 13.01.2019