View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001603 | Far Manager | Dialog | public | 2010-11-26 21:02 | 2011-09-01 17:54 |
Reporter | CDK | Assigned To | DrKnS | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x86 | OS | Windows | ||
Product Version | 2.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001603: Автодополнение в диалоге в середине строки отрабатывает некорректно | ||||
Description | Автодополнение в диалоге создания каталога в середине строки отрабатывает некорректно при настройках: Show list - выключено Append first matched item - включено | ||||
Steps To Reproduce | Far 2.0 (build 1733) x86 чистый (реестр пустой, плагинов нет) 1) В пустом каталоге создаем два подкаталога "ABCD 1" и "1234". 2) Копируем в буфер имя каталога "ABCD 1" (без кавычек) 3) F7 -> Shift+Ins (вставляем из буфера "ABCD 1" без кавычек) 4) Получаем: ABCD 1234 (234 выделены) 5) Нажимаем Del (стираем 234) 6) Перемещаем курсор под букву C и стираем ее 7) Вводим букву C (на тоже место) 8) Получаем ABC23 1 (пробел и 1 выделены) | ||||
Additional Information | Автодополнение, видимо, не смотрит на позицию курсора, а отрабатывает по последнему символу в строке | ||||
Tags | No tags attached. | ||||
Build | 2124 | ||||
|
Посмотрел немного под отладчиком. Сейчас сравнивает на совпадение строку целиком, а не с начала строки и до курсора (что мне кажется правильнее). Соответственно для "ABC 1" находит "ABC 123" и вставляет недостающий кусок ("23") туда, где сейчас курсор (!). По-моему нужно: int SelStart=GetLength(); заменить на: int SelStart=CurPos; и: Select(SelStart, GetLength()); заменить на: Select(SelStart, ComplMenu.GetItemPtr(0)->strName.GetLength()); Added: вот только это для отключенного Show list |
|
Меня тоже порядком замучала очень похожая проблема. 1. Набираю в командной строке ABCD<ENTER> 2. Набираю AC 3. Нажимаю <LEFT>B, чтобы вставить B между A и C, получаю ABDC (C выделена), хотя ожидаю ABCD (D выделена). Я исправил это заменой InsertString на AppendString; целиком патч ниже: Index: edit.cpp =================================================================== --- edit.cpp (revision 5408) +++ edit.cpp (working copy) @@ -1883,6 +1883,15 @@ +void Edit::AppendString(const wchar_t *Str) +{ + int LastPos = CurPos; + CurPos = GetLength(); + InsertString(Str); + CurPos = LastPos; +} + + void Edit::InsertString(const wchar_t *Str) { if (Flags.Check(FEDITLINE_READONLY|FEDITLINE_DROPDOWNBOX)) @@ -3046,7 +3055,7 @@ CurPos--; } - InsertString(ComplMenu.GetItemPtr(0)->strName+SelStart); + AppendString(ComplMenu.GetItemPtr(0)->strName+SelStart); Select(SelStart, GetLength()); Show(); } Index: edit.hpp =================================================================== --- edit.hpp (revision 5408) +++ edit.hpp (working copy) @@ -241,6 +241,7 @@ int GetLength(); + void AppendString(const wchar_t *Str); void InsertString(const wchar_t *Str); void InsertBinaryString(const wchar_t *Str,int Length); |
|
2124 |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-11-26 21:02 | CDK | New Issue | |
2010-11-27 20:39 | CDK | Note Added: 0005992 | |
2010-11-27 20:46 | CDK | Note Edited: 0005992 | View Revisions |
2011-01-09 14:33 | NightDemon | Note Added: 0006076 | |
2011-08-02 19:05 | DrKnS | Note Added: 0007354 | |
2011-08-02 19:05 | DrKnS | Assigned To | => DrKnS |
2011-08-02 19:05 | DrKnS | Status | new => feedback |
2011-09-01 17:54 | DrKnS | Build | => 2124 |
2011-09-01 17:54 | DrKnS | Status | feedback => closed |
2011-09-01 17:54 | DrKnS | Resolution | open => fixed |
2011-09-01 17:54 | DrKnS | Fixed in Version | => 3.0 |