View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002389 | Far Manager | Macro | public | 2013-04-20 10:07 | 2014-05-30 13:14 |
Reporter | JohnDoe | Assigned To | shmuel | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002389: mmode(1,x): Вывод на экран включается/отключается не вовремя | ||||
Description | lm: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 Information | mmode(1,0) = EnableOutput mmode(1,1) = DisableOutput | ||||
Tags | No tags attached. | ||||
Build | LMb352 | ||||
|
> 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) экран должен быть немедленно перерисован. |
|
Я вовсе не рассчитываю на немедленную перерисовку экрана. Посмотрите на процитированную последовательность. - Включаем вывод - рисуем "1" - рисуем "2" - Отключаем вывод - Ждём 1000 мс Почему 1 и 2 рисуются не одновременно? |
|
> Почему 1 и 2 рисуются не одновременно? Потому что при вызове print в Фаре не происходит немедленной отрисовки. |
|
Это исправимо? |
|
> Это исправимо? Думаю, что да, но не уверен, что просто. В Фаре много чего завязано друг на друга: тронешь в одном месте - отвалится в другом. |
|
Простейшее решение: по команде mmode(1,1) сбрасывать буфер экрана. |
|
Если перед mmode(1,1) вызвать print"" или print(), то это произведёт желаемый эффект. |
|
Или far.Text(). Но всё-таки прошу рассмотреть возможность добавить сброс буфера в mmode(1,1). Пользователь вполне обоснованно ожидает что отобразится всё, что выводилось пока вывод был разрешён. И я не могу придумать ни одного варианта, где может быть желательно текущее поведение. |
|
LuaMacro build 352. |
|
Порядок, можно закрывать |
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 |