Updated Branches:
  refs/heads/develop 05cc8f3e9 -> c556895ee

REFIX FLEX-33813 (DataGrid goes blank when scrolled and dataProvider is changed

[Mustella test pass]
- gumbo/components/DataGrid/Properties
- gumbo/components/DataGrid/Styles


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

Branch: refs/heads/develop
Commit: c556895ee94e39eddc6095c49f47caa4935767c5
Parents: 05cc8f3
Author: mamsellem <[email protected]>
Authored: Tue Oct 15 22:38:31 2013 +0200
Committer: mamsellem <[email protected]>
Committed: Tue Oct 15 22:38:31 2013 +0200

----------------------------------------------------------------------
 .../projects/spark/src/spark/components/Grid.as | 28 +++++++++++++++++---
 .../DataGrid_requireSelection_test001.mxml      |  2 +-
 2 files changed, 25 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/c556895e/frameworks/projects/spark/src/spark/components/Grid.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/Grid.as 
b/frameworks/projects/spark/src/spark/components/Grid.as
index 9dcfbd3..eed7d09 100644
--- a/frameworks/projects/spark/src/spark/components/Grid.as
+++ b/frameworks/projects/spark/src/spark/components/Grid.as
@@ -269,7 +269,9 @@ public class Grid extends Group implements 
IDataGridElement, IDataProviderEnhanc
      *  rowIndex of the caret after a collection refresh event.
      */    
     private var caretSelectedItem:Object = null;
-
+    private var updateCaretForDataProviderChanged:Boolean = false;
+    private var updateCaretForDataProviderChangeLastEvent:CollectionEvent;
+    
     /**
      *  @private
      *  True while updateDisplayList is running.  Use to disable 
invalidateSize(),
@@ -4584,6 +4586,13 @@ public class Grid extends Group implements 
IDataGridElement, IDataProviderEnhanc
             
             caretChanged = false;        
          }
+
+        if (updateCaretForDataProviderChanged)
+        {
+            updateCaretForDataProviderChanged = false;
+            
updateCaretForDataProviderChange(updateCaretForDataProviderChangeLastEvent);
+            updateCaretForDataProviderChangeLastEvent = null;
+        }
     }
     
     
@@ -4600,8 +4609,9 @@ public class Grid extends Group implements 
IDataGridElement, IDataProviderEnhanc
                
                if (!variableRowHeight)
                        setFixedRowHeight(gridDimensions.getRowHeight(0));
-        }
 
+       }
+        
     
//--------------------------------------------------------------------------
     //
     //  Methods
@@ -5033,7 +5043,7 @@ public class Grid extends Group implements 
IDataGridElement, IDataProviderEnhanc
     
     // default max time between clicks for a double click is 480ms.
     mx_internal var DOUBLE_CLICK_TIME:Number = 480;
-    
+
     /** 
      *  @private
      *  Return the GridView whose bounds contain the MouseEvent, or null.  
Note that the 
@@ -5619,9 +5629,19 @@ public class Grid extends Group implements 
IDataGridElement, IDataProviderEnhanc
         invalidateSize();
         invalidateDisplayList();
         
-        if (caretRowIndex != -1)
+        if (caretRowIndex != -1)  {
+            if (event.kind == CollectionEventKind.RESET){
+                // defer for reset events 
+                updateCaretForDataProviderChanged = true;
+                updateCaretForDataProviderChangeLastEvent = event;
+                invalidateProperties();
+            }
+            else {
                 updateCaretForDataProviderChange(event);
+            }         
+        }
 
+        
         // Trigger bindings to selectedIndex/selectedCell/selectedItem and the 
plurals of those.
         if (selectionChanged)
             dispatchFlexEvent(FlexEvent.VALUE_COMMIT);

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/c556895e/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_requireSelection_test001.mxml
----------------------------------------------------------------------
diff --git 
a/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_requireSelection_test001.mxml
 
b/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_requireSelection_test001.mxml
index c089237..032e7d5 100644
--- 
a/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_requireSelection_test001.mxml
+++ 
b/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_requireSelection_test001.mxml
@@ -420,7 +420,7 @@
                <body>          
                    <RunCode 
code="FlexGlobals.topLevelApplication.dataGrid.selectionMode=GridSelectionMode.MULTIPLE_CELLS"/>
                    <AssertMethodValue 
method="value=FlexGlobals.topLevelApplication.dataGrid.selectionContainsCell(0,0)"
 value="true"/>
-                   <RunCode 
code="FlexGlobals.topLevelApplication.dataGrid.resetDP()"  
waitEvent="enterFrame" waitTarget="stage"/>
+                   <RunCode 
code="FlexGlobals.topLevelApplication.dataGrid.resetDP2()" 
waitEvent="updateComplete" waitTarget="dataGrid.grid"  />
                    <AssertMethodValue 
method="value=FlexGlobals.topLevelApplication.dataGrid.selectionContainsCell(0,0)"
 value="true"/> 
                    <WaitForEvent target="stage" eventName="enterFrame" 
numExpectedEvents="2"/>
                    <CompareBitmap   numColorVariances="20" 
maxColorVariance="20" url="../Properties/Baselines/$testID_cell.png" 
target="dataGrid"/>

Reply via email to