SmartSel plugin
- Author
- Message
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Можно попробовать блокировать работу NoSelEOL, если показан диалог Поиска или Замены. Но тогда NoSelEOL не будет работать и в том случае, когда мы работаем в окне редактирования, а неактивный диалог поиска/замены просто висит на экране.
(добавлено позднее) Появилась ещё идея использовать GetFocus() - если во время изменения выделения фокус ввода не на окне редактирования, значит, выделение меняется извне (например, из диалогов поиска/замены).
(добавлено позднее) Появилась ещё идея использовать GetFocus() - если во время изменения выделения фокус ввода не на окне редактирования, значит, выделение меняется извне (например, из диалогов поиска/замены).
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
DV
Ну как минимум на время обработки Акелом сообщений AKD_TEXTFIND, AKD_TEXTREPLACE нужно приостановится - программные(со скриптов и с плагинов) поиск/замена хотя бы будут работать.
Насчет замены через GUI - не повезло. Akel выполняет замену внутренними функция напрямую(Edit.cpp ReplaceText) минуя эти сообщения. И других специфических, на которые можно было бы среагировать, не использует.
Сообщение AEM_TEXTFIND тоже активно пользуется в поиске(и в пошаговой замене), можно вокруг него поплясать.
Ещё один способ привязаться в голову пришел: WM_SETREDRAW FALSE используется только автоматическими алгоритмами, которые манипулируют текстом. Поиск/замена тоже сюда входят. Всё что делается пользователем вручную(мышь, клавиатура) WM_SETREDRAW не использует. Можно попытаться отключатся между парой WM_SETREDRAW FALSE - WM_SETREDRAW TRUE.
Ну как минимум на время обработки Акелом сообщений AKD_TEXTFIND, AKD_TEXTREPLACE нужно приостановится - программные(со скриптов и с плагинов) поиск/замена хотя бы будут работать.
Насчет замены через GUI - не повезло. Akel выполняет замену внутренними функция напрямую(Edit.cpp ReplaceText) минуя эти сообщения. И других специфических, на которые можно было бы среагировать, не использует.
Сообщение AEM_TEXTFIND тоже активно пользуется в поиске(и в пошаговой замене), можно вокруг него поплясать.
Ещё один способ привязаться в голову пришел: WM_SETREDRAW FALSE используется только автоматическими алгоритмами, которые манипулируют текстом. Поиск/замена тоже сюда входят. Всё что делается пользователем вручную(мышь, клавиатура) WM_SETREDRAW не использует. Можно попытаться отключатся между парой WM_SETREDRAW FALSE - WM_SETREDRAW TRUE.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
DV
Сегодня пришло письмо, в котором человек указывал на то, что не работает Ctrl+Shift+Del - выделяется только строка.
Если назначение SmartSel::NoSelEOL только в том, чтобы не выделять строку при тройном клике, а также выделении строки нажатием на границу слева, то почему не использовать AEN_SELCHANGED и AESCT_MOUSETRIPLECLK, AESCT_MOUSELEFTMARGIN?
Сегодня пришло письмо, в котором человек указывал на то, что не работает Ctrl+Shift+Del - выделяется только строка.
Если назначение SmartSel::NoSelEOL только в том, чтобы не выделять строку при тройном клике, а также выделении строки нажатием на границу слева, то почему не использовать AEN_SELCHANGED и AESCT_MOUSETRIPLECLK, AESCT_MOUSELEFTMARGIN?
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
А что он должен делать? Я вообще не вижу никакой реакции после нажатия...Instructor wrote:не работает Ctrl+Shift+Del - выделяется только строка.
Изначальное назначение NoSelEOL было в том, чтобы при выделении всей строки (Shift+End или клик левее начала строки) в RichEdit не выделялся завершающий символ переноса строки.
Однако в AkelEdit это уже не столь актуально, поскольку здесь Shift+End не выделяет символ переноса строки, в отличие от RichEdit. Более того, если в AkelEdit тянуть мышку с зажатой левой кнопкой (режим выделения) за конец строки, символ переноса строки при этом так же не выделяется - в отличие от RichEdit. А именно с подобным поведением RichEdit боролся NoSelEOL.
Собственно говоря, не знаю, чего народ ожидает от NoSelEOL сейчас, поскольку поведение AkelEdit меня вполне устраивает
Наверное, потому, что, когда разрабатывался NoSelEOL, таких вещей ещё не былоInstructor wrote:почему не использовать AEN_SELCHANGED и AESCT_MOUSETRIPLECLK, AESCT_MOUSELEFTMARGIN?
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Народ ожидает, чтобы при выделении строки тройным кликом по ней, а также с помощью нажатия на область слева от текста курсор бы не мигал на следующей строкеDV wrote:Собственно говоря, не знаю, чего народ ожидает от NoSelEOL сейчас, поскольку поведение AkelEdit меня вполне устраивает
Если это было бы реализовано, то дальше надо посмотреть (как скрипты и плагины работают с выделением), возможно этот функционал сейчас и был бы избыточным.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Постараюсь глянуть. Исходя из предыдущего комментария от Instructor, наверное, проще будет сначала сделать новую ф-цию NoSelEOL2, перехватывающую лишь указанные выше сообщения и флаги, - с тем, чтобы впоследствии вообще убрать старую реализацию NoSelEOL.VladSh wrote:при выделении строки тройным кликом по ней, а также с помощью нажатия на область слева от текста курсор бы не мигал на следующей строке
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Я думаю, раз сам AkelEdit поддерживает выделение с захватом и без захвата символа переноса строки (при выделении Shift+End и мышью), то по хорошему было бы чтобы и выделение предложения без захвата символа переноса строки поддерживалось контролом или прогой, а то получается, что часть делает контрол, а часть плагин...DV wrote:Исходя из предыдущего комментария от Instructor, наверное, проще будет сначала сделать новую ф-цию NoSelEOL2
Но если такое не будет реализовано в проге, то, естественно, обновлённый NoSelEOL очень нужен!
Добавлено: да, и при новом NoSelEOL надо будет вручную обрабатывать ситуации захвата переноса строки - всегда будет возможно 2 варианта, а при NoSelEOL всегда был 1 - без захвата. Поэтому надо будет переписывать скрипты, т.к. многие, в случае захвата перевода строки, могут начать работать некорректно. Всё-таки проще, когда обрабатываешь 1 вариант.
Last edited by VladSh on Tue Jul 19, 2011 12:02 pm, edited 1 time in total.
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact: