View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001938 | Far Manager | Plugins API.Editor | public | 2011-12-07 11:43 | 2012-04-19 20:47 |
Reporter | shmuel | Assigned To | 2useven10 | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x86 | OS | Windows | OS Version | XP SP3 |
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001938: После ECTL_DELETESTRING перестают работать блоки в редакторе | ||||
Description | Простая последовательность действий ведёт к неработоспособности блоков в редакторе. См. также в форуме: http://forum.farmanager.com/viewtopic.php?f=9&t=6654 | ||||
Steps To Reproduce | [ Фар любой из: 3.0.2286, 2.0.1807, 1.75.2634 ] Создаём в редакторе (или открываем существующий) файл из 5 строк, по одному символу в строке, например с содержимым "1\n2\n3\n4\n5\n". 1. От начала 3-й строки нажимаем ShiftRight 2. Вызываем из любого плагина EditorControl(-1, ECTL_DELETESTRING, 0, 0) 3. Нажимаем CtrlHome ShiftDown Down ShiftDown Видим, что в редакторе образовались 2 отдельных блока (собственно, их можно сделать и больше). Эти блоки, однако, не реагируют на CtrlU и другие блоковые операции. То-есть редактор находится в неконсистентном, ненормальном состоянии. Если между пунктами 1 и 2 передвинуть курсор вперёд или назад, то неисправность не воспроизводится. | ||||
Tags | No tags attached. | ||||
Build | 2559 | ||||
|
попробуйте с таким патчем: Index: editor.cpp =================================================================== --- editor.cpp (revision 6949) +++ editor.cpp (working copy) @@ -5398,7 +5398,10 @@ return FALSE; } - DeleteString(CurLine,NumLine,FALSE,NumLine); + //DeleteString(CurLine,NumLine,FALSE,NumLine); + Pasting++; + ProcessKey(KEY_CTRLY); + Pasting--; return TRUE; } case ECTL_DELETECHAR: |
|
Патч не помог, но если убрать Pasting++/--, т.е. добавлять только ProcessKey(KEY_CTRLY) - тогда ОК. |
|
build 2290 |
|
Работает, спасибо. |
|
господа, а как же ECTL_TURNOFFMARKINGBLOCK? |
|
... а если ближе к телу? |
|
было апи, которое сбрасывало признак выделения. сейчас есть апи и где-то фар сбрасывает, где-то нет. надо либо убрать апи и сбрасывать везде, либо вернуть как было. |
|
Читаю описание ECTL_TURNOFFMARKINGBLOCK и диву даюсь. Например, фраза "когда он начал выделять блок". Что означает "начал"? Или фраза "вы почти всегда должны использовать данную команды". Что означает "почти всегда" - 9 раз из 10? или каждый день, кроме пятницы? |
|
говорим об этом инце... добавлен сброс выделения если его больше нет после удаления строки: if ( !BlockStart ) Flags.Clear(FEDITOR_MARKINGBLOCK); что и было проблемой, т.к. в такой ситуации код UnmarkBlock(),UnmarkEmptyBlock() не работает. зачем нужно апи - не знаю, судя по документации ~ вызовите если непонятные проблемы. правка сбрасывет в конкретном месте - где проявилось. возможно лучше сбрасывать в DeleteString() или ещё лучше поправить Unmark... такую правку я готов сделать. если что-то ещё - я пас, апи знаю слишком плохо. |
|
разве этот инцидент не решался добавлением в плагин вызова EditorControl(-1,ECTL_TURNOFFMARKINGBLOCK,0,0)? |
|
Я проверил (в ходе данного обсуждения), - да инцидент решался добавлением данного вызова. IMHO, сейчас, в период слома API, самое время убрать это уродство. |
|
>надо либо ... принципиальных возражений нет (разве что заменить на 'было бы хорошо ...' :-) но к ревизии всего плагин-апи редактора я не готов, особенно сейчас - конец года. |
|
Resolved in Far 3.0.2559. |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-12-07 11:43 | shmuel | New Issue | |
2011-12-07 20:50 | 2useven10 | Note Added: 0008089 | |
2011-12-07 21:25 | shmuel | Note Added: 0008092 | |
2011-12-08 08:27 | 2useven10 | Note Added: 0008093 | |
2011-12-08 08:27 | 2useven10 | Assigned To | => 2useven10 |
2011-12-08 08:27 | 2useven10 | Status | new => feedback |
2011-12-08 10:45 | shmuel | Status | feedback => assigned |
2011-12-08 10:46 | shmuel | Note Added: 0008096 | |
2011-12-08 10:46 | shmuel | Status | assigned => resolved |
2011-12-08 10:52 | 2useven10 | Build | => 2290 |
2011-12-08 10:52 | 2useven10 | Status | resolved => closed |
2011-12-08 10:52 | 2useven10 | Resolution | open => fixed |
2011-12-08 10:52 | 2useven10 | Fixed in Version | => 3.0 |
2011-12-13 15:17 | zg | Note Added: 0008143 | |
2011-12-13 18:46 | zg | Status | closed => new |
2011-12-13 19:40 | 2useven10 | Note Added: 0008147 | |
2011-12-13 19:44 | zg | Note Added: 0008148 | |
2011-12-13 20:10 | shmuel | Note Added: 0008150 | |
2011-12-13 20:25 | 2useven10 | Note Added: 0008151 | |
2011-12-13 21:43 | zg | Note Added: 0008152 | |
2011-12-13 21:58 | shmuel | Note Added: 0008153 | |
2011-12-14 16:21 | 2useven10 | Note Added: 0008155 | |
2012-03-20 06:01 | shmuel | Note Added: 0008785 | |
2012-03-20 06:01 | shmuel | Status | new => resolved |
2012-04-19 20:47 | 2useven10 | Build | 2290 => 2559 |
2012-04-19 20:47 | 2useven10 | Status | resolved => closed |