View Issue Details

IDProjectCategoryView StatusLast Update
0001470Far ManagerDialogpublic2014-04-08 06:25
ReporterNightRoman Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version2.0 
Fixed in Version3.0 
Summary0001470: 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, чего быть не должно
TagsNo tags attached.
Build3854

Activities

NightRoman

2010-08-28 08:18

reporter   bugnote:0005731

Last edited: 2010-08-28 08:26

Наличие макроса на Left даже не обязательно, кажется. У меня проблема воспроизводится также если просто нажать Del - выделенный участок текста при этом удаляется, а оставшийся в строке текст становится Unchanged (фактически после реального редактирования!).

Это реально мешает работать, так как при немедленно продолжении редактирования ожидаешь, что текст будет добавляться, но вместо этого старый текст заменяется новым. Приходится чертыхаться и все переделывать уже внимательно, сбрасывая ошибочное состояние Unchanged вручную в нужный момент.

Toxa

2010-10-01 17:49

reporter   bugnote:0005868

Не знаю, связано ли с этим, но при включённом AutoCompletion нажатие Shift+Ins не снимает unchanged, если в истории что-то нашлось.

NightRoman

2014-04-06 19:16

reporter   bugnote:0012119

Это будет исправляться или придется как-то приспосабливаться в плагине?

vskirdin

2014-04-07 06:31

administrator   bugnote:0012122

Можно как нибудь без FarNet обойтись?

NightRoman

2014-04-07 06:45

reporter   bugnote:0012123

Наверное, то же самое можно на Луа сделать. Но я не силен в Луа.

А почему FarNet не годится?

vskirdin

2014-04-07 09:28

administrator   bugnote:0012126

Дополнительная прослойка между юзером и диалогом - т.е. вполне возможно, что трабла в FarNet`е. Для этого и нужен "чистый" эксперимент (с как можно меньшим влиянием со стороны).

NightRoman

2014-04-07 09:33

reporter   bugnote:0012127

В теории - да. И если было бы просто предъявить проблему проще, я бы сделал сразу.

А на практике большинство моих репортов все-таки указывают проблемы в Фаре. Можно это учесть.

Фарнет - сложная конструкция, да. Но отчасти поэтому она и и выявляет интересные случаи еще до того, как другие встанут на грабли.

shmuel

2014-04-07 10:35

developer   bugnote:0012128

Вот макрос, воспроизводящий проблему. Запускать его можно из диалога поиска в редакторе, либо из диалога поиска файлов в панели - сразу после их открытия. В поле ввода перед запуском макроса должно быть хотя бы 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;
}

vskirdin

2014-04-07 11:14

administrator   bugnote:0012130

Last edited: 2014-04-07 11:15

попробуйте следующее:
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);


(или патч нужен?)

shmuel

2014-04-07 12:34

developer   bugnote:0012132

> попробуйте следующее:

А самому попробовать?

vskirdin

2014-04-07 12:48

administrator   bugnote:0012134

Т.е. это утвердительный ответ в стиле "да, работает". Так?
закрываем?

PS.
У меня пашет, но может вы что-то еще найдёте.

shmuel

2014-04-07 13:02

developer   bugnote:0012135

Я не пробовал, мне просто было странно, что разработчик предлагает другим пробовать, не попробовав сам. Ибо из http://bugs.farmanager.com/view.php?id=1470#c12130 никак не следует, что ты пробовал сам, и что из этого получилось.

vskirdin

2014-04-07 13:23

administrator   bugnote:0012136

Это ты к тому, что в следующий раз достаточно написать в zg-стайле "не повторяется" и благополучно закрывать инц (если не предоставлен простой способ проверки)? Надо подумать над эти способом :-)

По сути: с твоим скриптом и теми изменениями, что я озвучил выше - повторения инца нет. Но у меня FarNet не стоит (думаю, и ты не ставил), а вот как с ним пойдёт - ХЗ.

shmuel

2014-04-07 13:27

developer   bugnote:0012137

Не читай между строк.
Я сказал только то, что сказал: из твоего сообщения 12130 не видно, что ты сам это проверял, и что результаты проверки были положительными.

NightRoman

2014-04-07 13:38

reporter   bugnote:0012138

> или патч нужен?
Лучше бы патч, сегодня времени совсем мало на вставку по кусочкам. Но патч проверю (постараюсь).

Спасибо всем за участие в вопросе. Наконец-то есть подвижки, очень рад.

NightRoman

2014-04-07 14:12

reporter   bugnote:0012139

Last edited: 2014-04-07 14:15

Far 3.0.3854 - теперь стало, как надо. На первый взгляд. Более дотошно протестирую с выходом ночной сборки.

(убрано)

vskirdin

2014-04-07 14:41

administrator   bugnote:0012141

build 3854

NightRoman

2014-04-08 05:11

reporter   bugnote:0012147

Все работает, как надо, спасибо, можно закрывать.

Issue History

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