Adding the 2.1.1 tag.


git-svn-id: https://google-web-toolkit.googlecode.com/svn/tags/2.1.1@9458 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/dom/client/DOMImplIE8.java b/user/src/com/google/gwt/dom/client/DOMImplIE8.java
index 2b65cd8..0c29ccc 100644
--- a/user/src/com/google/gwt/dom/client/DOMImplIE8.java
+++ b/user/src/com/google/gwt/dom/client/DOMImplIE8.java
@@ -17,6 +17,41 @@
 
 class DOMImplIE8 extends DOMImplTrident {
 
+  private static boolean isIE8;
+  private static boolean isIE8Detected;
+
+  /**
+   * Check if the browser is IE8 or IE9.
+   * 
+   * @return <code>true</code> if the browser is IE8, <code>false</code> if IE9
+   *         or any other browser
+   */
+  static boolean isIE8() {
+    if (!isIE8Detected) {
+      isIE8 = isIE8Impl();
+      isIE8Detected = true;
+    }
+    return isIE8;
+  }
+
+  // Stolen and modified from UserAgent.gwt.xml.
+  private static native boolean isIE8Impl() /*-{
+    var ua = navigator.userAgent.toLowerCase();
+    if (ua.indexOf("msie") != -1 && $doc.documentMode == 8) {
+      return true;
+    }
+    return false;
+  }-*/;
+
+  @Override
+  public void cssSetOpacity(Style style, double value) {
+    if (isIE8()) {
+      cssSetOpacityImpl(style, value);
+    } else {
+      super.cssSetOpacity(style, value);
+    }
+  }
+
   @Override
   public int getAbsoluteLeft(Element elem) {
     Document doc = elem.getOwnerDocument();
@@ -46,4 +81,8 @@
     }
     super.setScrollLeft(elem, left);
   }
+
+  private native void cssSetOpacityImpl(Style style, double value) /*-{
+    style.filter = 'alpha(opacity=' + (value * 100) + ')';
+  }-*/;
 }
diff --git a/user/src/com/google/gwt/i18n/client/constants/DateTimeConstantsImpl_pt_PT.properties b/user/src/com/google/gwt/i18n/client/constants/DateTimeConstantsImpl_pt_PT.properties
index 8da543a..611875c 100644
--- a/user/src/com/google/gwt/i18n/client/constants/DateTimeConstantsImpl_pt_PT.properties
+++ b/user/src/com/google/gwt/i18n/client/constants/DateTimeConstantsImpl_pt_PT.properties
@@ -8,7 +8,7 @@
 # CLDR version 1.7.1 is used in this generation.
 
 eras = a.C., d.C.
-eraNames = Antes de Cristo, Ano do Senhor
+eraNames = Antes de Cristo, Depois de Cristo
 narrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
 months = Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro
 shortMonths = Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez
diff --git a/user/src/com/google/gwt/i18n/client/impl/cldr/DateTimeFormatInfoImpl_pt_PT.java b/user/src/com/google/gwt/i18n/client/impl/cldr/DateTimeFormatInfoImpl_pt_PT.java
index f4d4c62..7c30159 100644
--- a/user/src/com/google/gwt/i18n/client/impl/cldr/DateTimeFormatInfoImpl_pt_PT.java
+++ b/user/src/com/google/gwt/i18n/client/impl/cldr/DateTimeFormatInfoImpl_pt_PT.java
@@ -36,14 +36,6 @@
   }
 
   @Override
-  public String[] erasFull() {
-    return new String[] {
-        "Antes de Cristo",
-        "Ano do Senhor"
-    };
-  }
-
-  @Override
   public int firstDayOfTheWeek() {
     return 1;
   }
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 2c557d5..c7100d1 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellList.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellList.java
@@ -340,7 +340,7 @@
   protected Element getKeyboardSelectedElement() {
     // Do not use getRowElement() because that will flush the presenter.
     int rowIndex = getKeyboardSelectedRow();
-    if (childContainer.getChildCount() > rowIndex) {
+    if (rowIndex >= 0 && childContainer.getChildCount() > rowIndex) {
       return childContainer.getChild(rowIndex).cast();
     }
     return null;
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 0c5e6a6..7511d58 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellTable.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellTable.java
@@ -869,7 +869,7 @@
     // Do not use getRowElement() because that will flush the presenter.
     int rowIndex = getKeyboardSelectedRow();
     NodeList<TableRowElement> rows = tbody.getRows();
-    if (rowIndex < rows.getLength() && columns.size() > 0) {
+    if (rowIndex >= 0 && rowIndex < rows.getLength() && columns.size() > 0) {
       TableRowElement tr = rows.getItem(rowIndex);
       TableCellElement td = tr.getCells().getItem(keyboardSelectedColumn);
       return getCellParent(td);
diff --git a/user/test/com/google/gwt/user/cellview/client/AbstractHasDataTestBase.java b/user/test/com/google/gwt/user/cellview/client/AbstractHasDataTestBase.java
index d56a3f5..5f4bc4f 100644
--- a/user/test/com/google/gwt/user/cellview/client/AbstractHasDataTestBase.java
+++ b/user/test/com/google/gwt/user/cellview/client/AbstractHasDataTestBase.java
@@ -25,6 +25,7 @@
 import com.google.gwt.regexp.shared.MatchResult;
 import com.google.gwt.regexp.shared.RegExp;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.view.client.ListDataProvider;
 import com.google.gwt.view.client.Range;
@@ -145,6 +146,21 @@
     assertEquals("test 12", items.get(2));
   }
 
+  /**
+   * Test that we don't get any errors when keyboard selection is disabled.
+   */
+  public void testKeyboardSelectionPolicyDisabled() {
+    AbstractHasData<String> display = createAbstractHasData(new TextCell());
+    display.setRowData(createData(0, 10));
+    display.getPresenter().flush();
+    display.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
+
+    assertNull(display.getKeyboardSelectedElement());
+    display.resetFocusOnCell();
+    display.setAccessKey('a');
+    display.setTabIndex(1);
+  }
+
   public void testResetFocus() {
     IndexCell<String> cell = new IndexCell<String>();
     AbstractHasData<String> display = createAbstractHasData(cell);