Quote:
Всегда нужно принудительно в 0 устанавливать (во всех случаях кроме того который задуман для значения 1), иначе иногда окно перестает перемещаться. Когда еще столкнулся на zSea долго выяснял в чем фишка - вылезло почему то после очередного рефакторинга GUI ядра. Теперь вот в последней ночной сборке тоже заметил - стоит один раз окно KIV перетащить и все больше не таскается. Вероятно есть еще некоторые программы в которых это может проявиться.
Так к сведению тех кто встретится с таким загадочным поведением окон приложений.
Изучение вопроса показало, что:
- в документации сказано, что значения esi и edi "предназначены для окон типа I и II и игнорируются для стилей Y=1,3";
- эти значения действительно не имеют смысл для окон со скином, за исключением Y в esi;
- kiv, соответственно, просто не инициализирует esi (возможно, какие-нибудь другие приложения тоже не тратят усилий на лишний регистр), в результате чего там оказывается мусор;
- до рефакторинга код проверял всю тетраду Y, текущее ядро - только младший бит;
- соответственно, вероятность того, что в мусорном значении вся тетрада равна единице, существенно меньше вероятности того, что один конкретный бит окажется установленным.
Видимо, более правильно всё-таки требовать от приложений установки esi даже при использовании окон со скином.