View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000579 | Far Manager | Macro | public | 2008-07-25 10:41 | 2018-11-15 10:37 |
Reporter | JohnDoe | Assigned To | vskirdin | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | assigned | Resolution | reopened | ||
Summary | 0000579: Неполадки при операциях фара (таких как копирование), запущенных из макроса | ||||
Description | 1) Нарушается периодичность отрисовки экрана (иногда вообще не отрисовывается до окончания копирования) 2) Отсутствует реакция на Esc, т.е. операцию невозможно прервать до её окончания. | ||||
Additional Information | С проблемой я столкнулся при использовании "Макроса возвращающего поиску прежнее поведение" (http://forum.farmanager.com/viewtopic.php?f=15&t=3392) Впрочем, макрос для тестирования можно упростить ---------------------- REGEDIT4 [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F5] "Sequence"="F5 AltC" | ||||
Tags | No tags attached. | ||||
Build | |||||
|
Манипуляции с DisableOutput тоже не помогают. Но кое на что влияют: 1) При DisableOutput=0 (не важно как установленном - в реестре или с помощью $MMode 1) - обновляется процент в заголовке окна. Но диалог с прогрессом копирования заморожен. 2) При DisableOutput=1 (не важно как установленном - в реестре или с помощью $MMode 1) вообще никаких обновлений окна фара, даже заголовок стоит. Видим диалог с замороженным прогрессом копирования. ещё возможен третий вариант - самый интересный: 3) REGEDIT4 [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F5] "Sequence"="$MMode 1 F5 AltC $MMode 1" Если DisableOutput=1 до команды запуска операции (по $AKey, Enter, или как в примере - AltC), а сразу после идёт $MMode 1 (последняя команда макроса), то даже прогресс копирования не появляется - во время копирования на экране висит диалог параметров копирования. |
|
потести вот этот вариант: http://ifolder.ru/7596205 |
|
потестил m579.rar ---------------------- 1й вариант макроса REGEDIT4 [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F5] "Sequence"="F5 AltC" 1) При DisableOutput=0 - порядок 2) При DisableOutput=1 - порядок --------------------------------- 2й вариант макроса REGEDIT4 [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F5] "Sequence"="F5 AltC $MMode 1" 1) При DisableOutput=0 обновляется процент в заголовке окна. Но диалог с прогрессом копирования заморожен. 2) При DisableOutput=1 даже прогресс копирования не появляется - во время копирования на экране висит диалог параметров копирования. ---------------------- PS В этой сборке фара отвалились некоторые другие мои макросы. Имеет смысл репортить? Или будет другая сборка? |
|
2й вариант, "При DisableOutput=1" - так и должно быть, т.к. до "$MMode 1" очередь дойдет только после того, как ОНО ВСЕ скопируется, т.е. когда копир отдаст управление макродвигу - копирование начинается сразу после AltC. 2й вариант, "При DisableOutput=0" - здесь проблема: даже не смотря на то, что вывод на экран мы включили... хмм.... На пробу - http://ifolder.ru/7626129 Здесь 2 версии: Far.v1.exe и Far.v2.exe. Нужно выбрать одну из двух. В чем разница - поймете при DisableOutput=0. В Far.v1.exe есть подвох. Если "DisableOutput=0" и в процессе копирования, например, мы нажали Esc и отменили процесс и (!) если логика макроса не поняла, что ее кинули (макрос не отследил факта появления "левого" диалога), то... В общем нужно немного погонять в разных позах обе версии (конечно предпочтительнее v1) > В этой сборке фара отвалились некоторые другие мои макросы. > Имеет смысл репортить? Или будет другая сборка? Расскажи пока здесь, потом размеремся... (но сначала проверь свои макросы на предложенной сборке, ибо... пока ты отвечал... изменений произошло много :-) |
|
ну так Far.v1.exe решает проблему или нет? |
|
> 2й вариант, "При DisableOutput=1" - так и должно быть, т.к. до "$MMode 1" > очередь дойдет только после того, как ОНО ВСЕ скопируется, т.е. когда копир > отдаст управление макродвигу - копирование начинается сразу после AltC. В том-то и дело что ТОТ ЖЕ макрос При DisableOutput=1 но вообще без "$MMode 1" работает нормально! >ну так Far.v1.exe решает проблему или нет? сейчас проверю, скачать с ifolder целое дело... |
|
погонял немного В Far.v2.exe работает отрисовка но невозможно прервать операцию. В Far.v1.exe и то и другое работает правильно. При условии что перед копированием установлено DisableOutput=0. Это не проблема для меня, поскольку я теперь знаю где грабли. Но другой юзер может наткнуться и не понять в чём проблема. Я и сам чуть не поседел пока понял - ведь мои макросы никаким боком не касались копирования! Так что крайне желательно научить макродвижок самостоятельно определять такие случаи (если это конечно возможно) PS В Far.v1.exe осталась странность о которой я писал в прошлом посте. Прошу пояснить разницу: [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F5] "DisableOutput"=dword:00000001 "Sequence"="F5 AltC" диалог заморожен (понятно почему), но проценты в заголовке бегут [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F5] "DisableOutput"=dword:00000001 "Sequence"="F5 AltC $MMode 1" диалог так же заморожен (понятно), но проценты в заголовке почему-то уже не бегут |
|
> диалог заморожен (понятно почему), но проценты в заголовке бегут это разве плохо? :-) т.с. есть "отдушина" > диалог так же заморожен (понятно), но проценты в заголовке почему-то уже не бегут хмм.... разбераюсь... |
|
>это разве плохо? :-) т.с. есть "отдушина" конечно хорошо >...крайне желательно научить макродвижок самостоятельно определять такие случаи (если это конечно возможно) Реально ли это? Если нет - то меняю статус на fixed (но открою новый тикет - проблема с макросами в диалогах, которые открыты при старте фара /напр. плагином AddressBook/) |
|
эээ... давай так. если проблема в ракмках этого инциден... тикета решена, то закрываем. если есть другие вещи - заводим новый тикет. ок? |
|
>...если проблема в ракмках этого инциден... тикета решена, то закрываем формально - решена. Но хорошее решение - это научить макродвижок самостоятельно определять такие случаи. В противном случае пользователи будут сталкиваться с проблемами у которых причина совершенно не очевидна и на первый взгляд даже не связана с их собственными действиями. (я лично убил массу времени) >> но проценты в заголовке почему-то уже не бегут > хмм.... разбераюсь... получилось? |
|
Проблема в рамках этого тикета осталась. Невозможно прервать операцию копирования при DisableOutput=1 ? |
|
Тот же баг: 0000935 |
|
Far 1.7 is no longer supported. |
|
Тикет закрыт напрасно, поскольку проблема актуальна до сих пор. Макросы для воспроизведения: (Курсор на любой большой папке) macro:post f5 print("nul") CtrlEnter В результате в заголовке бегут проценты, а на экране ничего не отображается (это ожидаемо). Но: копирование невозможно прервать ни по Esc, ни по CtrlBreak!!! Проблему можно "обойти" добавлением в начало макроса mmode(1,0), но это же не выход, правильно? |
|
Собсна тут даже и нет ошибки... макросов. ...доходит очередь до CtrlEnter. Двиг ее берет и передает в текущий фрейм (в данном случае в диалог копира). Макрос еще не закончился, т.к. очередь до движка не дошла. Копир начинает свое дело (макрос еще не закончился). Копир "кончил" - управление получил макродвиг. При этом (!) копир постоянно дергает функцию CheckForEscSilent(), а в ней есть условие "CtrlObject->Macro.IsExecuting() != MACROMODE_NOMACRO"... В общем это мы когда-то проходили и пока остановились на том, что есть сейчас (искать в переписке если честно лень). За подробностями лезим в keyboard.cpp ( https://farmanager.com/svn/trunk/unicode_far/keyboard.cpp строки с 1642 по 1667 ) |
|
Почему влияет mmode(1,x)? (1) macro:post f5 print("nul") CtrlEnter Прервать нельзя, на экране ничего, в заголовке бегут проценты. (2) macro:post f5 print("nul") CtrlEnter mmode(1,0) Прервать нельзя, на экране ничего, проценты НЕ БЕГУТ. (3) macro:post f5 print("nul") mmode(1,0) CtrlEnter Прервать можно. |
|
> Почему влияет mmode(1,x)? Потому, что ты не смотрел (хотя там все прозрачно написано) :-( Вспомни что такое mmode(1) и +подсказка по коду (функция CtrlObject->Macro.IsDsableOutput() возвращает состояние залоченности экрана), ну и перечитай, что я написал в пред.посте |
Date Modified | Username | Field | Change |
---|---|---|---|
2008-07-25 10:41 | JohnDoe | New Issue | |
2008-07-25 10:41 | JohnDoe | Status | new => assigned |
2008-07-25 10:41 | JohnDoe | Assigned To | => vskirdin |
2008-08-05 04:07 | JohnDoe | Note Added: 0001703 | |
2008-08-05 04:08 | JohnDoe | Note Edited: 0001703 | |
2008-08-05 04:54 | vskirdin | Note Added: 0001704 | |
2008-08-06 10:34 | JohnDoe | Note Added: 0001709 | |
2008-08-06 10:39 | JohnDoe | Note Edited: 0001709 | |
2008-08-06 10:39 | JohnDoe | Note Edited: 0001709 | |
2008-08-07 06:52 | vskirdin | Note Added: 0001713 | |
2008-08-09 04:22 | vskirdin | Note Added: 0001717 | |
2008-08-09 04:22 | vskirdin | Status | assigned => feedback |
2008-08-11 03:15 | JohnDoe | Note Added: 0001724 | |
2008-08-11 04:27 | JohnDoe | Note Added: 0001725 | |
2008-08-11 08:31 | vskirdin | Note Added: 0001727 | |
2008-08-11 09:48 | JohnDoe | Note Added: 0001729 | |
2008-08-11 10:59 | vskirdin | Note Added: 0001730 | |
2008-08-12 01:09 | JohnDoe | Note Added: 0001732 | |
2009-03-06 09:02 | JohnDoe | Note Added: 0002722 | |
2009-03-07 08:41 | JohnDoe | Status | feedback => resolved |
2009-03-07 08:41 | JohnDoe | Resolution | open => reopened |
2009-03-07 08:44 | JohnDoe | Status | resolved => assigned |
2009-11-03 10:59 | JohnDoe | Note Added: 0004477 | |
2009-11-03 11:09 | alexy | Relationship added | has duplicate 0000935 |
2011-02-05 20:21 | alexy | Note Added: 0006421 | |
2011-02-05 20:21 | alexy | Status | assigned => closed |
2012-03-23 12:19 | JohnDoe | Note Added: 0008820 | |
2012-03-23 12:19 | JohnDoe | Status | closed => feedback |
2012-03-23 12:20 | JohnDoe | Status | feedback => assigned |
2012-03-27 17:05 | vskirdin | Project | Far Manager 1.7x => Far Manager |
2012-03-27 17:06 | vskirdin | Product Version | 1.71 => |
2012-03-30 11:33 | vskirdin | Note Added: 0008833 | |
2012-03-30 13:30 | JohnDoe | Note Added: 0008834 | |
2012-03-31 06:31 | vskirdin | Note Added: 0008835 | |
2012-03-31 06:31 | vskirdin | Note Edited: 0008835 | |
2018-11-15 10:37 | JohnDoe | Relationship added | related to 0002692 |