]> source.dussan.org Git - gwtquery.git/commitdiff
Fix computing of width and height in inline elements so as gquery behaves the same...
authorManolo Carrasco <manolo@apache.org>
Sun, 18 Mar 2012 09:26:11 +0000 (09:26 +0000)
committerManolo Carrasco <manolo@apache.org>
Sun, 18 Mar 2012 09:26:11 +0000 (09:26 +0000)
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/DocumentStyleImpl.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQueryCoreTestGwt.java

index 3e6f58bbafb63c1581be83c1c9c70c13f61d8cce..ac836e8d68ac38fe9772804aa75ce81732182ecc 100644 (file)
@@ -115,7 +115,17 @@ public class DocumentStyleImpl {
     return JsUtils.camelize(name);
   }
 
+  // inline elements do not have width nor height unless we set it to inline-block
+  private void fixInlineElement(Element e) {
+    if (e.getClientHeight() == 0 && e.getClientWidth() == 0 && "inline".equals(curCSS(e, "display", true))) {
+      setStyleProperty(e, "display", "inline-block");
+      setStyleProperty(e, "width", "auto");
+      setStyleProperty(e, "height", "auto");
+    }
+  }
+  
   public int getHeight(Element e) {
+    fixInlineElement(e);
     return (int) (e.getClientHeight() - num(curCSS(e, "paddingTop", true)) - num(curCSS(e, "paddingBottom", true)));
   }
   
@@ -125,6 +135,7 @@ public class DocumentStyleImpl {
   }
   
   public int getWidth(Element e) {
+    fixInlineElement(e);
     return (int) (e.getClientWidth() - num(curCSS(e, "paddingLeft", true)) - num(curCSS(e, "paddingRight", true)));
   }
 
index 370e3a1a6d64d03f6010eae5caaeade49f44c2e3..20eed559fc8e52bea8d03bdb979738d985b3c5b9 100644 (file)
@@ -1085,6 +1085,14 @@ public class GQueryCoreTestGwt extends GWTTestCase {
     assertEquals(142, g.outerWidth(true));
 
   }
+  
+  public void testWidthHeightInlineElement() {
+    $(e).html(
+        "<span style='border: 1px solid red; padding: 10px; margin:10px'>Content 1</span>");
+    GQuery g = $("span", e);
+    assertTrue(g.width() > 0);
+    assertTrue(g.height() > 0);
+  }
 
   public void testWrapMethod() {
     String content = "<p>Test Paragraph.</p>";