View Issue Details

IDProjectCategoryView StatusLast Update
0002389Far ManagerMacropublic2014-05-30 13:14
ReporterJohnDoe Assigned Toshmuel  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version3.0 
Fixed in Version3.0 
Summary0002389: mmode(1,x): Вывод на экран включается/отключается не вовремя
Descriptionlm:post mmode(1,0) mf.print(1) mf.print(2) mmode(1,1) mf.waitkey(1000)

Ожидается: одновременное появление обоих цифр: 12

Фактически: сразу появляется 1, через секунду 2
Steps To ReproduceДругой пример, вместо waitkey используется sleep
lm:post mmode(1,0) mf.print(1) mf.print(2) mmode(1,1) mf.sleep(1000) mf.print(3)

Ожидается: "12" а через секунду "3"

Фактически: "1", а через секунду "23"
Additional Informationmmode(1,0) = EnableOutput
mmode(1,1) = DisableOutput
TagsNo tags attached.
BuildLMb352

Activities

shmuel

2013-05-25 17:14

developer   bugnote:0011025

> lm:post mmode(1,0) mf.print(1) mf.print(2) mmode(1,1) mf.waitkey(1000)
> Ожидается: одновременное появление обоих цифр: 12
> Фактически: сразу появляется 1, через секунду 2

Команда mmode(1,x), как сказано в Энциклопедии, "позволяет изменять режим перерисовки экрана во время проигрывания макропоследовательности (запрещает вывод)".

Изменить режим перерисовки - это одно, а немедленно перерисовать экран (как вы хотите) - это другое. То-есть, нигде не сказано, что после исполнения mmode(1,0) экран должен быть немедленно перерисован.

JohnDoe

2013-05-27 12:21

updater   bugnote:0011036

Я вовсе не рассчитываю на немедленную перерисовку экрана.
Посмотрите на процитированную последовательность.

- Включаем вывод
- рисуем "1"
- рисуем "2"
- Отключаем вывод
- Ждём 1000 мс

Почему 1 и 2 рисуются не одновременно?

shmuel

2013-05-27 12:37

developer   bugnote:0011037

> Почему 1 и 2 рисуются не одновременно?

Потому что при вызове print в Фаре не происходит немедленной отрисовки.

JohnDoe

2013-05-27 12:44

updater   bugnote:0011038

Это исправимо?

shmuel

2013-05-27 12:51

developer   bugnote:0011039

> Это исправимо?

Думаю, что да, но не уверен, что просто. В Фаре много чего завязано друг на друга: тронешь в одном месте - отвалится в другом.

JohnDoe

2014-05-28 10:03

updater   bugnote:0012439

Простейшее решение: по команде mmode(1,1) сбрасывать буфер экрана.

shmuel

2014-05-28 17:56

developer   bugnote:0012442

Если перед mmode(1,1) вызвать print"" или print(), то это произведёт желаемый эффект.

JohnDoe

2014-05-29 06:05

updater   bugnote:0012443

Или far.Text().

Но всё-таки прошу рассмотреть возможность добавить сброс буфера в mmode(1,1).
Пользователь вполне обоснованно ожидает что отобразится всё, что выводилось пока вывод был разрешён.
И я не могу придумать ни одного варианта, где может быть желательно текущее поведение.

shmuel

2014-05-29 06:29

developer   bugnote:0012444

LuaMacro build 352.

JohnDoe

2014-05-30 08:33

updater   bugnote:0012446

Порядок, можно закрывать

Issue History

Date Modified Username Field Change
2013-04-20 10:07 JohnDoe New Issue
2013-05-25 17:14 shmuel Note Added: 0011025
2013-05-27 12:21 JohnDoe Note Added: 0011036
2013-05-27 12:37 shmuel Note Added: 0011037
2013-05-27 12:44 JohnDoe Note Added: 0011038
2013-05-27 12:51 shmuel Note Added: 0011039
2014-05-28 10:03 JohnDoe Note Added: 0012439
2014-05-28 17:56 shmuel Note Added: 0012442
2014-05-29 06:05 JohnDoe Note Added: 0012443
2014-05-29 06:29 shmuel Note Added: 0012444
2014-05-29 06:29 shmuel Assigned To => shmuel
2014-05-29 06:29 shmuel Status new => feedback
2014-05-30 08:33 JohnDoe Note Added: 0012446
2014-05-30 08:33 JohnDoe Status feedback => assigned
2014-05-30 13:14 shmuel Build => LMb352
2014-05-30 13:14 shmuel Status assigned => closed
2014-05-30 13:14 shmuel Resolution open => fixed
2014-05-30 13:14 shmuel Fixed in Version => 3.0