]> source.dussan.org Git - vaadin-framework.git/commitdiff
#6788 - Changes from code review
authorJonatan Kronqvist <jonatan.kronqvist@itmill.com>
Thu, 14 Apr 2011 08:25:11 +0000 (08:25 +0000)
committerJonatan Kronqvist <jonatan.kronqvist@itmill.com>
Thu, 14 Apr 2011 08:25:11 +0000 (08:25 +0000)
svn changeset:18280/svn branch:6.5

src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

index 20915391b050221e6066083f95321e686419e71f..f964e1d462a3ada5a8b40c5a759cbc357bf47974 100644 (file)
@@ -1048,10 +1048,18 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
                     // try to focus a row currently selected and in viewport
                     String selectedRowKey = selectedRowKeys.iterator().next();
                     if (selectedRowKey != null) {
-                        setRowFocus(getRenderedRowByKey(selectedRowKey));
+                        VScrollTableRow renderedRow = getRenderedRowByKey(selectedRowKey);
+                        if (renderedRow == null) {
+                            setRowFocus(scrollBody
+                                    .getRowByRowIndex(firstRowInViewPort));
+                        } else {
+                            setRowFocus(renderedRow);
+                        }
                     }
+                } else {
+                    // multiselect mode
+                    setRowFocus(scrollBody.getRowByRowIndex(firstRowInViewPort));
                 }
-                // TODO what should happen in multiselect mode?
             }
         }
 
@@ -1069,11 +1077,6 @@ 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;
@@ -4263,8 +4266,8 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
                             break;
 
                         case Event.ONMOUSEDOWN:
-                            ensureFocus();
                             setRowFocus(this);
+                            ensureFocus();
                             if (dragmode != 0
                                     && event.getButton() == NativeEvent.BUTTON_LEFT) {
                                 mDown = true;