CaptainFlint

|
Posted: Tue May 29, 2007 01:34 Post subject: |
|
|
VadiMGP
Есть предложение по TCmenu.
Одна из самых раздражающих "фич": при активной работе, когда мышь двигается быстро, меню появляется не там, где должно. Собственно, предложение разбивается на два:
1. Если после щелчка по кнопке, активирующей TCmenu, я быстро увожу мышь куда-нибудь, меню появляется очень далеко как от изначального положения щелчка, так и от текущего положения курсора мыши. Если первое я ещё могу понять (пока программа загрузится и сможет получить положение указателя, мышь уже успевает сдвинуться), то второе выглядит совсем странно. Чаще всего в этой ситуации меню появляется где-то внизу экрана. Хорошо бы это пофиксить.
2. Более удачной мне кажется следующая идея: запоминать положение кнопки на панели инструментов и показывать меню всегда около неё, независимо от того, куда успела убежать мышь. К сожалению, идеального способа предложить не могу. Вот придуманные мной варианты:
а) Если при щелчке по кнопке нажата какая-нибудь клавиша-модификатор (Shift, скажем, или Ctrl, или просто ScrollLock включён), TCmenu использует текущее положение указателя мыши, чтобы запомнить расположение своей кнопки относительно окна Тотала (пользователь должен гарантировать, что мышь в этой ситуации, действительно, находится там, где кнопка - иначе пусть пеняет на себя). При дальнейших вызовах (без клавиши-модификатора) TCmenu просто отображается в той позиции, что была сохранена ранее. Надо только более чётко продумать поведение, когда в панели Тотала несколько TCmenu-шных кнопок.
б) Гораздо более сложный вариант, но, возможно, более точный: анализировать BAR-файл, открытый Тоталом в данный момент, и на основе его содержимого, а также на основе настроек, считанных из wincmd.ini (таких как размер кнопок) вычислять текущее положение кнопки независимо от положения курсора мыши. Для ускорения работы результаты можно кэшировать, а обновлять их либо при вызове с тем же модификатором (Shift/Ctrl/ScrollLock), либо при изменении даты/времени BAR-файла (считаем, что размеры панелей меняются не так уж и часто: обычно пользователь выбирает самый удобный размер и пользуется только им). _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|