Вызов ECTL_REDRAW из диалога

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Вызов ECTL_REDRAW из диалога

Post by Shmuel »

При управлении редактором из диалога вызываем ECTL_SETPOSITION, затем ECTL_REDRAW.
Проблема в том, что ECTL_REDRAW не перерисовывает часть экрана, закрытую диалогом, и при сдвиге диалога мышью можно наблюдать прежнее (до ECTL_SETPOSITION) содержимое экрана.
1. Это нормально или баг?
2. Как лечить?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Вызов ECTL_REDRAW из диалога

Post by zg »

Shmuel wrote:1. Это нормально или баг?
это баг. даже скорее недоделка.
Shmuel wrote:2. Как лечить?
удалить class SaveScreen и переписать нормально те участки кода, которые его используют.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Вызов ECTL_REDRAW из диалога

Post by Shmuel »

zg wrote:
Shmuel wrote:2. Как лечить?
удалить class SaveScreen и переписать нормально те участки кода, которые его используют.
Поскольку неизвестно, когда это будет сделано, нашёл обходной путь: вызываю DM_SHOWDIALOG(0) до перерисовки редактора и DM_SHOWDIALOG(1) - после.

Mantis: http://bugs.farmanager.com/view.php?id=3051
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Вызов ECTL_REDRAW из диалога

Post by John Doe »

Столкнулся с той же проблемой, и могу добавить некоторые детали:
Shmuel wrote: При управлении редактором из диалога вызываем ECTL_SETPOSITION
То же самое, если изменить текст другим образом.
Shmuel wrote: при сдвиге диалога мышью можно наблюдать прежнее (до ECTL_SETPOSITION) содержимое экрана.
То же при использовании DM_MOVEDIALOG.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Вызов ECTL_REDRAW из диалога

Post by Shmuel »

Shmuel wrote: нашёл обходной путь: вызываю DM_SHOWDIALOG(0) до перерисовки редактора и DM_SHOWDIALOG(1) - после.
1. Сегодня обнаружил весьма странное и непонятное мне явление: если файл в редакторе открыт из архива, то это "временное прятание" диалога приводит к тому, что выделение, сделанное при спрятанном диалоге, становится невидимым.

2. Если диалог не прятать, всё нормально.

3. Если файл открыт не из архива, всё нормально.

Даже не знаю, как это всё связать.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Вызов ECTL_REDRAW из диалога

Post by Shmuel »

Явление, описанное в предыдущем сообщении, можно воспроизвести следующим макросом:
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Вызов ECTL_REDRAW из диалога

Post by Shmuel »

Проверка разных билдов Фара показала, что это сломалось в 4173.
(Речь о поведении редактора при открытии файла из архива).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Вызов ECTL_REDRAW из диалога

Post by Shmuel »

Проблема неперерисовки "файла, открытого из архива" проявляется в любом модальном редакторе.

zg, насколько я понимаю, это то изменение в manager.cpp, где стоит коммент
//если одно из окон заблокировано, большого смысла в перерисовке пока нет.
Может откатишь этот кусок?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Вызов ECTL_REDRAW из диалога

Post by zg »

Shmuel wrote:Даже не знаю, как это всё связать.
там баг. в немодальном редакторе тоже не должно перерисовываться.
Shmuel wrote:Может откатишь этот кусок?
что именно там нужно откатить?
Post Reply

Return to “Разработка плагинов”