Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
Apache Flex 4.12.0
Description
Steps to reproduce [DropDownList]:
1. Import and run the project called "_DropDownListListeningTooMuch.fxp".
2. Click on the dropdown and select an item.
3. Right click on the dropdown, which removes it from stage.
4. Press UP/DOWN.
Actual behaviour: the dropdown's _proposedSelectedIndex keeps changing, showing the dropdown is still acting on keyboard events.
Desired behaviour: once it's off stage, the dropdown should not react to keyboard - or any other - events.
Notes:
-the same behaviour can be made visible by placing a breakpoint in DropDownListBase.keyDownHandler after step 3.
-the dropdown stops reacting to keyboard events when it's removed directly, as opposed to when its parent group is removed.
-I noticed that UIComponent adds event listeners for KEY_DOWN, KEY_UP, FOCUS_IN and FOCUS_OUT, but never removes them. Is the expectation that components themselves will remove these listeners when they're off stage, or is it an omission?
-It feels like this issue has memory management implications, though I'm not too sure.
Steps to reproduce [NumericStepper]:
1. Import and run the project called "_NumericStepperListListeningTooMuch.fxp".
2. Click on the numeric stepper.
3. Right click on the numeric stepper, which removes it from stage.
4. Press UP/DOWN.
Actual behaviour: the numeric stepper's value keeps changing, showing it's still acting on keyboard events.
Desired behaviour: once it's off stage, the numeric stepper should not react to keyboard - or any other - events.
Steps to reproduce [TextInput]:
1. Import and run the project called "_TextInputListeningTooMuch.fxp".
2. Type something in the text input.
3. Right click on the text input, which removes it from stage.
4. Continue typing.
Actual behaviour: the the text input's contents keep changing, showing it's still acting on keyboard events.
Desired behaviour: once it's off stage, the text input should not react to keyboard - or any other - events.