Yeah, and this bug appeared just recently. Is it related with Flash
Player 9.0.28 changes or with FlexBuilder 2.0.1 hard to tell.
Everything worked as it is without crashes before.
R.
On 1/18/07, Roman Protsiuk [EMAIL PROTECTED] wrote:
Hi, everyone.
As I understand in order to properly handle focusOut event for my
component it should implement IFocusManagerComponent. The component I
develop is a pop-up window. Then strange and very unpleasant bug
appear. After I set focus to one of my components child and after I
click a button on it to close it browser crashes (firefox, ie).
I don't know what to say more. Here's example. Simply clicking close
me crashes browser. Totally confused.
PopUpWindow.mxml:
?xml version=1.0 encoding=utf-8?
mx:TitleWindow xmlns:mx=http://www.adobe.com/2006/mxml;
layout=absolute
width=400
height=300
implements=mx.managers.IFocusManagerComponent
defaultButton={mainButton}
mx:Button id=mainButton
horizontalCenter=0
verticalCenter=0
label=close me
click=onMainButtonClick() /
mx:Button label=fake /
mx:Script
![CDATA[
import mx.core.UIComponent;
import mx.managers.PopUpManager;
public function showPopUp(parent : UIComponent) :
void {
PopUpManager.addPopUp(this, parent);
PopUpManager.centerPopUp(this);
setFocus();
}
public function hidePopUp() : void {
PopUpManager.removePopUp(this);
}
public override function setFocus() : void {
super.setFocus();
mainButton.setFocus();
}
protected override function focusOutHandler(event :
FocusEvent) : void {
if (event.relatedObject == null ||
!contains(event.relatedObject)) {
hidePopUp();
}
super.focusOutHandler(event);
}
private function onMainButtonClick() : void {
hidePopUp();
dispatchEvent(new Event(Event.CLOSE));
}
]]
/mx:Script
/mx:TitleWindow
popUpSample.mxml:
?xml version=1.0 encoding=utf-8?
mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
layout=absolute
creationComplete=onCreationComplete()
mx:Button id=clickButton
horizontalCenter=0
verticalCenter=0
label=click me
click=onButtonClick() /
mx:Button label=fake /
mx:Script
![CDATA[
public override function setFocus() : void {
super.setFocus();
clickButton.setFocus();
}
private function onCreationComplete() : void {
_popUp = new PopUpWindow();
_popUp.addEventListener(Event.CLOSE,
onPopUpClose);
}
private function onButtonClick() : void {
_popUp.showPopUp(this);
}
private function onPopUpClose(event : Event) : void {
//clickButton.setFocus();
}
private var _popUp : PopUpWindow;
]]
/mx:Script
/mx:Application
The only thought i have: it's because focus is lost (it stays in
pop-up) when pop-up is removed and the lost focus is unacceptable for
flash player. So I added clickButton.setFocus() on close. But if i do
it before removePopUp then PopUpWindws focusOutHandler removes it. Why
do i need to call it manually anyway? :/ And if i do it after calling
removePopUp then situation remains the same, browser crashes, not
surprisingly.
Any help highly appreciated.
R.