View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001782 | Far Manager | Editor | public | 2011-05-23 23:58 | 2011-12-23 09:02 |
Reporter | Maximus | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001782: Ошибка выделения при наличии табов | ||||
Description | Не уверен где именно глюк - то ли в редакторе, то ли в макродвижке. При наличии в строке редактора табов - выделяется область правее чем нужно. | ||||
Steps To Reproduce | Far3 build 2047, чистая конфигурация (UseSystemProfiles=0, баз нет) Есть один макрос MsLClick.reg Открываем файл с табами (TabBug.txt) Попытка выделения приводит к выделению области правее чем нужно. выделять начинал с первого непробельного символа | ||||
Tags | No tags attached. | ||||
Build | 2058 | ||||
|
|
|
Думаю причина та же, что и в http://bugs.farmanager.com/view.php?id=1326 |
|
Забыл сказать, что в Far2 все было ОК, а вот в тройке - поломалось. |
|
Far3 build 2047 - выделение раблтатет корректно (TabBug.txt) Макросов нет. |
|
Думаешь, я просто так макрос приложил? Уточняю. Выделение _мышкой_ работает _не_ корректно. |
|
Нашел в changelog svs 14.05.2011 14:53:18 +0300 - build 2029 2. Macro: Бага в Editor.Sel() - не учитывались табы... (репорт из рассылки fardev@googlegroups.com) наверное, нужно макрос переписывать |
|
извини, я не телепат. про мышку в тикете ничего нет. |
|
еще интереснее, если отключен флажок [ ] Cursor beyond end of line В этом случае, выыделение за концом строки смотрится вообще дико |
|
Да, макрос нужно переписывать. Судя по всему он "паразитировал" на баге :-) |
|
Закрываем? |
|
Ну, с макросом наверное понятно. А вот установку выделения за концом строки не надо в принципе запретить? |
|
"не надо в принципе запретить" - переведи. |
|
|
|
Смотри на картинку. Макросу удается установить выделение за пределами конца строки. А туда (за конец строки) обычным образом даже курсор поставить нельзя, если пендюрка "Cursor beyond end of line" отключена. При включенной пендюрке - наверное имеет право, а вот при отключенной? |
|
Проверь: editor.cpp Editor::VMProcess case MCODE_F_EDITOR_SEL: ... case 1: // Set Pos ... блок внутри "if (iLine > -1 && iPos > -1)" переписать так: { int _NumLine=NumLine; int _CurPos=CurLine->GetTabCurPos(); GoToLine(iLine); CurLine->SetCurPos(CurLine->TabPosToReal(iPos)); if (!EdOpt.CursorBeyondEOL && CurLine->GetCurPos() >= CurLine->GetLength()) { GoToLine(_NumLine); CurLine->SetCurPos(CurLine->TabPosToReal(_CurPos)); return 0; } return 1; } Так, мог намудрить с GetTabCurPos и GetCurPos - надо поиграться :-) |
|
это курсор за пределы строки не убегает. А вот выделение продолжает ставиться (за концом строки) |
|
давай простой тестовый макрос с в студию (только не тот, на сто мульенов строк - MsLClick.reg - его еще переписать надо). |
|
Все-таки, само выделение глючит (проблему с выделением за концом строки времмено забыли). Смотри, editor.pos(1,1,MsY) editor.pos(1,3,MsX+1) editor.sel(2,0) editor.pos(1,3,MsX+2) editor.sel(2,1) editor.pos(1,3,MsX+1) По идее, по клику мышки макрос должен выделить "кликнутый" символ. Пока табов нет - все хорошо. Как только есть табы (пример - приложенный файл) клик по первому значимому символу ставит выделение правее чем нужно! Хотя сам курсор позиционируется нормально. |
|
так, кажется начал догонять в чем трабла. и имя ей - "MsX": ОНО не преобразуется в редакторо-вьювере пропорционально размеру табуляции. ы? как вариант - ввести функцию Editor.Tab2Pos/Pos2Tab... хотя лучше в нутренностях, но... пока не представляю как. пойду подумаю... |
|
Погодь. editor.pos(1,3,MsX+1) ставит курсор в _экранных_ координатах. И если не принимать во внимание выделение - то установка позиции отрабатывает правильно. Например: editor.pos(1,1,MsY) editor.pos(1,3,MsX+2) будет ставить курсор на один символ правее "кликнутого". Отсюда я делаю вывод, что глючит именно editor.sel(2,0) / editor.sel(2,1) ы? |
|
хотя... "к черту шлюх" (с) Бендер MsX не причем. |
|
в блоке case 2: // Set Stream Selection Edge case 3: // Set Column Selection Edge { ... } все GetTabCurPos нужно заменить на GetCurPos и макрос вроде заработал. тестим - http://skirda-file.googlecode.com/files/m1782.1.7z |
|
ага, похоже на правду. вроде работает |
|
build 2058 |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-05-23 23:58 | Maximus | New Issue | |
2011-05-23 23:58 | Maximus | File Added: TabBug.7z | |
2011-05-24 02:11 | 2useven10 | Note Added: 0007018 | |
2011-05-24 07:05 | Maximus | Note Added: 0007019 | |
2011-05-24 07:18 | 2useven10 | Note Added: 0007021 | |
2011-05-24 07:20 | 2useven10 | Note Edited: 0007021 | |
2011-05-24 07:29 | Maximus | Note Added: 0007023 | |
2011-05-24 07:44 | Maximus | Note Added: 0007024 | |
2011-05-24 07:53 | 2useven10 | Note Added: 0007026 | |
2011-05-24 12:31 | Maximus | Note Added: 0007028 | |
2011-05-24 15:09 | vskirdin | Note Added: 0007029 | |
2011-05-25 20:49 | vskirdin | Note Added: 0007054 | |
2011-05-25 20:52 | Maximus | Note Added: 0007055 | |
2011-05-26 04:52 | vskirdin | Note Added: 0007057 | |
2011-05-26 07:20 | Maximus | File Added: InvSel.png | |
2011-05-26 07:23 | Maximus | Note Added: 0007059 | |
2011-05-26 11:20 | vskirdin | Note Added: 0007064 | |
2011-05-26 14:23 | Maximus | Note Added: 0007071 | |
2011-05-26 14:27 | vskirdin | Note Added: 0007073 | |
2011-05-26 15:52 | Maximus | Note Added: 0007078 | |
2011-05-27 07:04 | vskirdin | Note Added: 0007084 | |
2011-05-27 08:10 | Maximus | Note Added: 0007087 | |
2011-05-27 08:42 | vskirdin | Note Added: 0007088 | |
2011-05-27 08:47 | vskirdin | Note Added: 0007089 | |
2011-05-27 08:51 | vskirdin | Note Edited: 0007089 | |
2011-05-27 22:45 | Maximus | Note Added: 0007099 | |
2011-05-28 07:59 | vskirdin | Note Added: 0007101 | |
2011-05-28 07:59 | vskirdin | Assigned To | => vskirdin |
2011-05-28 07:59 | vskirdin | Status | new => feedback |
2011-12-23 09:02 | alexy | Build | => 2058 |
2011-12-23 09:02 | alexy | Status | feedback => closed |
2011-12-23 09:02 | alexy | Resolution | open => fixed |
2011-12-23 09:02 | alexy | Fixed in Version | => 3.0 |