@@ -249,7 +249,8 @@ public class Util { | |||
return element.cloneNode(deep); | |||
}-*/; | |||
public static int measureHorizontalPadding(Element element, int paddingGuess) { | |||
public static int measureHorizontalPaddingAndBorder(Element element, | |||
int paddingGuess) { | |||
String originalWidth = DOM.getStyleAttribute(element, "width"); | |||
int originalOffsetWidth = element.getOffsetWidth(); | |||
int widthGuess = (originalOffsetWidth - paddingGuess); | |||
@@ -263,6 +264,21 @@ public class Util { | |||
return padding; | |||
} | |||
public static int measureVerticalPaddingAndBorder(Element element, | |||
int paddingGuess) { | |||
String originalHeight = DOM.getStyleAttribute(element, "height"); | |||
int originalOffsetHeight = element.getOffsetHeight(); | |||
int widthGuess = (originalOffsetHeight - paddingGuess); | |||
if (widthGuess < 1) { | |||
widthGuess = 1; | |||
} | |||
DOM.setStyleAttribute(element, "height", widthGuess + "px"); | |||
int padding = element.getOffsetHeight() - widthGuess; | |||
DOM.setStyleAttribute(element, "height", originalHeight); | |||
return padding; | |||
} | |||
public static int measureHorizontalBorder(Element element) { | |||
int borders; | |||
if (BrowserInfo.get().isIE()) { |
@@ -328,7 +328,7 @@ public class IAccordion extends ITabsheetBase implements | |||
} | |||
int captionWidth = caption.getRequiredWidth(); | |||
int padding = Util.measureHorizontalPadding(caption.getElement(), | |||
int padding = Util.measureHorizontalPaddingAndBorder(caption.getElement(), | |||
18); | |||
return captionWidth + padding; | |||
} |
@@ -68,6 +68,8 @@ public class ICustomLayout extends ComplexPanel implements Paintable, | |||
private String width = ""; | |||
private HashMap<String, FloatSize> locationToExtraSize = new HashMap<String, FloatSize>(); | |||
public ICustomLayout() { | |||
setElement(DOM.createDiv()); | |||
// Clear any unwanted styling | |||
@@ -265,6 +267,13 @@ public class ICustomLayout extends ComplexPanel implements Paintable, | |||
if (!"".equals(location)) { | |||
locationToElement.put(location, elem); | |||
elem.setInnerHTML(""); | |||
int x = Util.measureHorizontalPaddingAndBorder(elem, 0); | |||
int y = Util.measureVerticalPaddingAndBorder(elem, 0); | |||
FloatSize fs = new FloatSize(x, y); | |||
locationToExtraSize.put(location, fs); | |||
} else { | |||
final int len = DOM.getChildCount(elem); | |||
for (int i = 0; i < len; i++) { | |||
@@ -509,7 +518,11 @@ public class ICustomLayout extends ComplexPanel implements Paintable, | |||
public RenderSpace getAllocatedSpace(Widget child) { | |||
com.google.gwt.dom.client.Element pe = child.getElement() | |||
.getParentElement(); | |||
return new RenderSpace(pe.getOffsetWidth(), pe.getOffsetHeight(), true); | |||
FloatSize extra = locationToExtraSize.get(getLocation(child)); | |||
return new RenderSpace(pe.getOffsetWidth() - (int) extra.getWidth(), pe | |||
.getOffsetHeight() | |||
- (int) extra.getHeight(), true); | |||
} | |||
@Override |
@@ -930,7 +930,7 @@ public class IFilterSelect extends Composite implements Paintable, Field, | |||
public int getTextboxPadding() { | |||
if (textboxPadding < 0) { | |||
textboxPadding = Util.measureHorizontalPadding(tb.getElement(), 4); | |||
textboxPadding = Util.measureHorizontalPaddingAndBorder(tb.getElement(), 4); | |||
} | |||
return textboxPadding; | |||
} |
@@ -268,7 +268,7 @@ public class IPanel extends SimplePanel implements Container { | |||
*/ | |||
DOM.setStyleAttribute(captionNode, "width", "1px"); | |||
int parentPadding = Util.measureHorizontalPadding(getElement(), 0); | |||
int parentPadding = Util.measureHorizontalPaddingAndBorder(getElement(), 0); | |||
int parentWidthExcludingPadding = getElement().getOffsetWidth() | |||
- parentPadding; | |||
@@ -465,7 +465,7 @@ public class IPanel extends SimplePanel implements Container { | |||
DOM.setStyleAttribute(contentNode, "overflow", "auto"); | |||
captionPaddingHorizontal = Util.measureHorizontalPadding(captionNode, | |||
captionPaddingHorizontal = Util.measureHorizontalPaddingAndBorder(captionNode, | |||
26); | |||
captionMarginLeft = Util.measureMarginLeft(captionNode); |