| View previous topic :: View next topic |
| Author |
Message |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Mon Sep 07, 2009 7:28 am Post subject: |
|
|
| Совершенно верно, потому что каретка уже находится в конце строки, так как окончание выделения соответствует последнему символу в строке. А раз так, то нужно сменить позицию каретку на противоположную - из конца строки на последний непробельный символ. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Mon Sep 07, 2009 8:15 am Post subject: |
|
|
| По алгоритму понятно) А вот с логикой.. текст выделен с конца (с пробелами), а каретка (курсор) ведь находится на тексте. Может если есть выделение, то перебрасывать курсор в конец строки? Это было бы логично - курсор просто подсознательно ожидается в конце строки, независимо от наличия выделения. |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Mon Sep 07, 2009 10:24 am Post subject: |
|
|
Для altSmartEnd должно прыгать в конец строки, без него - на последний непробельный символ.
Пробуем:
http://www.megaupload.com/?d=B8EO45J0 |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Mon Sep 07, 2009 1:40 pm Post subject: |
|
|
Тестирую ("тэщу", как у нас говорила одна девушка ) для altSmartEnd, т.к. только с ним пользуюсь.
Работает! Боков пока не наблюдаю  |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Wed Sep 16, 2009 7:52 am Post subject: |
|
|
v.1.9
- исправлено: иногда каретка исчезала при активной NoSelEOL::Main (например, после сохранения файла с помощью кнопки на Toolbar или через диалог сохранения) |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Mon Nov 02, 2009 11:31 am Post subject: |
|
|
DV
Заметил небольшую багофичу: некорректно работает удаление текущей строки по горячим клавишам Ctrl+Y или F8 - удаляется содержимое строки, а не сама строка целиком.
Можно ли это как-то поправить?
Причём желательно было бы ставить обработчик не на указанные комбинации клавиш (они могут измениться), а на вызов команды удаления строки, т.е. чтобы в этом случае NoSelEOL::Main не отрабатывал. |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Tue Nov 03, 2009 12:04 pm Post subject: |
|
|
| VladSh wrote: | | Ctrl+Y или F8 - удаляется содержимое строки, а не сама строка целиком. |
Внутренняя реализация Ctrl+Y (в самом AkelPad) работает в два этапа:
1. Выделяет строку, включая последний символ переноса строки
2. Удаляет выделение.
NoSelEOL работает так: при изменении выделения исключает последний символ переноса строки из выделенного текста. Это конфликтует с внутренней реализацией Ctrl+Y (с первым этапом). |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Tue Nov 03, 2009 12:16 pm Post subject: |
|
|
| А ещё до выделения мы не знаем, для чего будет производиться выделение? Т.е. нам неизвестен номер вызываемой команды до выделения? |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Tue Nov 03, 2009 2:03 pm Post subject: |
|
|
| VladSh wrote: | | А ещё до выделения мы не знаем, для чего будет производиться выделение? |
В этом что-то есть. |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Thu Nov 05, 2009 12:28 pm Post subject: |
|
|
v.2.0
- исправлено: Ctrl+Y не удалял всю строку |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2507 Location: Киев, Русь
|
Posted: Wed Feb 24, 2010 3:49 pm Post subject: |
|
|
Проблемка обнаружилась...
Позже из почты:
| Shengalts Aleksander wrote: | | Vlad Sh wrote: | | Shengalts Aleksander wrote: | | Нормально заменяется, закладки не смещаются. Попробуйте поотключать остальные плагины. | Поочерёдно отключал, но ничего не изменилось - закладки всё равно сносит..
Настройки у меня хранятся в ini. | Проблема в NoSelEOL::Main. |
|
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Wed Feb 24, 2010 4:51 pm Post subject: |
|
|
| VladSh wrote: | | Проблемка обнаружилась... |
Формально это не вина NoSelEOL.
При нажатии на кнопку "Заменить все" AkelPad зачем-то устанавливает диапазон выделения текста от 0 до позиции за последним символом. NoSelEOL это честно перехватывает и смещает правую границу выделения на последний символ.
Почему при этом закладка LineBoard съезжает вниз, мне непонятно.
Как непонятно и то, что и как фильтровать, чтобы этого не происходило.
Наверное, нужно игнорировать какие-то сообщения в определенный момент примерно так же, как это было сделано с IDM_NONMENU_DELLINE, но непонятно, какие и когда. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4638
|
Posted: Thu Feb 25, 2010 5:54 am Post subject: |
|
|
DV
| Quote: | | При нажатии на кнопку "Заменить все" AkelPad зачем-то устанавливает диапазон выделения текста от 0 до позиции за последним символом. | Наверное для того, чтобы заменить текст (чтобы заменить текст, его надо выделить)
Я бы предложил не производить никаких действий, если выделен весь текст. |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Thu Feb 25, 2010 3:44 pm Post subject: |
|
|
| Instructor wrote: | | Я бы предложил не производить никаких действий, если выделен весь текст. |
А как узнать, выделен ли весь текст? Насколько я помню, GetWindowTextLength() для RichEdit может вернуть неправильную длину всего текста. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4638
|
Posted: Fri Feb 26, 2010 9:35 am Post subject: |
|
|
DV
| Code: | | int nTextLen=SendMessage(pd->hMainWnd, AKD_GETTEXTLENGTH, (WPARAM)pd->hWndEdit, 0); |
Можно и так:
| Code: | GETTEXTLENGTHEX gtl;
int nTextLen;
gtl.flags=GTL_DEFAULT|GTL_PRECISE;
gtl.codepage=0;
nTextLen=SendMessage(pd->hWndEdit, EM_GETTEXTLENGTHEX, (WPARAM)>l, 0); |
И возможно даже не только, когда весь текст, но тогда, когда конец выделения находится в конце файла. |
|
| Back to top |
|
 |
|