FLEX-35362 CAUSE: the DropDownController signals that the DropDownListBase is 
open immediately, even before the latter has actually made that change on 
stage. Since the opening takes one or two frames, it leaves a few milliseconds 
in which code which relies on that open/closed state erroneously assumes that 
it can use elements that should be on stage or initialized. In this case it's 
the layout property, which, due to the skin of the DropDownList, is only 
initialized once the drop down is actually open.

SOLUTION: we check whether the layout is not-null, and if it is, we select 
items in the list as if it were closed.

NOTES:
-also edited some comments, simplified Array instantiation, and removed an 
empty constructor.
-now the unit test will pass.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/4c601832
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/4c601832
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/4c601832

Branch: refs/heads/master
Commit: 4c60183258caf23020d7398f6d2ffdab747d0e56
Parents: 23a306c
Author: Mihai Chira <mih...@apache.org>
Authored: Wed Oct 18 14:56:22 2017 +0200
Committer: Mihai Chira <mih...@apache.org>
Committed: Wed Oct 18 14:56:22 2017 +0200

----------------------------------------------------------------------
 .../flatspark/src/flatspark/utils/ColorUtils.as     | 16 ++++------------
 .../components/supportClasses/DropDownListBase.as   |  3 +--
 .../src/spark/components/supportClasses/ListBase.as |  6 +++---
 3 files changed, 8 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4c601832/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as 
b/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
index 09f9cb2..e9007c3 100644
--- a/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
+++ b/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
@@ -45,15 +45,10 @@ package flatspark.utils
                public static const Concrete:uint = 0x95A5A6;
                public static const Asbestos:uint = 0x7F8C8D;
                
-               public function ColorUtils()
-               {
-                       
-               }               
-               
                public static function ButtonColor(brand:int, estado:State):uint
                {
                        // All the possible colors
-                       var cores:Array = new Array(
+                       var cores:Array = [
                                ButtonColorEnum.PrimaryUp, 
ButtonColorEnum.PrimaryHover, ButtonColorEnum.PrimaryDown, 
ButtonColorEnum.PrimaryDisabled,
                                ButtonColorEnum.SuccessUp, 
ButtonColorEnum.SuccessHover, ButtonColorEnum.SuccessDown, 
ButtonColorEnum.SuccessDisabled,
                                ButtonColorEnum.WarningUp, 
ButtonColorEnum.WarningHover, ButtonColorEnum.WarningDown, 
ButtonColorEnum.WarningDisabled,
@@ -61,7 +56,7 @@ package flatspark.utils
                                ButtonColorEnum.DefaultUp, 
ButtonColorEnum.DefaultHover, ButtonColorEnum.DefaultDown, 
ButtonColorEnum.DefaultDisabled,
                                ButtonColorEnum.InfoUp, 
ButtonColorEnum.InfoHover, ButtonColorEnum.InfoDown, 
ButtonColorEnum.InfoDisabled,
                                ButtonColorEnum.DangerUp, 
ButtonColorEnum.DangerHover, ButtonColorEnum.DangerDown, 
ButtonColorEnum.DangerDisabled
-                               );
+                               ];
                        
                        // Map all the allowed states
                        var numeroEstado:int = 1;
@@ -80,11 +75,8 @@ package flatspark.utils
                                        numeroEstado = 3;
                                        break;
                        }
-                       
-                       var posicao:int = 1;
-                       posicao = 4 * (brand - 1) + (numeroEstado - 1); 
-                       
-                       return cores[posicao];
+
+                       return cores[4 * (brand - 1) + (numeroEstado - 1)];
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4c601832/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
 
b/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
index aaba442..c80c2b4 100644
--- 
a/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
+++ 
b/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
@@ -900,7 +900,7 @@ public class DropDownListBase extends List
             var proposedNewIndex:int = NO_SELECTION;
             var currentIndex:int;
                         
-            if (isDropDownOpen)
+            if (isDropDownOpen && layout)
             {   
                 // Normalize the proposed index for 
getNavigationDestinationIndex
                 currentIndex = userProposedSelectedIndex < NO_SELECTION ? 
NO_SELECTION : userProposedSelectedIndex;
@@ -992,7 +992,6 @@ public class DropDownListBase extends List
         {
             event.preventDefault();
         }
-        
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4c601832/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as 
b/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
index e700d0d..fbe1050 100644
--- a/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ b/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -1877,9 +1877,9 @@ public class ListBase extends SkinnableDataContainer 
implements IDataProviderEnh
         
         // We want to wait one frame after validation has occured before 
turning off 
         // selection transitions again.  We tried using dataGroup's 
updateComplete event listener, 
-        // but because some validateNows() occur (before all of the event 
handling code has finished), 
-        // this was occuring too early.  We also tried just using callLater or 
ENTER_FRAME, but that 
-        // occurs before the LayoutManager has run, so we add an ENTER_FRAME 
handler with a 
+        // but because some validateNow() calls occur (before all of the event 
handling code has
+        // finished), this was occurring too early.  We also tried just using 
callLater or ENTER_FRAME,
+        // but that occurs before the LayoutManager has run, so we add an 
ENTER_FRAME handler with a
         // low priority to make sure it occurs after the LayoutManager pass.
         systemManager.addEventListener(Event.ENTER_FRAME, 
allowSelectionTransitions_enterFrameHandler, false, -100);
     }

Reply via email to