diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java b/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java
index 234e6bd..7bfaca5 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java
@@ -270,8 +270,9 @@
     Set<String> eventTypes = new HashSet<String>();
     eventTypes.add("focus");
     eventTypes.add("blur");
-    eventTypes.add("keydown");
-    eventTypes.add("mousedown"); // Used by subclasses to steal focus.
+    eventTypes.add("keydown"); // Used for keyboard navigation.
+    eventTypes.add("click"); // Used by subclasses for selection.
+    eventTypes.add("mousedown"); // No longer used, but here for legacy support.
     CellBasedWidgetImpl.get().sinkEvents(this, eventTypes);
   }
 
diff --git a/user/src/com/google/gwt/user/cellview/client/CellList.java b/user/src/com/google/gwt/user/cellview/client/CellList.java
index 37f7c8c..2e68ca1 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellList.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellList.java
@@ -379,7 +379,7 @@
       // before firing the event to the cell in case the cell operates on the
       // currently selected item.
       String eventType = event.getType();
-      boolean isMouseDown = "mousedown".equals(eventType);
+      boolean isClick = "click".equals(eventType);
       int idx = Integer.parseInt(idxString);
       int indexOnPage = idx - getPageStart();
       if (!isRowWithinBounds(indexOnPage)) {
@@ -390,12 +390,12 @@
       // Get the cell parent before doing selection in case the list is redrawn.
       Element cellParent = getCellParent(cellTarget);
       T value = getDisplayedItem(indexOnPage);
-      if (isMouseDown && !cell.handlesSelection()) {
+      if (isClick && !cell.handlesSelection()) {
         doSelection(event, value, indexOnPage);
       }
 
       // Focus on the cell.
-      if (isMouseDown
+      if (isClick
           && getPresenter().getKeyboardSelectedRowInView() != indexOnPage) {
         /*
          * If the selected element is natively focusable, then we do not want to
diff --git a/user/src/com/google/gwt/user/cellview/client/CellTable.java b/user/src/com/google/gwt/user/cellview/client/CellTable.java
index 305c502..cbf2365 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellTable.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellTable.java
@@ -563,7 +563,6 @@
 
     // Sink events.
     Set<String> eventTypes = new HashSet<String>();
-    eventTypes.add("click");
     eventTypes.add("mouseover");
     eventTypes.add("mouseout");
     CellBasedWidgetImpl.get().sinkEvents(this, eventTypes);
@@ -926,7 +925,7 @@
       }
     } else if (section == tbody) {
       // Update the hover state.
-      boolean isMouseDown = "mousedown".equals(eventType);
+      boolean isClick = "click".equals(eventType);
       int row = tr.getSectionRowIndex();
       if ("mouseover".equals(eventType)) {
         // Unstyle the old row if it is still part of the table.
@@ -941,7 +940,7 @@
         setRowStyleName(hoveringRow, style.cellTableHoveredRow(),
             style.cellTableHoveredRowCell(), false);
         hoveringRow = null;
-      } else if (isMouseDown
+      } else if (isClick
           && ((getPresenter().getKeyboardSelectedRowInView() != row)
           || (keyboardSelectedColumn != col))) {
         // Move keyboard focus. Since the user clicked, allow focus to go to a
@@ -960,7 +959,7 @@
         return;
       }
       T value = getDisplayedItem(row);
-      if ("click".equals(eventType) && !handlesSelection) {
+      if (isClick && !handlesSelection) {
         doSelection(event, value, row, col);
       }
 
