View Issue Details

IDProjectCategoryView StatusLast Update
0001603Far ManagerDialogpublic2011-09-01 20:54
ReporterCDKAssigned ToDrKnS 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version2.0 
Target VersionFixed in Version3.0 
Summary0001603: Автодополнение в диалоге в середине строки отрабатывает некорректно
DescriptionАвтодополнение в диалоге создания каталога в середине строки отрабатывает некорректно при настройках:
Show list - выключено
Append first matched item - включено
Steps To ReproduceFar 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Автодополнение, видимо, не смотрит на позицию курсора, а отрабатывает по последнему символу в строке
TagsNo tags attached.
Build2124

Activities

CDK

2010-11-27 23:39

reporter   bugnote:0005992

Last edited: 2010-11-27 23:46

View 2 revisions

Посмотрел немного под отладчиком. Сейчас сравнивает на совпадение строку целиком, а не с начала строки и до курсора (что мне кажется правильнее). Соответственно для "ABC 1" находит "ABC 123" и вставляет недостающий кусок ("23") туда, где сейчас курсор (!).

По-моему нужно:
int SelStart=GetLength();
заменить на:
int SelStart=CurPos;

и:
Select(SelStart, GetLength());
заменить на:
Select(SelStart, ComplMenu.GetItemPtr(0)->strName.GetLength());

Added: вот только это для отключенного Show list

NightDemon

2011-01-09 17:33

reporter   bugnote:0006076

Меня тоже порядком замучала очень похожая проблема.
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);

DrKnS

2011-08-02 22:05

administrator   bugnote:0007354

2124

Issue History

Date Modified Username Field Change
2010-11-27 00:02 CDK New Issue
2010-11-27 23:39 CDK Note Added: 0005992
2010-11-27 23:46 CDK Note Edited: 0005992 View Revisions
2011-01-09 17:33 NightDemon Note Added: 0006076
2011-08-02 22:05 DrKnS Note Added: 0007354
2011-08-02 22:05 DrKnS Assigned To => DrKnS
2011-08-02 22:05 DrKnS Status new => feedback
2011-09-01 20:54 DrKnS Build => 2124
2011-09-01 20:54 DrKnS Status feedback => closed
2011-09-01 20:54 DrKnS Resolution open => fixed
2011-09-01 20:54 DrKnS Fixed in Version => 3.0