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

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

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

Post by Shmuel » Sun 02 Aug, 2015 00:50

При управлении редактором из диалога вызываем ECTL_SETPOSITION, затем ECTL_REDRAW.
Проблема в том, что ECTL_REDRAW не перерисовывает часть экрана, закрытую диалогом, и при сдвиге диалога мышью можно наблюдать прежнее (до ECTL_SETPOSITION) содержимое экрана.
1. Это нормально или баг?
2. Как лечить?

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

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

Post by zg » Sun 02 Aug, 2015 01:07

Shmuel wrote:1. Это нормально или баг?
это баг. даже скорее недоделка.
Shmuel wrote:2. Как лечить?
удалить class SaveScreen и переписать нормально те участки кода, которые его используют.

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Sun 02 Aug, 2015 07:07

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: 11415
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sat 08 Aug, 2015 10:59

Столкнулся с той же проблемой, и могу добавить некоторые детали:
Shmuel wrote: При управлении редактором из диалога вызываем ECTL_SETPOSITION
То же самое, если изменить текст другим образом.
Shmuel wrote: при сдвиге диалога мышью можно наблюдать прежнее (до ECTL_SETPOSITION) содержимое экрана.
То же при использовании DM_MOVEDIALOG.

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Fri 25 Sep, 2015 20:45

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

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

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

Даже не знаю, как это всё связать.

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Sat 26 Sep, 2015 22:30

Явление, описанное в предыдущем сообщении, можно воспроизвести следующим макросом:

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Sun 27 Sep, 2015 07:06

Проверка разных билдов Фара показала, что это сломалось в 4173.
(Речь о поведении редактора при открытии файла из архива).

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Mon 28 Sep, 2015 15:32

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

zg, насколько я понимаю, это то изменение в manager.cpp, где стоит коммент
//если одно из окон заблокировано, большого смысла в перерисовке пока нет.
Может откатишь этот кусок?

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

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

Post by zg » Mon 05 Oct, 2015 00:54

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

Post Reply

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