public static void updateRelativeChildrenAndSendSizeUpdateEvent(
ApplicationConnection client, HasWidgets container) {
+ updateRelativeChildrenAndSendSizeUpdateEvent(client, container,
+ (Widget) container);
+ }
+
+ public static void updateRelativeChildrenAndSendSizeUpdateEvent(
+ ApplicationConnection client, HasWidgets container, Widget widget) {
/*
* Relative sized children must be updated first so the component has
* the correct outer dimensions when signaling a size change to the
Iterator<Widget> childIterator = container.iterator();
while (childIterator.hasNext()) {
Widget w = childIterator.next();
- // alert("Update relative size for " + getSimpleName(w));
client.handleComponentRelativeSize(w);
}
- // alert("abc");
HashSet<Widget> widgets = new HashSet<Widget>();
- widgets.add((Widget) container);
+ widgets.add(widget);
Util.componentSizeUpdated(widgets);
}
ShortcutActionHandler shortcutHandler;
- private String width;
+ private String width = "";
private Element geckoCaptionMeter;
@Override
public void setWidth(String width) {
+ if (this.width.equals(width)) {
+ return;
+ }
+
this.width = width;
super.setWidth(width);
if (!rendering) {
runHacks(true);
+
+ if (height.equals("")) {
+ // Width change may affect height
+ Util.updateRelativeChildrenAndSendSizeUpdateEvent(client, this);
+ }
+
}
}
ITabsheet.this.iLayout();
(content).updateFromUIDL(contentUIDL, client);
+ /*
+ * The size of a cached, relative sized component must be updated to
+ * report correct size to updateOpenTabSize().
+ */
+ if (contentUIDL.getBooleanAttribute("cached")) {
+ client.handleComponentRelativeSize((Widget) content);
+ }
updateOpenTabSize();
ITabsheet.this.removeStyleDependentName("loading");
if (previousVisibleWidget != null) {
@Override
public void setWidth(String width) {
+ if ((this.width == null && width.equals(""))
+ || (this.width != null && this.width.equals(width))) {
+ return;
+ }
+
super.setWidth(width);
if (width.equals("")) {
width = null;
}
if (!rendering) {
+ if (isDynamicHeight()) {
+ Util.updateRelativeChildrenAndSendSizeUpdateEvent(client, tp,
+ this);
+ }
+
updateOpenTabSize();
iLayout();
// TODO Check if this is needed