I started to work on this and realised that this might be seen as a pseudo-feature, rather than a bug. (To my mind it's a bug.) Pseudocode for how it works now and how I think it should work: 1. NOW:
const sortByIndexAscending:Sort = new Sort(); sortByIndexAscending.fields = [new SortField("index", false, false, true)]; collection.sort = sortByIndexAscending; collection.refresh(); //sorts collection.sort.fields = [new SortField("name", false, true, false)]; //nothing happens collection.getItemIndex(firstItemInCollection); //THROWS A RUNTIME ERROR - see Jira ticket 2. SHOULD (but open to discussion, of course) const sortByIndexAscending:Sort = new Sort(); sortByIndexAscending.fields = [new SortField("index", false, false, true)]; collection.sort = sortByIndexAscending; collection.refresh(); //sorts collection.sort.fields = [new SortField("name", false, true, false)]; //SORT HAPPENS AGAIN collection.getItemIndex(firstItemInCollection); //works a treat The only reason I can see why things should stay as they are is because some people might have Sort objects that they're reusing between collections, and might not realise that (after this change happens) all their collections will resort once the fields change. To me, though, it's not reason enough to keep this potential for runtime errors. Thoughts? On 22 May 2015 at 16:19, Mihai Chira (JIRA) <j...@apache.org> wrote: > > [ > https://issues.apache.org/jira/browse/FLEX-34853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel > ] > > Mihai Chira updated FLEX-34853: > ------------------------------- > Issue Type: Bug (was: New Feature) > >> ListCollectionView.getItemIndex throws RTE when the Sort's sortFields change >> ---------------------------------------------------------------------------- >> >> Key: FLEX-34853 >> URL: https://issues.apache.org/jira/browse/FLEX-34853 >> Project: Apache Flex >> Issue Type: Bug >> Components: Collections, Spark: Sort and SortField >> Affects Versions: Apache Flex 4.14.1 >> Reporter: Mihai Chira >> Assignee: Mihai Chira >> Fix For: Apache Flex 4.15.0 >> >> >> {code} >> _sut.addAll(from4To0); //values["name"]: Object4, Object3, >> Object2, Object1, Object0 >> const sortByIndexAscending:Sort = new Sort(); >> sortByIndexAscending.fields = [new SortField("index", false, >> false, true)]; >> _sut.sort = sortByIndexAscending; >> _sut.refresh(); //should be: Object0, Object1, Object2, Object3, >> Object4 >> //when >> sortByIndexAscending.fields = [new SortField("name", false, >> true, false)]; //should have no effect >> //then >> assertThat(_sut.getItemIndex(from4To0.getItemAt(i)) != -1); //an >> RTE is thrown here >> {code} >> *Expected behaviour*: the collection should redo the sort when any of its >> sort's flags changes, or whenever one of the sortFields' flags changes. > > > > -- > This message was sent by Atlassian JIRA > (v6.3.4#6332)