The same problem is still present in the CellTree. On 13 nov, 00:03, [email protected] wrote: > Revision: 9220 > Author: [email protected] > Date: Fri Nov 12 11:57:52 2010 > Log: Switching CellList to trigger selection on click instead of mousedown. > Selection causes the cell to be redrawn, which interrupts the click event > sequence and prevents click from ever firing to the Cell. This is > particularly annoying for Cells that contain Buttons. The same change needs > to be made for keyboard selection, which can be bound to selection and > cause the cell to be redrawn. CellTable already triggers selection on > click, and now triggers keyboard selection on click. > > Review athttp://gwt-code-reviews.appspot.com/1102801 > > Review by: > [email protected]http://code.google.com/p/google-web-toolkit/source/detail?r=9220 > > Modified: > /trunk/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java > /trunk/user/src/com/google/gwt/user/cellview/client/CellList.java > /trunk/user/src/com/google/gwt/user/cellview/client/CellTable.java > > ======================================= > --- > /trunk/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java > > Tue Nov 9 07:53:09 2010 > +++ > /trunk/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java > > Fri Nov 12 11:57:52 2010 > @@ -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); > } > > ======================================= > --- /trunk/user/src/com/google/gwt/user/cellview/client/CellList.java Tue > Nov 9 07:53:09 2010 > +++ /trunk/user/src/com/google/gwt/user/cellview/client/CellList.java Fri > Nov 12 11:57:52 2010 > @@ -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 > ======================================= > --- /trunk/user/src/com/google/gwt/user/cellview/client/CellTable.java Tue > Nov 9 07:53:09 2010 > +++ /trunk/user/src/com/google/gwt/user/cellview/client/CellTable.java Fri > Nov 12 11:57:52 2010 > @@ -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); > }
-- http://groups.google.com/group/Google-Web-Toolkit-Contributors
