Harbs created FLEX-33414:
----------------------------

             Summary: Null textInput in ComboBox
                 Key: FLEX-33414
                 URL: https://issues.apache.org/jira/browse/FLEX-33414
             Project: Apache Flex
          Issue Type: Bug
          Components: Spark: ComboBox
    Affects Versions: Apache Flex 4.9.0, Adobe Flex SDK Previous
            Reporter: Harbs
            Priority: Minor


commitProperties does a check that textInput in not bull, but at the end of the 
function assumes it's not null:

        // Clear the TextInput because we were programmatically set to 
NO_SELECTION
        // We call this after super.commitProperties because commitSelection 
might have
        // changed the value to NO_SELECTION
        if (selectedIndexChanged && selectedIndex == NO_SELECTION)
            textInput.text = "";


I have a situation where textInput was null and caused an error there.

I propose moving the code up into the scope of the check for textInput like 
this:

    override protected function commitProperties():void
    {        
        // Keep track of whether selectedIndex was programmatically changed
        var selectedIndexChanged:Boolean = _proposedSelectedIndex != 
NO_PROPOSED_SELECTION;
        
        // If selectedIndex was set to CUSTOM_SELECTED_ITEM, and no 
selectedItem was specified,
        // then don't change the selectedIndex
        if (_proposedSelectedIndex == CUSTOM_SELECTED_ITEM && 
            _pendingSelectedItem == undefined)
        {
            _proposedSelectedIndex = NO_PROPOSED_SELECTION;
        }
        
        super.commitProperties();
        
        if (textInput)
        {
            if (maxCharsChanged)
            {
                textInput.maxChars = _maxChars;
                maxCharsChanged = false;
            }
            
            if (promptChanged)
            {
                textInput.prompt = _prompt;
                promptChanged = false;
            }
            
            if (restrictChanged)
            {
                textInput.restrict = _restrict;
                restrictChanged = false;
            }
            
            if (typicalItemChanged)
            {
                if (typicalItem != null)
                {
                    var itemString:String = LabelUtil.itemToLabel(typicalItem, 
labelField, labelFunction);
                    textInput.widthInChars = itemString.length;
                }
                else
                {
                    // Just set it back to the default value
                    textInput.widthInChars = 10; 
                }
                
                typicalItemChanged = false;
            }
            // Clear the TextInput because we were programmatically set to 
NO_SELECTION
            // We call this after super.commitProperties because 
commitSelection might have
            // changed the value to NO_SELECTION
            if (selectedIndexChanged && selectedIndex == NO_SELECTION)
                textInput.text = "";
        }
        
    }    


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to