]> source.dussan.org Git - gwtquery.git/commitdiff
check that first element exists in all gquery methods
authorManolo Carrasco <manolo@apache.org>
Mon, 4 Apr 2011 16:08:49 +0000 (16:08 +0000)
committerManolo Carrasco <manolo@apache.org>
Mon, 4 Apr 2011 16:08:49 +0000 (16:08 +0000)
gwtquery-core/src/main/java/com/google/gwt/query/client/GQuery.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/DocumentStyleImpl.java

index cfbc6be0804b050ea0a575f18ec8e29f521686ba..965a752795180e595834fbac57f5eaecaae8882a 100644 (file)
@@ -1076,7 +1076,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Return a style property on the first matched element.\r
    */\r
   public String css(String name) {\r
-    return styleImpl.curCSS(get(0), name, false);\r
+    return css(name, false);\r
   }\r
 \r
   /**\r
@@ -1091,7 +1091,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * parameter force=true.\r
    */\r
   public String css(String name, boolean force) {\r
-    return styleImpl.curCSS(get(0), name, force);\r
+    return size() == 0 ? "" : styleImpl.curCSS(get(0), name, force);\r
   }\r
 \r
   /**\r
@@ -1165,7 +1165,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    */\r
   @SuppressWarnings("unchecked")\r
   public <T> T data(String name, Class<T> clz) {\r
-    return (T) data(elements.getItem(0), name, null);\r
+    return size() == 0 ? null: (T)data(elements.getItem(0), name, null);\r
   }\r
   \r
   /**\r
@@ -1622,7 +1622,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Get the innerHTML of the first matched element.\r
    */\r
   public String html() {\r
-    return get(0).getInnerHTML();\r
+    return size() == 0 ? "" : get(0).getInnerHTML();\r
   }\r
 \r
   /**\r
@@ -1655,7 +1655,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * but not the vertical scrollbar height, border, or margin.\r
    */\r
   public int innerHeight() {\r
-    return get(0).getClientHeight();\r
+    return size() == 0 ? 0 : get(0).getClientHeight();\r
   }\r
 \r
   /**\r
@@ -1663,7 +1663,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * not the vertical scrollbar width, border, or margin.\r
    */\r
   public int innerWidth() {\r
-    return get(0).getClientWidth();\r
+    return size() == 0 ? 0 : get(0).getClientWidth();\r
   }\r
 \r
   /**\r
@@ -1974,7 +1974,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * left. The method works only with visible elements.\r
    */\r
   public com.google.gwt.query.client.GQuery.Offset offset() {\r
-    return new Offset(get(0).getAbsoluteLeft(), get(0).getAbsoluteTop());\r
+    return size() == 0 ? new Offset(0, 0) : new Offset(get(0).getAbsoluteLeft(), get(0).getAbsoluteTop());\r
   }\r
 \r
   /**\r
@@ -2021,6 +2021,9 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * elements, including padding, border, and optionally margin.\r
    */\r
   public int outerHeight(boolean includeMargin) {\r
+    if (size() == 0) {\r
+      return 0;\r
+    }\r
     int outerHeight = get(0).getOffsetHeight(); // height including padding and\r
     // border\r
     if (includeMargin) {\r
@@ -2042,6 +2045,9 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * elements, including padding and border and optionally margin.\r
    */\r
   public int outerWidth(boolean includeMargin) {\r
+    if (size() == 0) {\r
+      return 0;\r
+    }\r
     int outerWidth = get(0).getOffsetWidth(); // width including padding and\r
     // border\r
     if (includeMargin) {\r
@@ -2512,7 +2518,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * the minimum amount necessary.\r
    */\r
   public GQuery scrollIntoView(boolean ensure) {\r
-    if (ensure) {\r
+    if (size() > 0 && ensure) {\r
       DOM.scrollIntoView((com.google.gwt.user.client.Element) get(0));\r
     } else {\r
       scrollIntoView();\r
@@ -2526,6 +2532,9 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    */\r
   public int scrollLeft() {\r
     Element e = get(0);\r
+    if (e == null) {\r
+      return 0;\r
+    }\r
     if (e == window || e.getNodeName() == null) {\r
       return Window.getScrollLeft();\r
     } else if (e == (Node) document) {\r
@@ -2570,6 +2579,9 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * for both visible and hidden elements.\r
    */\r
   public int scrollTop() {\r
+    if (e == null) {\r
+      return 0;\r
+    }\r
     Element e = get(0);\r
     if (e == window || e.getNodeName() == null) {\r
       return Window.getScrollTop();\r
@@ -3024,7 +3036,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Return true if the first element is visible.\r
    */\r
   public boolean visible() {\r
-    return styleImpl.isVisible(get(0));\r
+    return size() == 0 ? false : styleImpl.isVisible(get(0));\r
   }\r
 \r
   /**\r
index d3f747179967a91e0f1d646a7737261265bee048..477b2afd939eb0d95ffc2d28c19b3e73c62cb2d3 100644 (file)
@@ -80,6 +80,9 @@ public class DocumentStyleImpl {
    * parameter force=true.
    */
   public String curCSS(Element elem, String name, boolean force) {
+    if (elem == null) {
+      return "";
+    }
     name = fixPropertyName(name);
     //value defined in the element style
     String ret = elem.getStyle().getProperty(name);