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"/>
