Досадная опечатка((

При обновлении с Flex SDK 4.10 до 4.11 выяснилось, что открыть одновременно два (или более) окна с помощью PopUpManager-а не получится. Приложение тут же зависает. Недолгие поиски приводят к ActiveWindowManager#findHighestModalForm:

private function findHighestModalForm():int
{
	var n:int = forms.length;
	var rc:IChildList = systemManager.rawChildren;
	for (var i:int = n - 1; n >= 0; i--)//<--  вот и очепятка,
	{                            // должно быть  i > = 0 видимо
		var f:Object = forms[i];
		if (f is DisplayObject)
		{
			var index:int = rc.getChildIndex(f as DisplayObject);
			if (index > 0)
			{
				var under:DisplayObject = rc.getChildAt(index - 1);
				if (under.name == "modalWindow")
					return i;
			}
		}
	}
	return 0;
}

Гугл подсказывает, что о проблеме уже известно.
Официальный фикс пока отсутствует. Перекомпиливать SDK желание нет, поэтому использую подмененный ActiveWindowManager, благо флексовый Singleton это позволяет.
Update: Во Flex 4.12 этот баг исправлен.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *