Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Unified Diff: chrome/browser/resources/shared/js/cr/ui/list_selection_model.js

Issue 7038024: Move sorting logic from table to list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed autofill phones. Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/shared/js/cr/ui/list_selection_model.js
diff --git a/chrome/browser/resources/shared/js/cr/ui/list_selection_model.js b/chrome/browser/resources/shared/js/cr/ui/list_selection_model.js
index fc5710f7f7851d19eab02090dd0ef638469655d9..8c16d577f5f2f9d5105df1511ebdbad9fabec353 100644
--- a/chrome/browser/resources/shared/js/cr/ui/list_selection_model.js
+++ b/chrome/browser/resources/shared/js/cr/ui/list_selection_model.js
@@ -247,43 +247,25 @@ cr.define('cr.ui', function() {
* @param {!Array.<number>} permutation The reordering permutation.
*/
adjustToReordering: function(permutation) {
+ var oldLeadIndex = this.leadIndex;
+
+ var oldSelectedIndexes = this.selectedIndexes;
+ this.selectedIndexes = oldSelectedIndexes.map(function(oldIndex) {
+ return permutation[oldIndex];
+ }).filter(function(index) {
+ return index != -1;
+ });
+
+ if (oldLeadIndex != -1)
+ this.leadIndex = permutation[oldLeadIndex];
},
/**
- * Adjust the selection by adding or removing a certain numbers of items.
- * This should be called by the owner of the selection model as items are
- * added and removed from the underlying data model.
- * @param {number} index The index of the first change.
- * @param {number} itemsRemoved Number of items removed.
- * @param {number} itemsAdded Number of items added.
+ * Adjusts selection model length.
+ * @param {number} length New selection model length.
*/
- adjust: function(index, itemsRemoved, itemsAdded) {
- function getNewAdjustedIndex(i) {
- if (i >= index && i < index + itemsRemoved) {
- return index
- } else if (i >= index) {
- return i - itemsRemoved + itemsAdded;
- }
- return i;
- }
-
- this.length_ += itemsAdded - itemsRemoved;
-
- var newMap = [];
- for (var i in this.selectedIndexes_) {
- i = Number(i);
- if (i < index) {
- newMap[i] = true;
- } else if (i < index + itemsRemoved) {
- // noop
- } else {
- newMap[i + itemsAdded - itemsRemoved] = true;
- }
- }
- this.selectedIndexes_ = newMap;
-
- this.leadIndex = getNewAdjustedIndex(this.leadIndex);
- this.anchorIndex = getNewAdjustedIndex(this.anchorIndex);
+ adjustLength: function(length) {
+ this.length_ = length;
}
};

Powered by Google App Engine
This is Rietveld 408576698