View Issue Details

IDProjectCategoryView StatusLast Update
0000579Far ManagerMacropublic2018-11-15 10:37
ReporterJohnDoe Assigned Tovskirdin  
PrioritynormalSeveritymajorReproducibilityalways
Status assignedResolutionreopened 
Summary0000579: Неполадки при операциях фара (таких как копирование), запущенных из макроса
Description1) Нарушается периодичность отрисовки экрана (иногда вообще не отрисовывается до окончания копирования)
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"



TagsNo tags attached.
Build

Relationships

has duplicate 0000935 closedalexy Непропадает диалог по ESC, потом нельзя прервать операцию по ESC 
related to 0002692 closedvskirdin Невозможно прервать операцию, если она запущена из макроса 

Activities

JohnDoe

2008-08-05 04:07

updater   bugnote:0001703

Last edited: 2008-08-05 04:08

Манипуляции с 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 (последняя команда макроса), то даже прогресс копирования не появляется - во время копирования на экране висит диалог параметров копирования.

vskirdin

2008-08-05 04:54

administrator   bugnote:0001704

потести вот этот вариант: http://ifolder.ru/7596205

JohnDoe

2008-08-06 10:34

updater   bugnote:0001709

Last edited: 2008-08-06 10:39

потестил 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
В этой сборке фара отвалились некоторые другие мои макросы.
Имеет смысл репортить? Или будет другая сборка?

vskirdin

2008-08-07 06:52

administrator   bugnote:0001713

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)

> В этой сборке фара отвалились некоторые другие мои макросы.
> Имеет смысл репортить? Или будет другая сборка?
Расскажи пока здесь, потом размеремся... (но сначала проверь свои макросы на предложенной сборке, ибо... пока ты отвечал... изменений произошло много :-)

vskirdin

2008-08-09 04:22

administrator   bugnote:0001717

ну так Far.v1.exe решает проблему или нет?

JohnDoe

2008-08-11 03:15

updater   bugnote:0001724

> 2й вариант, "При DisableOutput=1" - так и должно быть, т.к. до "$MMode 1"
> очередь дойдет только после того, как ОНО ВСЕ скопируется, т.е. когда копир
> отдаст управление макродвигу - копирование начинается сразу после AltC.
В том-то и дело что ТОТ ЖЕ макрос При DisableOutput=1 но вообще без "$MMode 1" работает нормально!

>ну так Far.v1.exe решает проблему или нет?
сейчас проверю, скачать с ifolder целое дело...

JohnDoe

2008-08-11 04:27

updater   bugnote:0001725

погонял немного
В 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"
диалог так же заморожен (понятно), но проценты в заголовке почему-то уже не бегут

vskirdin

2008-08-11 08:31

administrator   bugnote:0001727

> диалог заморожен (понятно почему), но проценты в заголовке бегут
это разве плохо? :-) т.с. есть "отдушина"

> диалог так же заморожен (понятно), но проценты в заголовке почему-то уже не бегут
хмм.... разбераюсь...

JohnDoe

2008-08-11 09:48

updater   bugnote:0001729

>это разве плохо? :-) т.с. есть "отдушина"
конечно хорошо

>...крайне желательно научить макродвижок самостоятельно определять такие случаи (если это конечно возможно)
Реально ли это? Если нет - то меняю статус на fixed

(но открою новый тикет - проблема с макросами в диалогах, которые открыты при старте фара /напр. плагином AddressBook/)

vskirdin

2008-08-11 10:59

administrator   bugnote:0001730

эээ... давай так. если проблема в ракмках этого инциден... тикета решена, то закрываем. если есть другие вещи - заводим новый тикет.
ок?

JohnDoe

2008-08-12 01:09

updater   bugnote:0001732

>...если проблема в ракмках этого инциден... тикета решена, то закрываем
формально - решена. Но хорошее решение - это научить макродвижок самостоятельно определять такие случаи.
В противном случае пользователи будут сталкиваться с проблемами у которых причина совершенно не очевидна и на первый взгляд даже не связана с их собственными действиями. (я лично убил массу времени)

>> но проценты в заголовке почему-то уже не бегут
> хмм.... разбераюсь...
получилось?

JohnDoe

2009-03-06 09:02

updater   bugnote:0002722

Проблема в рамках этого тикета осталась.
Невозможно прервать операцию копирования при DisableOutput=1
?

JohnDoe

2009-11-03 10:59

updater   bugnote:0004477

Тот же баг: 0000935

alexy

2011-02-05 20:21

administrator   bugnote:0006421

Far 1.7 is no longer supported.

JohnDoe

2012-03-23 12:19

updater   bugnote:0008820

Тикет закрыт напрасно, поскольку проблема актуальна до сих пор.
Макросы для воспроизведения:
(Курсор на любой большой папке)
macro:post f5 print("nul") CtrlEnter

В результате в заголовке бегут проценты, а на экране ничего не отображается (это ожидаемо).
Но: копирование невозможно прервать ни по Esc, ни по CtrlBreak!!!

Проблему можно "обойти" добавлением в начало макроса mmode(1,0), но это же не выход, правильно?

vskirdin

2012-03-30 11:33

administrator   bugnote:0008833

Собсна тут даже и нет ошибки... макросов.

...доходит очередь до CtrlEnter.
Двиг ее берет и передает в текущий фрейм (в данном случае в диалог копира).
Макрос еще не закончился, т.к. очередь до движка не дошла.
Копир начинает свое дело (макрос еще не закончился).
Копир "кончил" - управление получил макродвиг.

При этом (!) копир постоянно дергает функцию CheckForEscSilent(), а в ней есть условие "CtrlObject->Macro.IsExecuting() != MACROMODE_NOMACRO"...
В общем это мы когда-то проходили и пока остановились на том, что есть сейчас (искать в переписке если честно лень). За подробностями лезим в keyboard.cpp
( https://farmanager.com/svn/trunk/unicode_far/keyboard.cpp строки с 1642 по 1667 )

JohnDoe

2012-03-30 13:30

updater   bugnote:0008834

Почему влияет 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
Прервать можно.

vskirdin

2012-03-31 06:31

administrator   bugnote:0008835

Last edited: 2012-03-31 06:31

> Почему влияет mmode(1,x)?
Потому, что ты не смотрел (хотя там все прозрачно написано) :-(
Вспомни что такое mmode(1) и +подсказка по коду (функция CtrlObject->Macro.IsDsableOutput() возвращает состояние залоченности экрана), ну и перечитай, что я написал в пред.посте

Issue History

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