Bug 4405

Summary: Консультант плюс: диалог 'быстрый поиск', метла.
Product: WINE@Etersoft Reporter: Суворов Юрий <sua>
Component: Окна / фокус / перерисовкаAssignee: Сергей Гуральник <serhio>
Status: CLOSED FIXED QA Contact: Svetlana Zhukova <svzhu>
Severity: enhancement    
Priority: P4 CC: dtimoshkov, lav, sonner
Version: 1.0.11   
Target Milestone: ---   
Hardware: PC   
OS: Ubuntu   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 8740    
Bug Blocks: 3000, 767    
Attachments: Тест #1
Тест для просмотра реакции на WM_WINDOWPOSCHANGED

Description Суворов Юрий 2009-11-05 11:00:48 MSK
в диалоге "быстрый поиск" есть только одно поле ввода с выпадающим списком истории поиска. рядом с кнопкой комбобокса должна быть пиктограмма метёлки очищающей поле ввода.

в windows метла показывается постоянно и адекватно реагирует на нажатие - очищает поле.

в linux, метла появляется только при разворачивании комбобокса. нажать её невозможно.



обнаружено при административной установке.
в неадминистративной не проверялось.
winediag: проблемы не обнаружены.
установлен ie6.
ubuntu 9.04 2.6.28-15-generic gnome
-eter-9/5
K+ сетевая через cifs, v 4000.00.11 сборка 16289
Comment 1 Денис Баранов 2009-11-22 14:42:13 MSK
Проверить.
Обязательно в режиме административном и обычном режиме.
Comment 2 Денис Баранов 2009-11-22 14:48:39 MSK
WINE@Etersoft 1.0.11 eter11/eter6

Проблема воспроизводится. Пиктограмма появляется только если выпадающее меню вызвать. И не работает функционал, т.е. не нажимается (по нажатии должна очищаться строка ввода)
Comment 3 Глеб Кордюков 2010-10-13 14:24:10 MSD
1.0.12-eter7.19/14
Пиктограмма появляется только если выпадающее меню
вызвать. И работает, если нажав на выпадающее меню, сместить курсор на "метлу" (с зажатой кнопкой мыши).
Comment 4 Vitaly Lipatov 2012-01-18 03:11:30 MSK
Откладываем, bugs@ в ближайшее время делать ничего не будет.
Comment 5 Vitaly Lipatov 2012-05-29 11:42:44 MSK
Надо проверить на 2.0
Comment 6 Vitaly Lipatov 2012-05-29 11:44:50 MSK
*** Bug 6933 has been marked as a duplicate of this bug. ***
Comment 7 Svetlana Zhukova 2012-06-05 15:56:50 MSK
Воспроизводится до сих пор.
ALTLinux6 stand NX
снимок "консультант настроен"

WINE@Etersoft Network 2.0.2-eter5/1

(В ответ на comment #0)

> в linux, метла появляется только при разворачивании комбобокса. нажать её
> невозможно.
В точности.
Comment 8 Svetlana Zhukova 2012-06-05 16:10:41 MSK
Сделала бутылку
wine@eter-2 bottle kons/demo
WINE@Etersoft SQL 2.0.2-eter5/1
Здесь демо версия консультанта.
Видно краешек метелки (она прячется за кнопкой со стрелкой).
Comment 9 Сергей Гуральник 2012-06-12 11:38:29 MSK
Наблюдается и для wine-pure
Comment 10 Сергей Гуральник 2012-06-20 14:39:41 MSK
Метелка рисуется прямо на поверхности комбобокса, просто в Wine размер Edit'a настолько велик, что видно только правый край метелки. Причем, если попасть на него мышью, то можно очистить поле редактирования. Т.е. тут все впорядке.
Comment 11 Сергей Гуральник 2012-06-21 17:41:04 MSK
Wine всегда растягивает edit до самой кнопки комбобокса, не позволяя пользователю задавать произвольный размер для edit'а
Comment 12 Сергей Гуральник 2012-06-22 09:59:56 MSK
Есть предположение, что WM_WINDOWPOSCHANGED обрабатывается не совсем корректно. Нужно изучить как происходит обработка под Windows.
Comment 13 Сергей Гуральник 2012-06-22 14:35:55 MSK
Created attachment 2530 [details]
Тест #1
Comment 14 Сергей Гуральник 2012-06-22 14:43:52 MSK
Для Windows https://bugs.etersoft.ru/attachment.cgi?id=2530 дает следующий результат:

got WM_WINDOWPOSCHANGED, pass to old proc
got WM_SIZE
WM_WINDOWPOSCHANGED has handled
got WM_WINDOWPOSCHANGED, pass to old proc
got WM_SIZE
WM_WINDOWPOSCHANGED has handled
...

Т.е. системная оконная процедура для комбобокса посылает WM_SIZE при обработке WM_WINDOWPOSCHANGED. Wine такого не делает, поэтому процедура внутри Консультанта
не получает WM_SIZE и, как следствие, не корректирует размер edit'a.
Comment 18 Сергей Гуральник 2012-06-26 21:09:45 MSK
Провел небольшое исследование реакции системной оконной процедуры комбобокса на WM_WINDOWPOSCHANGED. Получилось следующее: при обработке этого сообщения оконная процедура шлет WM_MOVE а затем WM_SIZE, причем такая реакция наблюдается практически для всех испытанных комбинаций флагов в WINDOWPOS struct независимо от того является ли окно скрытым или запрещенным. Изменить эту последовательность можно только установкой SWP_NOCLIENTMOVE и/или SWP_NOCLIENTSIZE.
Comment 19 Сергей Гуральник 2012-06-26 21:23:50 MSK
Created attachment 2533 [details]
Тест для просмотра реакции на WM_WINDOWPOSCHANGED
Comment 22 Сергей Гуральник 2012-06-27 13:30:29 MSK
Получается, что решение заключается в замене /* fall through */ --> break; 
Меня все же несколько смущают комментарии к case WM_WINDOWPOSCHANGED:, а именно
/* we should not force repainting on WM_WINDOWPOSCHANGED, it breaks
 * Z-order based painting.
 */
Comment 23 Dmitry Timoshkov 2012-06-27 13:34:56 MSK
(В ответ на comment #22)
> Получается, что решение заключается в замене /* fall through */ --> break; 

Если это не сломает существующих тестов.

> Меня все же несколько смущают комментарии к case WM_WINDOWPOSCHANGED:, а именно
> /* we should not force repainting on WM_WINDOWPOSCHANGED, it breaks
>  * Z-order based painting.
>  */

Этот комментарий был добавлен мной еще во времена Царя Гороха, в этом месте
был код отрисовки, и он что-то ломал. В общем этот комментарий к делу не
относится.
Comment 24 Сергей Гуральник 2012-06-29 09:57:01 MSK
Отправленный в winehq тест не приняли, так как 
> It doesn't make much sense to send this message directly.
(http://www.winehq.org/pipermail/wine-devel/2012-June/096135.html)
Наверное стоит выслать патч с добавленным тестом вместе с исправлением которое убирает todo.

(В ответ на comment #23)
> (В ответ на comment #22)
> > Получается, что решение заключается в замене /* fall through */ --> break; 
> 
> Если это не сломает существующих тестов.

make combo.ok и make msg.ok выполняются без ошибок. Правда, в msg.c проверялась только test_combobox_messages(). Остальные пришлось отключить, т.к. где-то происходил вызов XRenderCreateLinearGradient() приводящий к ошибке X Window.
Думаю можно считать, что это ничего не слоиало.
Comment 26 Сергей Гуральник 2012-06-29 14:24:17 MSK
Сделал тест для winehq.
http://www.winehq.org/pipermail/wine-patches/2012-June/115710.html
Comment 27 Сергей Гуральник 2012-07-03 13:20:00 MSK
Подправил тест, отправил вновь.
http://www.winehq.org/pipermail/wine-patches/2012-July/115822.html
Comment 28 Сергей Гуральник 2012-07-05 00:13:53 MSK
(В ответ на comment #27)
> Подправил тест, отправил вновь.
> http://www.winehq.org/pipermail/wine-patches/2012-July/115822.html

Тест приняли. Отправил исправление в winehq. Решение оказалось чуть сложнее чем предполагалось ранее.
http://www.winehq.org/pipermail/wine-patches/2012-July/115881.html
Comment 29 Сергей Гуральник 2012-07-16 17:25:54 MSK
Патч до сих пор в очереди. Решил добавить еще один тест и отправить вновь. Этот тест показал некорректность отправленного исправления. Тест отправил http://www.winehq.org/pipermail/wine-patches/2012-July/116269.html, работаю над новым вариантом исправления.
Comment 30 Сергей Гуральник 2012-07-17 16:23:05 MSK
Непонятна ситуация когда высота комбобокса устанавливается в оригинальное значение. При этом в последовательности сообщений возникает WM_WINDOWPOSCHANGING источник которого неясен.
Comment 39 Сергей Гуральник 2012-07-27 12:18:00 MSK
Отправил в eterhack.
Comment 42 Svetlana Zhukova 2012-07-28 23:20:40 MSK
Сделала новую бутылку 
wine@eter-2 bottle bugs/44
WINE@Etersoft SQL 2.0.2-eter13/3
с демо-версией , здесь метелка все еще прячется. 
Для ALTLinux6 в testing лежит версия wine от 25 июля. Можно ли уточнить, в какой именно версии исправление?
Comment 43 Сергей Гуральник 2012-07-30 16:15:08 MSK
(В ответ на comment #42)
> Сделала новую бутылку 
> wine@eter-2 bottle bugs/44
> WINE@Etersoft SQL 2.0.2-eter13/3
> с демо-версией , здесь метелка все еще прячется. 
> Для ALTLinux6 в testing лежит версия wine от 25 июля. Можно ли уточнить, в
> какой именно версии исправление?

Сейчас исправление есть только в ветке eterhack (например: WINE@Etersoft SQL 1.5.8/2.0.2-eter17/3). В ветку eter-2.0.0 оно должно попасть при ближайшей синхронизации с WineHQ. Думаю тогда можно будет и проверить.
Comment 47 Сергей Гуральник 2012-07-30 18:02:40 MSK
Чуть откорректировал и отправил в eter-2.0.0. Решение закоммичено. Думаю можно проверять.
Comment 58 Сергей Гуральник 2012-09-10 08:52:58 MSK
Патч появился в eter-2.0.0
(WINE@Etersoft SQL 2.0.2/2.0.1-eter15/4)
Comment 59 Svetlana Zhukova 2012-10-05 11:29:01 MSK
Апдейтила бутылку,после чего консультант нее запускается или падает при запуске в bugs/4405
в новой бутылке 4405-1 аналогично.
 wine CONS.EXE 
err:usbhub:initialize_usbhub failed to initialize libusb
fixme:dc:DeleteDC not deleting busy DC 0x8d8 refcount 2
err:graphics:USER_CheckNotLock BUG: holding USER lock
err:graphics:USER_CheckNotLock BUG: holding USER lock
fixme:resource:GetGuiResources (0xfc,0): stub
wine: Unhandled exception 0x80000003 at address 0x7ef849ec (thread 0034), starting debugger...
err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7ef5883e
При повторном запуске-падение. Дистрибутив в порядке-проверила на windows. 
Создаю багу.8740
Comment 61 Svetlana Zhukova 2012-10-05 11:49:01 MSK
Удалила обе бутылки 4405 и 4405-1. 
Переустановила wine в eter-2.0
создала заново bugs/4405
Не помогло.
Comment 65 Svetlana Zhukova 2012-10-06 10:17:10 MSK
Странная проблема,проявляется только если запускать в моей консоли. 
Установила wine из testing на ALTlinux standNX. Если напрямую на машине запускать - программа нормально запускается, но,видимо,в сборку testing патч,исправляющий метлу, не вошел. Снимок "консультант-метла"
Comment 66 Svetlana Zhukova 2012-10-09 15:25:55 MSK
обновила свой локальный реп. 2.0.0
все корректно.