Mesqalito Posted September 25, 2010 Share Posted September 25, 2010 После нескольких последних обновлений аддонов начал наблюдать сей прискорбный баг: местоположение аддонов не сохраняется при переключении окна(Alt+Tab) и при переходе в экранный режим(Alt+Enter). Сразу скажу, что разрешение в игре(в фулскрин) равно разрешению рабочего стола. Причем раннее этого не наблюдалось. Есть подозрения, что бага вызвана недавними фиксами драг-н-дропа. Багу подвержены следующие аддоны: PhanTime (расположен в правом верхнем углу экрана) HonorInfo (в левом верхнем углу экрана) Quote Link to comment Share on other sites More sharing options...
SLA Posted September 28, 2010 Share Posted September 28, 2010 Quote: бага вызвана недавними фиксами драг-н-дропа. Да, именно так. В коде библиотеки LibDnD есть такое свойство: когда меняется резолюция экрана, все зарегистрированные перетаскиваемые виджеты, которые, в результате смены резолюции, частично или полностью должны скрыться с экрана, принудительно "возвращаются" в пределы экрана новой резолюции. Сделано это для того, чтобы при переключении, например, с резолюции 16:9 на 4:3, окна аддонов, находящиеся у правого края экрана, НЕ исчезли из поля видимости, а были передвинуты в видимую область экрана.Беда в том, что при нажатии ALT+TAB, в момент переключения из Виндовс в игру, в игре ВСЕГДА меняется резолюция, причём, дважды. К сожадению, ДАЖЕ если резолюции экрана в Виндовс и в АО совпадают. Выглядит это так: первая смена резолюции происходит потому, что экран игры уже показан, а панель задач (taskbar) Виндовс ещё НЕ скрыт -- происходит перерасчёт позиций и размеров всех виджетов и шрифтов в игре, под эту "новую" резолюцию, которая просто короче на 30 пикселей в высоту (ширина таксбара Виндовс). Затем, таскбар скрывается, и происходит ещё одна смена резолюции, снова перерасчёт позиций и размеров всех виджетов и шрифтов, в этот раз, на НОРМАЛЬНУЮ резолюцию игры. Если бы разработчики починили этот баг, то вместо ДВУХ пересчётов резолюции, могло бы НЕ БЫТЬ НИ ОДНОГО - НОЛЬ. И Alt+Tab происходил бы вообще МГНОВЕННО.Что происходит в библиотеке LibDnD. При первом пересчёте она видит, что окна аддонов, придвинутых к самому правому и/или нижнему краю экрана, немного "не влезают" в новую резолюцию (которая стала чуть-чуть меньше), и пододвигает их чуть левее и/или выше. Затем, вторая смена резолюции (на чуть-чуть бОльшую), и LibDnD видит, что в этот раз виджеты прекрасно влезают в новую резолюцию, и ничего не трогает.ЛекарствоВ общем, я починил LibDnD, чтобы он обходил этот баг АО, и аддоны НЕ "прыгали"... Зайди в тему HOW-TO: LibDnD.lua (Библиотека Drag&Drop), скачай SampleLibDnD_2010-09-28.zip (аттачмент внизу первого сообщения), вытащи оттуда файл LibDnD.lua, и положи его в папки аддонов PhanTime и HonorInfo. Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 28, 2010 Author Share Posted September 28, 2010 Работает, спасибо! Кстати, аддон DarkDPSMeter, как я понял, вообще не использует библиотеку libDnD и у него похожее поведение. Quote Link to comment Share on other sites More sharing options...
SLA Posted September 28, 2010 Share Posted September 28, 2010 Использует. Она у него "зашита" в файл Scripts\AOClassLibrary.lua, цельным куском. Нужно просто сделать Copy-Paste, заменив старый код на новый. В следующем обновлении DarkDPSMeter, само собой, этот код будет обновлён. Ещё, LibDnD используется в AoSimpleCoords и GuildGui1b. Quote Link to comment Share on other sites More sharing options...
Recommended Posts