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

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

Issue 7038024: Move sorting logic from table to list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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_single_selection_model.js
diff --git a/chrome/browser/resources/shared/js/cr/ui/list_single_selection_model.js b/chrome/browser/resources/shared/js/cr/ui/list_single_selection_model.js
index 119f0fb6d4e3a6de354feb03c6ed9d6e6298a72e..177b0bd5d8e23e973c3a8a37d6b0f209ecde75e5 100644
--- a/chrome/browser/resources/shared/js/cr/ui/list_single_selection_model.js
+++ b/chrome/browser/resources/shared/js/cr/ui/list_single_selection_model.js
@@ -197,35 +197,25 @@ cr.define('cr.ui', function() {
* @param {!Array.<number>} permutation The reordering permutation.
*/
adjustToReordering: function(permutation) {
+ if (this.leadIndex != -1)
+ this.leadIndex = permutation[this.leadIndex];
+
+ var oldSelectedIndex = this.selectedIndex;
+ if (oldSelectedIndex != -1) {
+ this.selectedIndex = permutation[oldSelectedIndex];
+ }
},
/**
- * 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. This is only used when data model is
+ * set, so it is safe to clear() first.
+ * This should not be used for dataModel updates, use adjustToReordering
+ * instead.
+ * @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 + itemsAdded - itemsRemoved;
- }
- return i;
- }
-
- this.length_ += itemsAdded - itemsRemoved;
-
- var i = this.selectedIndex;
- if (itemsRemoved > 0 && i >= index && i < index + itemsRemoved)
- this.selectedIndex = -1;
- else if (i >= index)
- this.selectedIndex = i + itemsAdded - itemsRemoved;
-
- this.leadIndex = getNewAdjustedIndex(this.leadIndex);
+ adjustLength: function(length) {
+ this.clear();
+ this.length_ = length;
}
};

Powered by Google App Engine
This is Rietveld 408576698