[ 
https://issues.apache.org/jira/browse/FLEX-34222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15010903#comment-15010903
 ] 

Tamás Nepusz commented on FLEX-34222:
-------------------------------------

I'm probably a bit late to the party here but here's an analysis of the problem 
the way I understand it.

In {{ComboBox.as}}, there is a branch in {{setSelectedIndex()}} that 
force-updates the text shown in the text field *if* {{userTypedIntoText && 
value == selectedIndex}}, probably to cater for cases when the user types some 
text into the combo box and then changes her mind and decides to select the 
entry corresponding to the old selection (that was active before she started 
typing). In this case, we have to update the text field to ensure that the 
selected value is shown there (since {{setSelectedIndex()}} in {{ListBase}} 
will short-circuit because the selected index stayed the same).

The problem is that this is done even when the old and the new selected index 
are both {{CUSTOM_SELECTED_ITEM}} - in that case, we should *not* update the 
label display from the *current* selected item (which has not been updated 
based on the new text entered into the text field yet).

It is not trivial to work around this without modifying {{ComboBox.as}} - my 
approach uses a private flag named {{_preventLabelDisplayUpdates}} that is set 
to {{true}} when {{setSelectedIndex}} is called with {{CUSTOM_SELECTED_ITEM}} 
and the current {{selectedIndex}} is also equal to {{CUSTOM_SELECTED_ITEM}}. I 
also had to override {{updateLabelDisplay}} (which is luckily not {{private}} 
but {{mx_internal}}) to check this flag and return immediately (after clearing 
the flag) if the flag is set.

This seemed to do the trick for me but I don't know whether it breaks any test 
cases or not.

> Entering values into ComboBox not present in dataProvider does not work
> -----------------------------------------------------------------------
>
>                 Key: FLEX-34222
>                 URL: https://issues.apache.org/jira/browse/FLEX-34222
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Spark: ComboBox
>    Affects Versions: Apache Flex 4.12.0
>            Reporter: Aleksey
>              Labels: easytest
>             Fix For: Apache Flex 4.13.0
>
>
> An example:
> {code}
> <?xml version="1.0"?>
> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"; 
> xmlns:s="library://ns.adobe.com/flex/spark"
>                        xmlns:mx="library://ns.adobe.com/flex/mx">
>     <s:ComboBox id="test">
>         <s:dataProvider>
>             <s:ArrayList>
>                 <fx:Number>2</fx:Number>
>                 <fx:Number>4</fx:Number>
>                 <fx:Number>6</fx:Number>
>                 <fx:Number>8</fx:Number>
>             </s:ArrayList>
>         </s:dataProvider>
>     </s:ComboBox>
> </s:WindowedApplication>
> {code}
> First type in "3" press Enter, type in "5" and press Enter - displayed value 
> changes back to "3".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to