Промаргивание панелей при перерисовке редактора из-за диалога

Здесь можно сообщить о найденных багах в Far.
User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Mon 28 Nov, 2016 21:08

Обнаружилась неприятная косметическая ошибка в перерисовке — воспроизводится часто, но не всегда. Вот самый надёжный способ её увидеть, который мне удалось изобрести:
0. Выставляем для Фара некрупный шрифт (у меня воспроизводится и на Consolas, и на Lucida Console; на растровых не проверял).
1. Запускаем Фар как минимум с плагинами Colorer и NetBox (без них ошибку поймать тоже можно, но гораздо сложнее).
2. Разворачиваем Фар на весь экран по AltF9 (без этого тоже можно, но сложнее).
3. На одной из панелей открываем через NetBox соединение (желательно не очень быстрое) на какой-нибудь удалённый хост, там открываем на редактирование какой-нибудь текстовый файл (желательно, чтобы в нём строчек было не меньше, чем в окне редактора, и чтобы строки были не шире половины окна редактора).
4. Попеременно нажимаем F7 (чтобы открылся диалог) и Esc (чтобы диалог закрылся), при этом наблюдаем за пустым пространством в окне редактора — там при перерисовке регулярно промаргивают панели (особенно хорошо заметны их рамки).

В сборке “Far Manager, version 3.0 (build 4807) x86” ошибка ещё не наблюдается, в сборке “Far Manager, version 3.0 (build 4809) x86” — уже есть.

23:32 MSK
Вроде бы воспроизводится только с немодальным редактором, т.е. в случае NetBox должно быть “[x] Allow more than one edited file” в “NetBox - Editor/viewer settings”.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлено замечание про немодальность редактора
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Mon 28 Nov, 2016 21:45

это фича.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Mon 28 Nov, 2016 22:06

zg wrote: это фича
Здрасьте пожалста!
В чём же конкретно эта „фича“ заключается и для чего/кого она потребовалась?! Т.е. какая от такого поведения польза для юзера?
Лично мне это промаргивание панелей через редактор очень мешает, т.к. отвлекает при открытии/закрытии диалога замены.
Last edited by HaRT on Mon 28 Nov, 2016 22:08, edited 2 times in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Mon 28 Nov, 2016 22:32

там в ченжлоге есть, мантис 3051.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Mon 28 Nov, 2016 22:42

zg wrote: мантис 3051
Читаю:
0003051: Вызов ECTL_REDRAW из диалога wrote: Description При управлении редактором из диалога вызываем ECTL_SETPOSITION, затем ECTL_REDRAW.
Проблема в том, что ECTL_REDRAW не перерисовывает часть экрана, закрытую диалогом, и при сдвиге диалога мышью можно наблюдать прежнее (до ECTL_SETPOSITION) содержимое экрана.
Из этого описания никак не следует, что в области окна, занятой редактором должны — пусть и кратковременно — просвечивать панели (а также — предвосхищая возможные домыслы — что в области окна, занятой диалогом, должно — пусть и кратковременно просвечивать то, что под ним). Если Фару надо обновить какие-то свои внутренние буферы изображения — на здоровье, но зачем при этом создавать дискомфортное для пользователя мелькание?!

Так что то, о чём я написал, (промаргивание) — это никакая не фича, а самая что ни на есть бага! И я даже удивлён, что Вы пытаетесь выдать одно за другое.
Last edited by HaRT on Mon 28 Nov, 2016 22:43, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Mon 28 Nov, 2016 22:52

я бы на вашем месте сбавил тон.

User avatar
DrKnS
Posts: 4644
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by DrKnS » Tue 29 Nov, 2016 06:16

Я понимаю, что там происходит и почему оно так, но, действительно, моргание несколько отвлекает.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Tue 29 Nov, 2016 18:55

Такое же промаргивание происходит и при открытии/закрытии меню (например, экранов по F12 или плагинов по F11), что, впрочем, и не странно.

Хуже того, когда открывается меню, например, автодополнения ввода в диалоге поиска, весь редактор точно так же моргает панелями.
Одним словом, печаль.
Last edited by HaRT on Tue 29 Nov, 2016 18:57, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Tue 29 Nov, 2016 22:10

для воспроизведения нужен нетбокс и [x] Allow more than one edited file, все остальные рассуждения про колорер, шрифты, размер консоли, размер строк в редакторе и т.д. — мусор.
как тут видно, netbox в ee_redraw делает ectl_settitle. смотрим в сорцы фара и видим, что ectl_settitle флушит экранный буфер в консоль. т.е. имеем ровно то, что попросили. и у вас два пути, либо попросить автора нетбокса так не делать, либо попросить разработчиков фара (желательно вежливо, а не так, как вы привыкли) что-то сделать флушем в ectl_settitle. по коду видно, что даже автор сомневался в его необходимости. хотя я бы просто так его убирать тоже не стал.
ну и что касается домыслов про 4808 — в очередной раз они ни о чём, просто этот билд много где сделал количество ошибок нечётными.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Tue 29 Nov, 2016 22:24

zg wrote: все остальные рассуждения про колорер, шрифты, размер консоли, размер строк в редакторе и т.д. — мусор
Без них нежелательное поведение гораздо труднее надёжно выявить.
zg wrote: имеем ровно то, что попросили
Спасибо, что разобрались.
zg wrote: желательно вежливо, а не так, как вы привыкли
Это поклёп, и оправдываться я не намерен. Пусть это останется на Вашей совести.
zg wrote: что касается домыслов про 4808
Ошибка проявилась именно в 4809, а утверждений о том, когда она была внесена, я и не делал.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Tue 29 Nov, 2016 22:28

zg wrote: ectl_settitle флушит экранный буфер в консоль
А как это приводит к прорисовке панелей в редакторе?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Tue 29 Nov, 2016 23:00

HaRT wrote: А как это приводит к прорисовке панелей в редакторе?
ee_redraw приходит до отрисовки редактора, а под ним у вас панели, переключитесь в редактор из просмотра, будет просмотр прорисовываться.
Last edited by zg on Tue 29 Nov, 2016 23:02, edited 2 times in total.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Tue 29 Nov, 2016 23:12

zg wrote: ee_redraw приходит до отрисовки редактора
Ага, постепенно проясняется. Спасибо.
zg wrote: что-то сделать флушем в ectl_settitle. по коду видно, что даже автор сомневался в его необходимости. хотя я бы просто так его убирать тоже не стал.
А какие есть соображения, зачем там понадобился flush? И чем чревато его выпиливание?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Wed 30 Nov, 2016 12:10

HaRT wrote:А какие есть соображения, зачем там понадобился flush? И чем чревато его выпиливание?
чтобы заголовок устанавливался сразу.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Промаргивание панелей при перерисовке редактора из-за диалога

Post by HaRT » Wed 30 Nov, 2016 12:27

zg wrote: чтобы заголовок устанавливался сразу
Хм, замысловато.
А сложно ли сделать, чтобы можно было флашить заголовок консоли и собственно экранный буфер по раздельности? И тогда в ECTL_SETTITLE можно было бы не трогать картинку…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5312
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 48 times
Contact:

Промаргивание панелей при перерисовке редактора из-за диалога

Post by zg » Wed 30 Nov, 2016 14:46

это заголовок редактора, не консоли. в принципе при вызове из ee_redraw нет необходимости обновлять сразу, но как всегда вызов ee_redraw почему-то размазан по всему коду.

Post Reply

Return to “Глюки и баги”