From 60aaea1bd2842b703b317f7984756d6f6a686e76 Mon Sep 17 00:00:00 2001 From: Jonatan Kronqvist Date: Thu, 14 Apr 2011 07:46:03 +0000 Subject: [PATCH] #6788 - Fixed a focus issue in Firefox and removed unnecessary key handling code from table headers. This should also fix #6774 svn changeset:18279/svn branch:6.5 --- .../terminal/gwt/client/ui/VScrollTable.java | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 7b9bd4e2ee..20915391b0 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -1069,10 +1069,14 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, if (oldSortedHeader != null) { oldSortedHeader.resizeCaptionContainer(); } + if (sortColumn != null && !sortColumn.equals("null") + && oldSortColumn != sortColumn) { + // Sorting has changed, focus the first row + setRowFocus(scrollBody.getRowByRowIndex(firstRowInViewPort)); + } rendering = false; headerChangedDuringUpdate = false; - } protected VScrollTableBody createScrollBody() { @@ -1986,17 +1990,14 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, // ensure no clipping initially (problem on column additions) DOM.setStyleAttribute(captionContainer, "overflow", "visible"); - DOM.sinkEvents(captionContainer, Event.MOUSEEVENTS - | Event.KEYEVENTS); + DOM.sinkEvents(captionContainer, Event.MOUSEEVENTS); DOM.appendChild(td, captionContainer); - DOM.sinkEvents(td, Event.MOUSEEVENTS | Event.KEYEVENTS); + DOM.sinkEvents(td, Event.MOUSEEVENTS); setElement(td); - getElement().setTabIndex(-1); - setAlign(ALIGN_LEFT); } @@ -2244,19 +2245,11 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, updateFloatingCopysPosition(DOM.eventGetClientX(event), -1); } break; - case Event.ONKEYDOWN: - focusFirstRow(); - break; default: break; } } - private void focusFirstRow() { - setRowFocus(scrollBody.getRowByRowIndex(firstRowInViewPort)); - focusedRow.toggleSelection(); - } - private void onResizeEvent(Event event) { switch (DOM.eventGetType(event)) { case Event.ONMOUSEDOWN: @@ -5596,7 +5589,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, // Focus a row if no row is in focus if (focusedRow == null) { - setRowFocus((VScrollTableRow) scrollBody.iterator().next()); + setRowFocus(scrollBody.getRowByRowIndex(firstRowInViewPort)); } else { setRowFocus(focusedRow); } -- 2.39.5