* Link component styles
* (useless to move into a separate file)
*/
-
-.i-link span {
- text-decoration: underline;
- cursor:pointer;
+.i-link a {
+ font-size: 13px;
+ line-height: 18px;
+ color: #464f52;
}
/**
background-color: #fff;
border-bottom: 1px solid #dee2e3;
border-top: none;
+ position: relative;
}
.i-tabsheet-hidetabs .i-tabsheet-content {
background-color: #fff;
border-bottom: 1px solid #dee2e3;
border-top: none;
+ position: relative;
}\r
\r
.i-tabsheet-hidetabs .i-tabsheet-content {\r
private Paintable component;
private boolean rendering;
private String width;
+ private RenderSpace renderSpace = new RenderSpace();
public ICustomComponent() {
super();
}
p.updateFromUIDL(child, client);
}
+
+ renderSpace.setWidth(getElement().getOffsetWidth());
+ renderSpace.setHeight(getElement().getOffsetHeight());
+
rendering = false;
}
}
public RenderSpace getAllocatedSpace(Widget child) {
- return new RenderSpace(getElement().getOffsetWidth(), getElement()
- .getOffsetHeight());
+ return renderSpace;
}
@Override
public void setHeight(String height) {
super.setHeight(height);
+ renderSpace.setHeight(getElement().getOffsetHeight());
+
if (!height.equals(this.height)) {
this.height = height;
if (!rendering) {
@Override
public void setWidth(String width) {
super.setWidth(width);
+ renderSpace.setWidth(getElement().getOffsetWidth());
+
if (!width.equals(this.width)) {
this.width = width;
if (!rendering) {
ITabsheet.this.iLayout();
(content).updateFromUIDL(contentUIDL, client);
- fixHeight();
+ fixVisibleTabSize();
ITabsheet.this.removeStyleDependentName("loading");
if (previousVisibleWidget != null) {
DOM.setStyleAttribute(previousVisibleWidget.getElement(),
// Set proper values for content element
DOM.setStyleAttribute(contentNode, "height", contentHeight + "px");
renderSpace.setHeight(contentHeight);
- contentNode.getStyle().setProperty("position", "relative");
} else {
DOM.setStyleAttribute(contentNode, "height", "");
renderSpace.setHeight(0);
- fixHeight();
+ fixVisibleTabSize();
}
iLayout();
}
updateTabScroller();
- if (tp.getVisibleWidget() >= 0) {
- Util.runWebkitOverflowAutoFix(DOM.getParent(tp.getWidget(
- tp.getVisibleWidget()).getElement()));
- }
+ tp.runWebkitOverflowAutoFix();
}
- private void fixHeight() {
- if (isDynamicHeight()) {
- if (tp.getVisibleWidget() >= 0) {
- Widget widget = tp.getWidget(tp.getVisibleWidget());
- int widgetHeight = widget.getOffsetHeight();
- DOM.setStyleAttribute(tp.getElement(), "height", widgetHeight
- + "px");
- tp.setVisibleWidgetHeight(widgetHeight);
- }
- } else {
- DOM.setStyleAttribute(tp.getElement(), "height", "");
+ /**
+ * Sets the size of the visible tab (component). As the tab is set to
+ * position: absolute (to work around a firefox flickering bug) we must keep
+ * this up-to-date by hand.
+ */
+ private void fixVisibleTabSize() {
+ /*
+ * The overflow=auto element must have a height specified, otherwise it
+ * will be just as high as the contents and no scrollbars will appear
+ */
+ int height = -1;
+ int width = -1;
+ if (!isDynamicHeight()) {
+ height = renderSpace.getHeight();
+ }
+ if (!isDynamicWidth()) {
+ width = renderSpace.getWidth();
}
+ tp.fixVisibleTabSize(width, height);
}
* Size has changed so we let the child components know about the
* new size.
*/
- fixHeight();
+ fixVisibleTabSize();
iLayout();
return false;
import com.google.gwt.user.client.Element;\r
import com.google.gwt.user.client.ui.ComplexPanel;\r
import com.google.gwt.user.client.ui.Widget;\r
+import com.itmill.toolkit.terminal.gwt.client.Util;\r
\r
/**\r
* A panel that displays all of its child widgets in a 'deck', where only one\r
}\r
\r
private void unHide(Element e) {\r
- DOM.setStyleAttribute(e, "top", "");\r
- DOM.setStyleAttribute(e, "left", "");\r
+ DOM.setStyleAttribute(e, "top", "0px");\r
+ DOM.setStyleAttribute(e, "left", "0px");\r
DOM.setStyleAttribute(e, "visibility", "");\r
-\r
}\r
\r
- public void setVisibleWidgetHeight(int widgetHeight) {\r
- DOM.setStyleAttribute(DOM.getParent(visibleWidget.getElement()),\r
- "height", widgetHeight + "px");\r
+ public void fixVisibleTabSize(int width, int height) {\r
+ if (visibleWidget == null) {\r
+ return;\r
+ }\r
+\r
+ if (height < 0) {\r
+ height = visibleWidget.getOffsetHeight();\r
+ }\r
+ if (width < 0) {\r
+ width = visibleWidget.getOffsetWidth();\r
+ }\r
\r
+ // i-tabsheet-tabsheetpanel height\r
+ getElement().getStyle().setPropertyPx("height", height);\r
+ getElement().getStyle().setPropertyPx("width", width);\r
+\r
+ // widget wrapper height\r
+ Element wrapperDiv = DOM.getParent(visibleWidget.getElement());\r
+ wrapperDiv.getStyle().setPropertyPx("height", height);\r
+ wrapperDiv.getStyle().setPropertyPx("width", width);\r
}\r
\r
+ public void runWebkitOverflowAutoFix() {\r
+ if (visibleWidget != null) {\r
+ Util.runWebkitOverflowAutoFix(DOM.getParent(visibleWidget\r
+ .getElement()));\r
+ }\r
+\r
+ }\r
}\r