Summary: | СБИС - всплывающие подсказки не видны | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Svetlana Zhukova <svzhu> |
Component: | Окна / фокус / перерисовка | Assignee: | Сергей Гуральник <serhio> |
Status: | CLOSED FIXED | QA Contact: | Svetlana Zhukova <svzhu> |
Severity: | minor | ||
Priority: | P4 | CC: | amorozov, baraka, kondratyuk, lav |
Version: | unspecified | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 502 | ||
Attachments: | Тест TTM_ADJUSTRECT |
Description
Svetlana Zhukova
2011-12-22 16:44:37 MSK
Необработанное сообщение: 041F => WM_USER + 31 => TTM_ADJUSTRECT В TOOLTIPS_WndProc действительно отсутствует case TTM_ADJUSTRECT: Пробуем написать тест с использованием TTM_ADJUSTRECT. Тест собран MS VC 8.0. В консоли появляется сообщение о неизвестном сообщении. Возможно мерцание вызвано некорректным результатом, который возвращается после посылки TTM_ADJUSTRECT. Created attachment 2398 [details]
Тест TTM_ADJUSTRECT
Отсылает TTM_ADJUSTRECT к tooltip'у и отображает подсказку в указанном месте. Интересно, что под WinXP, w2k наблюдаются такие же мерцания как и под Wine.
Мерцание подсказок наблюдается только в том случае, если после ее появления она оказывается под курсором. Например, если подвести указатель к нижнему краю пиктограммы колонки "Вид" в ФНС, то подсказка всплывает выше указателя и ведет себя нормально. Если же на нее поместить указатель, то она становится мерцающей. Создание обработчика TTM_ADJUSTRECT не убирает мерцание. Очевидно, проблема в логике работы таймеров или контроле текущего tool'a. При отображении подсказка позиционируется самим приложением, причем так, что курсор оказывается над ней. Подсказка сразу же получает WM_MOUSEMOVE и исчезает. Tool, видимо был создан с TTF_SUBCLASS, а это заставляет вызывать TOOLTIPS_RelayEvent как только подсказка исчезнет (Ведь tool сразу же получит WM_MOUSEMOVE). Как результат - новая попытка отображения подсказки, которая вновь исчезнет и т.д. Нужно скрывать подсказку только тогда, когда курсор пересекает ее границу и двигается внутрь подсказки. Если оставить курсор на tool'e и пошевелить им после исчезновения подсказки, то она вновь появляется. В то же время под Windows такого не наблюдается. Добавлен обработчик TTM_ADJUSTRECT. При работе СБИС под Windows подсказкам отправляется WM_MOUSEMOVE, но оно не заставляет их скрыться в отличие от Wine.Возможно происходит перехват сообщения. СБИС проводит сабклассинг для подсказок, но при этом некоторые WM_MOUSEMOVE передаются системной процедуре, которая тут же скрывает подсказки. Возможно под Wine вызовы старой и новой оконных процедур происходят не корректно В TOOLTIPS_SubclassProc обнаружен недочет. Сообщение от мыши передается непосредственно обработчику TOOLTIPS_RelayEvent. При сабклассинге tooltip'a это может вызвать проблемы, т.к. ожидается отправка соответствующего TTM_RELAYEVENT. Вызов TOOLTIPS_RelayEvent заменен на SendMessage. Мерцание устранено. Выставляю "Исправлена" Отлично! eterhack bottle sbis/8142 2.0.0-eter2.13/8 |