View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001470 | Far Manager | Dialog | public | 2010-08-21 09:35 | 2014-04-08 06:25 |
Reporter | NightRoman | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 2.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001470: Edit-box: состояние "Unchanged" появляется уже после того, как было сброшено | ||||
Description | Нужен плагин FarNet, его модуль RightControl 1.0.6 и вот этот макрос для диалогов: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Far2\KeyMacros\Dialog\Left] "Sequence"="Editor.Sel(1,0) Editor.Sel(4)" "Description"="Go to text selection left edge" "DisableOutput"=dword:00000001 "EVSelection"=dword:00000001 В диалоге Фара CtrlG предварительно обеспечим какой-нибудь "старый текст", например, выполним разок команду: echo just test Воспродим проблему: * CtrlG - открываем диалог, там в поле ввода находится текст "echo just test" в состоянии unchanged, курсор в конце * F11 \ .NET RightControl \ select left - в поле ввода выделено слово "test", курсор стоит на его первой букве, важно: состояние unchanged сброшено * Left - левая стрелка вызывает макрос, выделение текста пропадает, как и надо, курсор на том же месте, что и был, НО: появилось состояние unchanged, чего быть не должно | ||||
Tags | No tags attached. | ||||
Build | 3854 | ||||
|
Наличие макроса на Left даже не обязательно, кажется. У меня проблема воспроизводится также если просто нажать Del - выделенный участок текста при этом удаляется, а оставшийся в строке текст становится Unchanged (фактически после реального редактирования!). Это реально мешает работать, так как при немедленно продолжении редактирования ожидаешь, что текст будет добавляться, но вместо этого старый текст заменяется новым. Приходится чертыхаться и все переделывать уже внимательно, сбрасывая ошибочное состояние Unchanged вручную в нужный момент. |
|
Не знаю, связано ли с этим, но при включённом AutoCompletion нажатие Shift+Ins не снимает unchanged, если в истории что-то нашлось. |
|
Это будет исправляться или придется как-то приспосабливаться в плагине? |
|
Можно как нибудь без FarNet обойтись? |
|
Наверное, то же самое можно на Луа сделать. Но я не силен в Луа. А почему FarNet не годится? |
|
Дополнительная прослойка между юзером и диалогом - т.е. вполне возможно, что трабла в FarNet`е. Для этого и нужен "чистый" эксперимент (с как можно меньшим влиянием со стороны). |
|
В теории - да. И если было бы просто предъявить проблему проще, я бы сделал сразу. А на практике большинство моих репортов все-таки указывают проблемы в Фаре. Можно это учесть. Фарнет - сложная конструкция, да. Но отчасти поэтому она и и выявляет интересные случаи еще до того, как другие встанут на грабли. |
|
Вот макрос, воспроизводящий проблему. Запускать его можно из диалога поиска в редакторе, либо из диалога поиска файлов в панели - сразу после их открытия. В поле ввода перед запуском макроса должно быть хотя бы 2 символа Macro { description="0001470: Edit-box: состояние \"Unchanged\" появляется уже ".. "после того, как было сброшено"; area="Dialog"; key="CtrlT"; action=function() local hDlg = far.AdvControl("ACTL_GETWINDOWINFO").Id local focusId = far.SendDlgMessage(hDlg,"DM_GETFOCUS") far.SendDlgMessage(hDlg, "DM_SETSELECTION", focusId, {BlockType="BTYPE_STREAM", BlockStartPos=1, BlockWidth=2}) Editor.Sel(1,0) Editor.Sel(4) end; } |
|
попробуйте следующее: dialog.cpp intptr_t Dialog::SendMessage(intptr_t Msg,intptr_t Param1,void* Param2) ... case DM_GETSELECTION: // Msg=DM_GETSELECTION, Param1=ID, Param2=*EditorSelect case DM_SETSELECTION: // Msg=DM_SETSELECTION, Param1=ID, Param2=*EditorSelect ... if (EdSel->BlockType==BTYPE_NONE) EditLine->Select(-1,0); else EditLine->Select(EdSel->BlockStartPos,EdSel->BlockStartPos+EdSel->BlockWidth); +> EditLine->SetClearFlag(0); if (DialogMode.Check(DMODE_SHOW)) //??? т.е. добавить "EditLine->SetClearFlag(0)" Возможно так же нужно в макросах так же сбрасывать Unchanged, если мы применяем не "Editor.Sel(0)" (Get Param). Для этого в edit.cpp::Edit::VMProcess добавить: case MCODE_F_EDITOR_SEL: { int Action=(int)((intptr_t)vParam); +> if (Action) SetClearFlag(0); (или патч нужен?) |
|
> попробуйте следующее: А самому попробовать? |
|
Т.е. это утвердительный ответ в стиле "да, работает". Так? закрываем? PS. У меня пашет, но может вы что-то еще найдёте. |
|
Я не пробовал, мне просто было странно, что разработчик предлагает другим пробовать, не попробовав сам. Ибо из http://bugs.farmanager.com/view.php?id=1470#c12130 никак не следует, что ты пробовал сам, и что из этого получилось. |
|
Это ты к тому, что в следующий раз достаточно написать в zg-стайле "не повторяется" и благополучно закрывать инц (если не предоставлен простой способ проверки)? Надо подумать над эти способом :-) По сути: с твоим скриптом и теми изменениями, что я озвучил выше - повторения инца нет. Но у меня FarNet не стоит (думаю, и ты не ставил), а вот как с ним пойдёт - ХЗ. |
|
Не читай между строк. Я сказал только то, что сказал: из твоего сообщения 12130 не видно, что ты сам это проверял, и что результаты проверки были положительными. |
|
> или патч нужен? Лучше бы патч, сегодня времени совсем мало на вставку по кусочкам. Но патч проверю (постараюсь). Спасибо всем за участие в вопросе. Наконец-то есть подвижки, очень рад. |
|
Far 3.0.3854 - теперь стало, как надо. На первый взгляд. Более дотошно протестирую с выходом ночной сборки. (убрано) |
|
build 3854 |
|
Все работает, как надо, спасибо, можно закрывать. |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-08-21 09:35 | NightRoman | New Issue | |
2010-08-28 08:18 | NightRoman | Note Added: 0005731 | |
2010-08-28 08:26 | NightRoman | Note Edited: 0005731 | |
2010-10-01 17:49 | Toxa | Note Added: 0005868 | |
2014-04-06 19:16 | NightRoman | Note Added: 0012119 | |
2014-04-07 06:31 | vskirdin | Note Added: 0012122 | |
2014-04-07 06:45 | NightRoman | Note Added: 0012123 | |
2014-04-07 09:28 | vskirdin | Note Added: 0012126 | |
2014-04-07 09:33 | NightRoman | Note Added: 0012127 | |
2014-04-07 10:35 | shmuel | Note Added: 0012128 | |
2014-04-07 11:14 | vskirdin | Note Added: 0012130 | |
2014-04-07 11:15 | vskirdin | Note Edited: 0012130 | |
2014-04-07 12:34 | shmuel | Note Added: 0012132 | |
2014-04-07 12:48 | vskirdin | Note Added: 0012134 | |
2014-04-07 13:02 | shmuel | Note Added: 0012135 | |
2014-04-07 13:23 | vskirdin | Note Added: 0012136 | |
2014-04-07 13:27 | shmuel | Note Added: 0012137 | |
2014-04-07 13:38 | NightRoman | Note Added: 0012138 | |
2014-04-07 14:12 | NightRoman | Note Added: 0012139 | |
2014-04-07 14:15 | NightRoman | Note Edited: 0012139 | |
2014-04-07 14:41 | vskirdin | Note Added: 0012141 | |
2014-04-07 14:41 | vskirdin | Assigned To | => vskirdin |
2014-04-07 14:41 | vskirdin | Status | new => feedback |
2014-04-08 05:11 | NightRoman | Note Added: 0012147 | |
2014-04-08 05:11 | NightRoman | Status | feedback => assigned |
2014-04-08 06:25 | vskirdin | Build | => 3854 |
2014-04-08 06:25 | vskirdin | Status | assigned => closed |
2014-04-08 06:25 | vskirdin | Resolution | open => fixed |
2014-04-08 06:25 | vskirdin | Fixed in Version | => 3.0 |