Index: chrome/browser/resources/options/deletable_item_list.js |
diff --git a/chrome/browser/resources/options/deletable_item_list.js b/chrome/browser/resources/options/deletable_item_list.js |
index 5d5b35be3f090da95480ebaf5b75cbc33dde3570..70178137459a4f5de4b4e569168f89aec12758f8 100644 |
--- a/chrome/browser/resources/options/deletable_item_list.js |
+++ b/chrome/browser/resources/options/deletable_item_list.js |
@@ -107,6 +107,7 @@ cr.define('options', function() { |
decorate: function() { |
List.prototype.decorate.call(this); |
this.addEventListener('click', this.handleClick_); |
+ this.addEventListener('keydown', this.handleKeyDown_); |
}, |
/** |
@@ -130,15 +131,42 @@ cr.define('options', function() { |
if (selected.indexOf(idx) == -1) { |
this.deleteItemAtIndex(idx); |
} else { |
- // Reverse through the list of selected indexes to maintain the |
- // correct index values after deletion. |
- for (var j = selected.length - 1; j >= 0; j--) |
- this.deleteItemAtIndex(selected[j]); |
+ this.deleteSelectedItems_(); |
} |
} |
}, |
/** |
+ * Callback for keydown events. |
+ * @param {Event} e The keydown event object. |
+ * @private |
+ */ |
+ handleKeyDown_: function(e) { |
+ // Map delete (and backspapce on Mac) to item deletion. |
+ if ((e.keyCode == 46 || (e.keyCode == 8 && cr.isMac)) && |
+ e.target.tagName != 'INPUT') { |
James Hawkins
2011/01/18 19:32:23
Can you explain this check for 'INPUT'?
stuartmorgan
2011/01/18 19:34:51
Done.
|
+ this.deleteSelectedItems_(); |
+ // Prevent the browser from going back. |
+ e.preventDefault(); |
+ } |
+ }, |
+ |
+ /** |
+ * Deletes all the currently selected items that are deletable. |
+ * @private |
+ */ |
+ deleteSelectedItems_: function() { |
+ var selected = this.selectionModel.selectedIndexes; |
+ // Reverse through the list of selected indexes to maintain the |
+ // correct index values after deletion. |
+ for (var j = selected.length - 1; j >= 0; j--) { |
+ var index = selected[j]; |
+ if (this.getListItemByIndex(index).deletable) |
+ this.deleteItemAtIndex(index); |
+ } |
+ }, |
+ |
+ /** |
* Called when an item should be deleted; subclasses are responsible for |
* implementing. |
* @param {number} index The index of the item that is being deleted. |