Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 7978 - СБИС - всплывающие подсказки не видны   Make a simular bug
Summary: СБИС - всплывающие подсказки не видны
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Окна / фокус / перерисовка (show other bugs)
Version: unspecified
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Сергей Гуральник
QA Contact: Svetlana Zhukova
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 502
  Show dependency treegraph
 
In work:
Reported: 2011-12-22 16:44 MSK by Svetlana Zhukova
Modified: 2012-02-12 14:02 MSK (History)
4 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
Тест TTM_ADJUSTRECT (2.77 KB, application/octet-stream)
2012-01-23 17:02 MSK, Сергей Гуральник
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Svetlana Zhukova 2011-12-22 16:44:37 MSK
СБИС 2.4.43
Например ФНС - отчет  в списке, слева красный восклицательный знак.Или на пиктограмму здес же в шапке таблицы списка. При наведении мышкой мелькает подсказка.
В консоли:
err:tooltips:TOOLTIPS_WindowProc unknown msg 041f wp=00000001 lp=0032d358

посмотреть можно тут:eterhack bottle sbis/2.4.43
2.0.0-eter0.17/7
Comment 1 Сергей Гуральник 2012-01-23 14:24:13 MSK
Необработанное сообщение: 041F => WM_USER + 31 => TTM_ADJUSTRECT В TOOLTIPS_WndProc действительно отсутствует case TTM_ADJUSTRECT:
Comment 2 Сергей Гуральник 2012-01-23 15:06:12 MSK
Пробуем написать тест с использованием TTM_ADJUSTRECT. Тест собран MS VC 8.0. В консоли появляется сообщение о неизвестном сообщении. Возможно мерцание вызвано некорректным результатом, который возвращается после посылки TTM_ADJUSTRECT.
Comment 3 Сергей Гуральник 2012-01-23 17:02:25 MSK
Created attachment 2398 [details]
Тест TTM_ADJUSTRECT

Отсылает TTM_ADJUSTRECT к tooltip'у и отображает подсказку в указанном месте. Интересно, что под WinXP, w2k наблюдаются такие же мерцания как и под Wine.
Comment 4 Сергей Гуральник 2012-01-23 17:05:56 MSK
Мерцание подсказок наблюдается только в том случае, если после ее появления она оказывается под курсором. Например, если подвести указатель к нижнему краю пиктограммы колонки "Вид" в ФНС, то подсказка всплывает выше указателя и ведет себя нормально. Если же на нее поместить указатель, то она становится мерцающей.
Comment 5 Сергей Гуральник 2012-01-23 18:59:51 MSK
Создание обработчика TTM_ADJUSTRECT не убирает мерцание. Очевидно, проблема в логике работы таймеров или контроле текущего tool'a.
Comment 6 Сергей Гуральник 2012-01-24 13:26:19 MSK
При отображении подсказка позиционируется самим приложением, причем так, что курсор оказывается над ней. Подсказка сразу же получает WM_MOUSEMOVE и исчезает. Tool, видимо был создан с TTF_SUBCLASS, а это заставляет вызывать TOOLTIPS_RelayEvent как только подсказка исчезнет (Ведь tool сразу же получит WM_MOUSEMOVE). Как результат - новая попытка отображения подсказки, которая вновь исчезнет и т.д.
Comment 7 Сергей Гуральник 2012-01-24 13:33:13 MSK
Нужно скрывать подсказку только тогда, когда курсор пересекает ее границу и двигается внутрь подсказки.
Comment 8 Сергей Гуральник 2012-01-25 17:02:21 MSK
Если оставить курсор на tool'e и пошевелить им после исчезновения подсказки, то она вновь появляется. В то же время под Windows такого не наблюдается.
Comment 9 Сергей Гуральник 2012-01-25 21:19:59 MSK
Добавлен обработчик TTM_ADJUSTRECT.
Comment 10 Сергей Гуральник 2012-01-26 16:13:08 MSK
При работе СБИС под Windows подсказкам отправляется WM_MOUSEMOVE, но оно не заставляет их скрыться в отличие от Wine.Возможно происходит перехват сообщения.
Comment 11 Сергей Гуральник 2012-01-26 19:10:08 MSK
СБИС проводит сабклассинг для подсказок, но при этом некоторые WM_MOUSEMOVE передаются системной процедуре, которая тут же скрывает подсказки. Возможно под Wine вызовы старой и новой оконных процедур происходят не корректно
Comment 12 Сергей Гуральник 2012-01-30 15:56:11 MSK
В TOOLTIPS_SubclassProc обнаружен недочет. Сообщение от мыши передается непосредственно обработчику TOOLTIPS_RelayEvent. При сабклассинге tooltip'a это может вызвать проблемы, т.к. ожидается отправка соответствующего TTM_RELAYEVENT. Вызов TOOLTIPS_RelayEvent заменен на SendMessage.
Comment 13 Сергей Гуральник 2012-01-30 20:28:20 MSK
Мерцание устранено.
Comment 14 Александр Морозов 2012-02-01 22:09:27 MSK
Выставляю "Исправлена"
Comment 15 Svetlana Zhukova 2012-02-12 14:02:20 MSK
Отлично!
eterhack bottle sbis/8142
Comment 16 Svetlana Zhukova 2012-02-12 14:02:50 MSK
2.0.0-eter2.13/8