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

Unified Diff: chrome/browser/resources/options/deletable_item_list.js

Issue 6317005: DOMUI Prefs: Add delete/backspace handling to deletable item lists (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make backspace Mac-only Created 9 years, 11 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
« no previous file with comments | « no previous file | chrome/browser/resources/options/options_page.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « no previous file | chrome/browser/resources/options/options_page.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698